[POWERPC] Add powerpc get/set_rtc_time interface to new generic rtc class
Add powerpc get/set_rtc_time interface to new generic rtc class. This abstracts rtc chip specific code from the platform code for rtc-over-i2c platforms. Specific RTC chip support is now configured under Device Drivers -> Real Time Clock. Setting time of day from the RTC on startup is also configurable. this time without the potentially platform breaking initcall. Signed-off-by: Kim Phillips <kim.phillips@freescale.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
2bf118197c
commit
7a69af63e7
@ -1048,6 +1048,48 @@ void __init time_init(void)
|
|||||||
set_dec(tb_ticks_per_jiffy);
|
set_dec(tb_ticks_per_jiffy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_RTC_CLASS
|
||||||
|
static int set_rtc_class_time(struct rtc_time *tm)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
struct class_device *class_dev =
|
||||||
|
rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);
|
||||||
|
|
||||||
|
if (class_dev == NULL)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
err = rtc_set_time(class_dev, tm);
|
||||||
|
|
||||||
|
rtc_class_close(class_dev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void get_rtc_class_time(struct rtc_time *tm)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
struct class_device *class_dev =
|
||||||
|
rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);
|
||||||
|
|
||||||
|
if (class_dev == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
err = rtc_read_time(class_dev, tm);
|
||||||
|
|
||||||
|
rtc_class_close(class_dev);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int __init rtc_class_hookup(void)
|
||||||
|
{
|
||||||
|
ppc_md.get_rtc_time = get_rtc_class_time;
|
||||||
|
ppc_md.set_rtc_time = set_rtc_class_time;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_RTC_CLASS */
|
||||||
|
|
||||||
|
|
||||||
#define FEBRUARY 2
|
#define FEBRUARY 2
|
||||||
#define STARTOFTIME 1970
|
#define STARTOFTIME 1970
|
||||||
|
@ -39,6 +39,10 @@ extern void generic_calibrate_decr(void);
|
|||||||
extern void wakeup_decrementer(void);
|
extern void wakeup_decrementer(void);
|
||||||
extern void snapshot_timebase(void);
|
extern void snapshot_timebase(void);
|
||||||
|
|
||||||
|
#ifdef CONFIG_RTC_CLASS
|
||||||
|
extern int __init rtc_class_hookup(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Some sane defaults: 125 MHz timebase, 1GHz processor */
|
/* Some sane defaults: 125 MHz timebase, 1GHz processor */
|
||||||
extern unsigned long ppc_proc_freq;
|
extern unsigned long ppc_proc_freq;
|
||||||
#define DEFAULT_PROC_FREQ (DEFAULT_TB_FREQ * 8)
|
#define DEFAULT_PROC_FREQ (DEFAULT_TB_FREQ * 8)
|
||||||
@ -234,4 +238,4 @@ extern void snapshot_timebases(void);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
#endif /* __PPC64_TIME_H */
|
#endif /* __POWERPC_TIME_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user