Re: [RFC PATCH v2 6/6] driver core: add compatible string in sysfs for platform devices

Saravana Kannan
2022-08-17T16:05:53Z

On Wed, Aug 17, 2022 at 8:31 AM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Wed, Aug 17, 2022 at 08:35:42PM +0530, Nipun Gupta wrote:
> > This change adds compatible string for the platform based
> > devices.
>
> What exactly is a "compatible string"?

Didn't read the rest of the patches in the series yet, but Nack to
this. This info is already available under:

<device folder>/of_node/compatible for any device in any (or at least
most) bus that was created from an of_node.

Unless compatible is now also in ACPI. In which case, it's probably be
better to have an of_node like symlink.

-Saravana

>
> >
> > Signed-off-by: Nipun Gupta <nipun.gupta@amd.com>
> > ---
> > Documentation/ABI/testing/sysfs-bus-platform | 8 +++++++
> > drivers/base/platform.c | 23 ++++++++++++++++++++
> > 2 files changed, 31 insertions(+)
> >
> > diff --git a/Documentation/ABI/testing/sysfs-bus-platform b/Documentation/ABI/testing/sysfs-bus-platform
> > index c4dfe7355c2d..d95ff83d768c 100644
> > --- a/Documentation/ABI/testing/sysfs-bus-platform
> > +++ b/Documentation/ABI/testing/sysfs-bus-platform
> > @@ -54,3 +54,11 @@ Description:
> > Other platform devices use, instead:
> >
> > - platform:`driver name`
> > +
> > +What: /sys/bus/platform/devices/.../compatible
> > +Date: August 2022
> > +Contact: Nipun Gupta <nipun.gupta@amd.com>
> > +Description:
> > + compatible string associated with the device. This is
> > + a read only and is visible if the device have "compatible"
> > + property associated with it.
>
> Where is it defined what a compatible property is?
>
> > diff --git a/drivers/base/platform.c b/drivers/base/platform.c
> > index 51bb2289865c..94c33efaa9b8 100644
> > --- a/drivers/base/platform.c
> > +++ b/drivers/base/platform.c
> > @@ -1289,10 +1289,25 @@ static ssize_t driver_override_store(struct device *dev,
> > }
> > static DEVICE_ATTR_RW(driver_override);
> >
> > +static ssize_t compatible_show(struct device *dev, struct device_attribute *attr,
> > + char *buf)
> > +{
> > + const char *compat;
> > + int ret;
> > +
> > + ret = device_property_read_string(dev, "compatible", &compat);
> > + if (ret != 0)
> > + return 0;
>
> Shouldn't you return an error here?
>
> thanks,
>
> greg k-h