Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a69af63 authored by Kim Phillips's avatar Kim Phillips Committed by Paul Mackerras
Browse files

[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: default avatarKim Phillips <kim.phillips@freescale.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 2bf11819
Loading
Loading
Loading
Loading
+42 −0
Original line number Original line Diff line number Diff line
@@ -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
+5 −1
Original line number Original line Diff line number Diff line
@@ -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 */