[PATCH v2 3/3] hwmon: (occ) Check for device property for setting OCC active during probe

Eddie James posted 3 patches 3 years, 8 months ago
[PATCH v2 3/3] hwmon: (occ) Check for device property for setting OCC active during probe
Posted by Eddie James 3 years, 8 months ago
A previous commit changed the existing behavior of the driver to skip
attempting to communicate with the OCC during probe. Return to the
previous default behavior of automatically communicating with the OCC
and make it optional with a new device-tree property.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
---
 drivers/hwmon/occ/common.c | 11 ++++++++++-
 drivers/hwmon/occ/p9_sbe.c |  9 +++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c
index 45407b12db4b..dd690f700d49 100644
--- a/drivers/hwmon/occ/common.c
+++ b/drivers/hwmon/occ/common.c
@@ -10,6 +10,7 @@
 #include <linux/math64.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
+#include <linux/property.h>
 #include <linux/sysfs.h>
 #include <asm/unaligned.h>
 
@@ -1216,8 +1217,16 @@ int occ_setup(struct occ *occ)
 	occ->groups[0] = &occ->group;
 
 	rc = occ_setup_sysfs(occ);
-	if (rc)
+	if (rc) {
 		dev_err(occ->bus_dev, "failed to setup sysfs: %d\n", rc);
+		return rc;
+	}
+
+	if (!device_property_read_bool(occ->bus_dev, "ibm,no-poll-on-init")) {
+		rc = occ_active(occ, true);
+		if (rc)
+			occ_shutdown_sysfs(occ);
+	}
 
 	return rc;
 }
diff --git a/drivers/hwmon/occ/p9_sbe.c b/drivers/hwmon/occ/p9_sbe.c
index 4a1fe4ee8e2c..3adcf8d0b4a6 100644
--- a/drivers/hwmon/occ/p9_sbe.c
+++ b/drivers/hwmon/occ/p9_sbe.c
@@ -7,6 +7,7 @@
 #include <linux/fsi-occ.h>
 #include <linux/mm.h>
 #include <linux/module.h>
+#include <linux/mod_devicetable.h>
 #include <linux/mutex.h>
 #include <linux/platform_device.h>
 #include <linux/string.h>
