[i2c] [PATCH] i2c: Deprecate legacy RTC drivers

David Brownell david-b at pacbell.net
Sun May 13 19:25:22 CEST 2007


> Regarding the ds1337 driver, it exports a public function,
> ds1337_do_command(), which is currently used by functions in
> arch/ppc/platforms/radstone_ppc7d.c. This code is used to provide
> implementations used by the ppc arch get_rtc_time() and set_rtc_time()
> platform hooks.

The RTC framework has CONFIG_RTC_HCTOSYS and CONFIG_RTC_HCTOSYS_DEVICE
which ought to suffice for everything except NTP integration.

By the way:  I notice that ppc7d_{get,set}_rtc_time() call that
hook while holding a spinlock ... not allowed, I'm surprised
such a bug has persisted for about two years now!  Maybe part
of the issue is lockdep not working yet on Powerpc/PPC?


> If the rtc subsystem now provides a better way to hook 
> up these functions, the radstone_ppc7d code could be changed to use it
> instead of ds1337_do_command(), thereby allowing the old ds1337 driver
> to be removed.

I think there was some noise afoot to switch all of PPC over
to the new RTC framework once the resume hooks were merged;
and that's achieved by 2.6.22-rc1 ... I figure that conversion
will need to happen one driver at a time.


> Perhaps the radstone_ppc7d platform code should use rtc_read_time() and
> rtc_set_time() instead? Is it possible for platform code to obtain the
> rtc's struct class_device which are needed by those calls?

More like:  the PPC7D stuff should stop using the ppc_md RTC hooks,
and just update its default config to use the RTC framework with
CONFIG_RTC_HCTOSYS.

In fact, since I've got patches to switch rtc-ds1307 over to a
new-style I2C driver, I'll send you a patch to test that on that
platform as soon as I re-verify those on the 2.6.22-rc1 kernel.

- Dave



More information about the i2c mailing list