Message ID | 20211227094526.698714-1-u.kleine-koenig@pengutronix.de (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
On 12/27/21 10:45 AM, Uwe Kleine-König wrote: > [...] > > - I wonder why counter is a bus and not a class device type. There is > no driver that would ever bind a counter device, is there? So > /sys/bus/counter/driver is always empty. > There used to be a time when GKH said that we do not want new driver classes. And all new subsystems should use bus since bus is a superset of class. This restriction has been eased since then. But it was around when the IIO subsystem was merged and since the counter subsystem originated from the IIO subsystem I assume it just copied this.
On Mon, 27 Dec 2021 13:25:25 +0100 Lars-Peter Clausen <lars@metafoo.de> wrote: > On 12/27/21 10:45 AM, Uwe Kleine-König wrote: > > [...] > > > > - I wonder why counter is a bus and not a class device type. There is > > no driver that would ever bind a counter device, is there? So > > /sys/bus/counter/driver is always empty. > > > There used to be a time when GKH said that we do not want new driver > classes. And all new subsystems should use bus since bus is a superset > of class. This restriction has been eased since then. > > But it was around when the IIO subsystem was merged and since the > counter subsystem originated from the IIO subsystem I assume it just > copied this. > Yup. Discussion about this back then with one view being there should never have been class in the first place. https://lore.kernel.org/lkml/4B571DA4.6070603@cam.ac.uk/ For anyone who loves the history of these things... FWIW I think Greg suggested IIO should be a bus because we were hanging a bunch of different types of device off a class and it was getting messy. Kay then gave some history on class vs bus and suggested no new subsystem should use class. Ah well, opinions change over time! Also interesting to see we were discussing a bridge to input all that time ago and it's still not gone beyond various prototypes (with exception of touch screens). Jonathan
On Tue, Dec 28, 2021 at 05:35:58PM +0000, Jonathan Cameron wrote: > On Mon, 27 Dec 2021 13:25:25 +0100 > Lars-Peter Clausen <lars@metafoo.de> wrote: > > > On 12/27/21 10:45 AM, Uwe Kleine-König wrote: > > > [...] > > > > > > - I wonder why counter is a bus and not a class device type. There is > > > no driver that would ever bind a counter device, is there? So > > > /sys/bus/counter/driver is always empty. > > > > > There used to be a time when GKH said that we do not want new driver > > classes. And all new subsystems should use bus since bus is a superset > > of class. This restriction has been eased since then. > > > > But it was around when the IIO subsystem was merged and since the > > counter subsystem originated from the IIO subsystem I assume it just > > copied this. > > > > Yup. Discussion about this back then with one view being there > should never have been class in the first place. > > https://lore.kernel.org/lkml/4B571DA4.6070603@cam.ac.uk/ > > For anyone who loves the history of these things... > > FWIW I think Greg suggested IIO should be a bus because we were hanging > a bunch of different types of device off a class and it was getting messy. > Kay then gave some history on class vs bus and suggested no new > subsystem should use class. > > Ah well, opinions change over time! > > Also interesting to see we were discussing a bridge to input all that > time ago and it's still not gone beyond various prototypes (with > exception of touch screens). > > Jonathan Yes this is the reason: Counter subsystem just followed the structure of the IIO subsystem originally which is how it ended up as a bus; changing it to a class now would break userspace expectations so that is why it remains a bus still. William Breathitt Gray
diff --git a/drivers/counter/counter-core.c b/drivers/counter/counter-core.c index cdc6004a7e77..3f7dc5718423 100644 --- a/drivers/counter/counter-core.c +++ b/drivers/counter/counter-core.c @@ -27,7 +27,7 @@ static DEFINE_IDA(counter_ida); struct counter_device_allochelper { struct counter_device counter; - unsigned long privdata[0]; + unsigned long privdata[]; }; static void counter_device_release(struct device *dev)