Drivers should not really include stuff from asm-generic directly, and the PC-style cmos rtc driver does this in order to reuse the mc146818 implementation of get_rtc_time/set_rtc_time rather than the architecture specific one for the architecture it gets built for. To make it more obvious what is going on, this moves and renames the two functions into include/linux/mc146818rtc.h, which holds the other mc146818 specific code. Ideally it would be in a .c file, but that would require extra infrastructure as the functions are called by multiple drivers with conflicting dependencies. With this change, the asm-generic/rtc.h header also becomes much more generic, so it can be reused more easily across any architecture that still relies on the genrtc driver. The only caller of the internal __get_rtc_time/__set_rtc_time functions is in arch/alpha/kernel/rtc.c, and we just change those over to the new naming. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
/*
|
|
* include/asm-generic/rtc.h
|
|
*
|
|
* Author: Tom Rini <trini@mvista.com>
|
|
*
|
|
* Based on:
|
|
* drivers/char/rtc.c
|
|
*
|
|
* Please read the COPYING file for all license details.
|
|
*/
|
|
|
|
#ifndef __ASM_RTC_H__
|
|
#define __ASM_RTC_H__
|
|
|
|
#include <linux/rtc.h>
|
|
|
|
#ifndef get_rtc_time
|
|
#include <linux/mc146818rtc.h>
|
|
#define get_rtc_time mc146818_get_time
|
|
#define set_rtc_time mc146818_set_time
|
|
#endif
|
|
|
|
#define RTC_PIE 0x40 /* periodic interrupt enable */
|
|
#define RTC_AIE 0x20 /* alarm interrupt enable */
|
|
#define RTC_UIE 0x10 /* update-finished interrupt enable */
|
|
|
|
/* some dummy definitions */
|
|
#define RTC_BATT_BAD 0x100 /* battery bad */
|
|
#define RTC_SQWE 0x08 /* enable square-wave output */
|
|
#define RTC_DM_BINARY 0x04 /* all time/date values are BCD if clear */
|
|
#define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */
|
|
#define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */
|
|
|
|
static inline unsigned int get_rtc_ss(void)
|
|
{
|
|
struct rtc_time h;
|
|
|
|
get_rtc_time(&h);
|
|
return h.tm_sec;
|
|
}
|
|
|
|
static inline int get_rtc_pll(struct rtc_pll_info *pll)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
static inline int set_rtc_pll(struct rtc_pll_info *pll)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
|
|
#endif /* __ASM_RTC_H__ */
|