2006-02-19 23:34:44

by Alessandro Zummo

[permalink] [raw]
Subject: [PATCH 00/11] RTC subsystem


Hello,

this is me again with this shining new
RTC subsystem :)

quick changelog:

- attribute groups
- mutexes
- fixed another bug in pcf8563 detection

Many thanks to all the people who contributed
with comments both privately and on this ml.

--

Best regards,

Alessandro Zummo,
Tower Technologies - Turin, Italy

http://www.towertech.it

--


2006-02-20 01:00:30

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 00/11] RTC subsystem

Alessandro Zummo <[email protected]> wrote:
>
>
> Hello,
>
> this is me again with this shining new
> RTC subsystem :)
>
> quick changelog:
>
> - attribute groups
> - mutexes
> - fixed another bug in pcf8563 detection
>
> Many thanks to all the people who contributed
> with comments both privately and on this ml.
>

This is nowhere near a sufficient explanation for such a patchset.

What does it all do, how does it do it and, importantly, _why_ does it do
it?

2006-02-20 01:11:04

by Alessandro Zummo

[permalink] [raw]
Subject: Re: [PATCH 00/11] RTC subsystem

On Sun, 19 Feb 2006 16:58:45 -0800
Andrew Morton <[email protected]> wrote:

> >
>
> This is nowhere near a sufficient explanation for such a patchset.
>
> What does it all do, how does it do it and, importantly, _why_ does it do
> it?

Sorry Andrew, it was meant as an update to my original email
with full description. I've reported here as it is still valid.


Hello,

this is a proposal for the implementation of a kernel-wide
RTC subsystem.

The current state of RTCs under linux is that each one
of the current drivers is actually self-contained and
has a lot of redundant functions [1].

The lack of a kernel-wide subsystem is particulary important
on embedded devices, where the RTC is usually implemented
on an I2C chip.

Of the current I2C RTC drivers, no-one actually interfaces
with the kernel [2]: the driver is actually useless
without further patches that are probably provided as part
of an external project.

When new driver are to be implemented [3], I've noticed
authors are often confused on how to do it, resulting
in drivers that will not work on different architectures
and that will probably never be merged in the kernel.

They also happen to use ioctls over (struct i2c_client *)->command,
which has recently been deprecated [4].

The architecture is quite simple. Each RTC device should
register to the RTC class, providing a set of pointers
to functions. The class will provide access to the RTC
to the whole kernel and userspace.

For this purpose, the class supports multiple interfaces,
like sysfs, proc and dev.

The user has complete control over which interfaces
gets added using the standard Kconfig mechanism.

proc and dev, due to their nature, will only expose
the first RTC that registers to the subsystem.

The RTC code is derived from the one of the ARM subsystem.

This patchset has been verify to properly work under Linux/ARM
on several NSLU2s (http://www.linux-nslu2.org) and applies
successfully on the 2.6.15-rc6 kernel . If this is the right
way to go, I will port the x86 rtc driver in order to get
broader testing.

I'd appreciate receiving feedback on this proposal.

Thanks in advance.

--

Best regards,

Alessandro Zummo,
Tower Technologies - Turin, Italy

http://www.towertech.it


[1]
http://lkml.org/lkml/2005/11/17/180

[2]
drivers/i2c/chips/m41t00.c
drivers/i2c/chips/rtc8564.c
drivers/i2c/chips/ds1337.c
drivers/i2c/chips/ds1374.c

[3]
http://lists.lm-sensors.org/pipermail/lm-sensors/2005-November/014428.html
http://lists.lm-sensors.org/pipermail/lm-sensors/2005-November/014386.html

[4]
http://lists.lm-sensors.org/pipermail/lm-sensors/2005-December/014688.html
http://lists.lm-sensors.org/pipermail/lm-sensors/2005-November/014369.html