@@ -179,9 +180,17 @@ static int p9_sbe_occ_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static const struct of_device_id p9_sbe_occ_of_match[] = {
+	{ .compatible = "ibm,p9-occ-hwmon" },
+	{ .compatible = "ibm,p10-occ-hwmon" },
+	{}
+};
+MODULE_DEVICE_TABLE(of, p9_sbe_occ_of_match);
+
 static struct platform_driver p9_sbe_occ_driver = {
 	.driver = {
 		.name = "occ-hwmon",
+		.of_match_table = p9_sbe_occ_of_match,
 	},
 	.probe	= p9_sbe_occ_probe,
 	.remove = p9_sbe_occ_remove,
-- 
2.31.1
Re: [PATCH v2 3/3] hwmon: (occ) Check for device property for setting OCC active during probe
Posted by Guenter Roeck 3 years, 6 months ago
On Tue, Aug 09, 2022 at 03:07:01PM -0500, Eddie James wrote:
> A previous commit changed the existing behavior of the driver to skip
> attempting to communicate with the OCC during probe. Return to the
> previous default behavior of automatically communicating with the OCC
> and make it optional with a new device-tree property.
> 
> Signed-off-by: Eddie James <eajames@linux.ibm.com>

Assuming this patch is applied as part of the series outside
the hwmon subsystem.

Acked-by: Guenter Roeck <linux@roeck-us.net>

Guenter

> ---
>  drivers/hwmon/occ/common.c | 11 ++++++++++-
>  drivers/hwmon/occ/p9_sbe.c |  9 +++++++++
>  2 files changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c
> index 45407b12db4b..dd690f700d49 100644
> --- a/drivers/hwmon/occ/common.c
> +++ b/drivers/hwmon/occ/common.c
> @@ -10,6 +10,7 @@
>  #include <linux/math64.h>
>  #include <linux/module.h>
>  #include <linux/mutex.h>
> +#include <linux/property.h>
>  #include <linux/sysfs.h>
>  #include <asm/unaligned.h>
>  
> @@ -1216,8 +1217,16 @@ int occ_setup(struct occ *occ)
>  	occ->groups[0] = &occ->group;
>  
>  	rc = occ_setup_sysfs(occ);
> -	if (rc)
> +	if (rc) {
>  		dev_err(occ->bus_dev, "failed to setup sysfs: %d\n", rc);
> +		return rc;
> +	}
> +
> +	if (!device_property_read_bool(occ->bus_dev, "ibm,no-poll-on-init")) {
> +		rc = occ_active(occ, true);
> +		if (rc)
> +			occ_shutdown_sysfs(occ);
> +	}
>  
>  	return rc;
>  }
> diff --git a/drivers/hwmon/occ/p9_sbe.c b/drivers/hwmon/occ/p9_sbe.c
> index 4a1fe4ee8e2c..3adcf8d0b4a6 100644
> --- a/drivers/hwmon/occ/p9_sbe.c
> +++ b/drivers/hwmon/occ/p9_sbe.c
> @@ -7,6 +7,7 @@
>  #include <linux/fsi-occ.h>
>  #include <linux/mm.h>
>  #include <linux/module.h>
> +#include <linux/mod_devicetable.h>
>  #include <linux/mutex.h>
>  #include <linux/platform_device.h>
>  #include <linux/string.h>
> @@ -179,9 +180,17 @@ static int p9_sbe_occ_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> +static const struct of_device_id p9_sbe_occ_of_match[] = {
> +	{ .compatible = "ibm,p9-occ-hwmon" },
> +	{ .compatible = "ibm,p10-occ-hwmon" },
> +	{}
> +};
> +MODULE_DEVICE_TABLE(of, p9_sbe_occ_of_match);
> +
>  static struct platform_driver p9_sbe_occ_driver = {
>  	.driver = {
>  		.name = "occ-hwmon",
> +		.of_match_table = p9_sbe_occ_of_match,
>  	},
>  	.probe	= p9_sbe_occ_probe,
>  	.remove = p9_sbe_occ_remove,
Re: [PATCH v2 3/3] hwmon: (occ) Check for device property for setting OCC active during probe
Posted by Joel Stanley 3 years, 6 months ago
On Sun, 25 Sept 2022 at 18:06, Guenter Roeck <linux@roeck-us.net> wrote:
>
> On Tue, Aug 09, 2022 at 03:07:01PM -0500, Eddie James wrote:
> > A previous commit changed the existing behavior of the driver to skip
> > attempting to communicate with the OCC during probe. Return to the
> > previous default behavior of automatically communicating with the OCC
> > and make it optional with a new device-tree property.
> >
> > Signed-off-by: Eddie James <eajames@linux.ibm.com>
>
> Assuming this patch is applied as part of the series outside
> the hwmon subsystem.
>
> Acked-by: Guenter Roeck <linux@roeck-us.net>

Thanks Guenter. I have applied it to the FSI tree.


>
> Guenter
>
> > ---
> >  drivers/hwmon/occ/common.c | 11 ++++++++++-
> >  drivers/hwmon/occ/p9_sbe.c |  9 +++++++++
> >  2 files changed, 19 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c
> > index 45407b12db4b..dd690f700d49 100644
> > --- a/drivers/hwmon/occ/common.c
> > +++ b/drivers/hwmon/occ/common.c
> > @@ -10,6 +10,7 @@
> >  #include <linux/math64.h>
> >  #include <linux/module.h>
> >  #include <linux/mutex.h>
> > +#include <linux/property.h>
> >  #include <linux/sysfs.h>
> >  #include <asm/unaligned.h>
> >
> > @@ -1216,8 +1217,16 @@ int occ_setup(struct occ *occ)
> >       occ->groups[0] = &occ->group;
> >
> >       rc = occ_setup_sysfs(occ);
> > -     if (rc)
> > +     if (rc) {
> >               dev_err(occ->bus_dev, "failed to setup sysfs: %d\n", rc);
> > +             return rc;
> > +     }
> > +
> > +     if (!device_property_read_bool(occ->bus_dev, "ibm,no-poll-on-init")) {
> > +             rc = occ_active(occ, true);
> > +             if (rc)
> > +                     occ_shutdown_sysfs(occ);
> > +     }
> >
> >       return rc;
> >  }
> > diff --git a/drivers/hwmon/occ/p9_sbe.c b/drivers/hwmon/occ/p9_sbe.c
> > index 4a1fe4ee8e2c..3adcf8d0b4a6 100644
> > --- a/drivers/hwmon/occ/p9_sbe.c
> > +++ b/drivers/hwmon/occ/p9_sbe.c
> > @@ -7,6 +7,7 @@
> >  #include <linux/fsi-occ.h>
> >  #include <linux/mm.h>
> >  #include <linux/module.h>
> > +#include <linux/mod_devicetable.h>
> >  #include <linux/mutex.h>
> >  #include <linux/platform_device.h>
> >  #include <linux/string.h>
> > @@ -179,9 +180,17 @@ static int p9_sbe_occ_remove(struct platform_device *pdev)
> >       return 0;
> >  }
> >
> > +static const struct of_device_id p9_sbe_occ_of_match[] = {
> > +     { .compatible = "ibm,p9-occ-hwmon" },
> > +     { .compatible = "ibm,p10-occ-hwmon" },
> > +     {}
> > +};
> > +MODULE_DEVICE_TABLE(of, p9_sbe_occ_of_match);
> > +
> >  static struct platform_driver p9_sbe_occ_driver = {
> >       .driver = {
> >               .name = "occ-hwmon",
> > +             .of_match_table = p9_sbe_occ_of_match,
> >       },
> >       .probe  = p9_sbe_occ_probe,
> >       .remove = p9_sbe_occ_remove,