Message ID | 1497935293-31618-2-git-send-email-shilpa.bhat@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On 06/20/2017 07:08 AM, Shilpasri G Bhat wrote: > From: Cédric Le Goater <clg@kaod.org> > > Today, the type of a PowerNV sensor system is determined with the > "compatible" property for legacy Firmwares and with the "sensor-type" > for newer ones. The same array of strings is used for both to do the > matching and this raises some issue to introduce new sensor types. > > Let's introduce two different arrays (legacy and current) to make > things easier for new sensor types. > > Signed-off-by: Cédric Le Goater <clg@kaod.org> > Tested-by: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com> Did you test on a Tuleta (IBM Power) system ? Thanks, C. > --- > drivers/hwmon/ibmpowernv.c | 26 ++++++++++++++++++-------- > 1 file changed, 18 insertions(+), 8 deletions(-) > > diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c > index 862b832..6d8909c 100644 > --- a/drivers/hwmon/ibmpowernv.c > +++ b/drivers/hwmon/ibmpowernv.c > @@ -55,17 +55,27 @@ enum sensors { > > #define INVALID_INDEX (-1U) > > +/* > + * 'compatible' string properties for sensor types as defined in old > + * PowerNV firmware (skiboot). These are ordered as 'enum sensors'. > + */ > +static const char * const legacy_compatibles[] = { > + "ibm,opal-sensor-cooling-fan", > + "ibm,opal-sensor-amb-temp", > + "ibm,opal-sensor-power-supply", > + "ibm,opal-sensor-power" > +}; > + > static struct sensor_group { > - const char *name; > - const char *compatible; > + const char *name; /* matches property 'sensor-type' */ > struct attribute_group group; > u32 attr_count; > u32 hwmon_index; > } sensor_groups[] = { > - {"fan", "ibm,opal-sensor-cooling-fan"}, > - {"temp", "ibm,opal-sensor-amb-temp"}, > - {"in", "ibm,opal-sensor-power-supply"}, > - {"power", "ibm,opal-sensor-power"} > + { "fan" }, > + { "temp" }, > + { "in" }, > + { "power" } > }; > > struct sensor_data { > @@ -239,8 +249,8 @@ static int get_sensor_type(struct device_node *np) > enum sensors type; > const char *str; > > - for (type = 0; type < MAX_SENSOR_TYPE; type++) { > - if (of_device_is_compatible(np, sensor_groups[type].compatible)) > + for (type = 0; type < ARRAY_SIZE(legacy_compatibles); type++) { > + if (of_device_is_compatible(np, legacy_compatibles[type])) > return type; > } > > -- To unsubscribe from this list: send the line "unsubscribe linux-hwmon" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/20/2017 11:36 AM, Cédric Le Goater wrote: > On 06/20/2017 07:08 AM, Shilpasri G Bhat wrote: >> From: Cédric Le Goater <clg@kaod.org> >> >> Today, the type of a PowerNV sensor system is determined with the >> "compatible" property for legacy Firmwares and with the "sensor-type" >> for newer ones. The same array of strings is used for both to do the >> matching and this raises some issue to introduce new sensor types. >> >> Let's introduce two different arrays (legacy and current) to make >> things easier for new sensor types. >> >> Signed-off-by: Cédric Le Goater <clg@kaod.org> >> Tested-by: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com> > > Did you test on a Tuleta (IBM Power) system ? I have tested this patch on P9 FSP and Firestone. > > Thanks, > > C. > >> --- >> drivers/hwmon/ibmpowernv.c | 26 ++++++++++++++++++-------- >> 1 file changed, 18 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c >> index 862b832..6d8909c 100644 >> --- a/drivers/hwmon/ibmpowernv.c >> +++ b/drivers/hwmon/ibmpowernv.c >> @@ -55,17 +55,27 @@ enum sensors { >> >> #define INVALID_INDEX (-1U) >> >> +/* >> + * 'compatible' string properties for sensor types as defined in old >> + * PowerNV firmware (skiboot). These are ordered as 'enum sensors'. >> + */ >> +static const char * const legacy_compatibles[] = { >> + "ibm,opal-sensor-cooling-fan", >> + "ibm,opal-sensor-amb-temp", >> + "ibm,opal-sensor-power-supply", >> + "ibm,opal-sensor-power" >> +}; >> + >> static struct sensor_group { >> - const char *name; >> - const char *compatible; >> + const char *name; /* matches property 'sensor-type' */ >> struct attribute_group group; >> u32 attr_count; >> u32 hwmon_index; >> } sensor_groups[] = { >> - {"fan", "ibm,opal-sensor-cooling-fan"}, >> - {"temp", "ibm,opal-sensor-amb-temp"}, >> - {"in", "ibm,opal-sensor-power-supply"}, >> - {"power", "ibm,opal-sensor-power"} >> + { "fan" }, >> + { "temp" }, >> + { "in" }, >> + { "power" } >> }; >> >> struct sensor_data { >> @@ -239,8 +249,8 @@ static int get_sensor_type(struct device_node *np) >> enum sensors type; >> const char *str; >> >> - for (type = 0; type < MAX_SENSOR_TYPE; type++) { >> - if (of_device_is_compatible(np, sensor_groups[type].compatible)) >> + for (type = 0; type < ARRAY_SIZE(legacy_compatibles); type++) { >> + if (of_device_is_compatible(np, legacy_compatibles[type])) >> return type; >> } >> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-hwmon" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/20/2017 09:15 AM, Shilpasri G Bhat wrote: > > > On 06/20/2017 11:36 AM, Cédric Le Goater wrote: >> On 06/20/2017 07:08 AM, Shilpasri G Bhat wrote: >>> From: Cédric Le Goater <clg@kaod.org> >>> >>> Today, the type of a PowerNV sensor system is determined with the >>> "compatible" property for legacy Firmwares and with the "sensor-type" >>> for newer ones. The same array of strings is used for both to do the >>> matching and this raises some issue to introduce new sensor types. >>> >>> Let's introduce two different arrays (legacy and current) to make >>> things easier for new sensor types. >>> >>> Signed-off-by: Cédric Le Goater <clg@kaod.org> >>> Tested-by: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com> >> >> Did you test on a Tuleta (IBM Power) system ? > > I have tested this patch on P9 FSP and Firestone. OK. I just gave it a try on a Tuleta, P8 FSP, IBM Power system Looks good. Thanks, C. > >> >> Thanks, >> >> C. >> >>> --- >>> drivers/hwmon/ibmpowernv.c | 26 ++++++++++++++++++-------- >>> 1 file changed, 18 insertions(+), 8 deletions(-) >>> >>> diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c >>> index 862b832..6d8909c 100644 >>> --- a/drivers/hwmon/ibmpowernv.c >>> +++ b/drivers/hwmon/ibmpowernv.c >>> @@ -55,17 +55,27 @@ enum sensors { >>> >>> #define INVALID_INDEX (-1U) >>> >>> +/* >>> + * 'compatible' string properties for sensor types as defined in old >>> + * PowerNV firmware (skiboot). These are ordered as 'enum sensors'. >>> + */ >>> +static const char * const legacy_compatibles[] = { >>> + "ibm,opal-sensor-cooling-fan", >>> + "ibm,opal-sensor-amb-temp", >>> + "ibm,opal-sensor-power-supply", >>> + "ibm,opal-sensor-power" >>> +}; >>> + >>> static struct sensor_group { >>> - const char *name; >>> - const char *compatible; >>> + const char *name; /* matches property 'sensor-type' */ >>> struct attribute_group group; >>> u32 attr_count; >>> u32 hwmon_index; >>> } sensor_groups[] = { >>> - {"fan", "ibm,opal-sensor-cooling-fan"}, >>> - {"temp", "ibm,opal-sensor-amb-temp"}, >>> - {"in", "ibm,opal-sensor-power-supply"}, >>> - {"power", "ibm,opal-sensor-power"} >>> + { "fan" }, >>> + { "temp" }, >>> + { "in" }, >>> + { "power" } >>> }; >>> >>> struct sensor_data { >>> @@ -239,8 +249,8 @@ static int get_sensor_type(struct device_node *np) >>> enum sensors type; >>> const char *str; >>> >>> - for (type = 0; type < MAX_SENSOR_TYPE; type++) { >>> - if (of_device_is_compatible(np, sensor_groups[type].compatible)) >>> + for (type = 0; type < ARRAY_SIZE(legacy_compatibles); type++) { >>> + if (of_device_is_compatible(np, legacy_compatibles[type])) >>> return type; >>> } >>> >>> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-hwmon" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/hwmon/ibmpowernv.c b/drivers/hwmon/ibmpowernv.c index 862b832..6d8909c 100644 --- a/drivers/hwmon/ibmpowernv.c +++ b/drivers/hwmon/ibmpowernv.c @@ -55,17 +55,27 @@ enum sensors { #define INVALID_INDEX (-1U) +/* + * 'compatible' string properties for sensor types as defined in old + * PowerNV firmware (skiboot). These are ordered as 'enum sensors'. + */ +static const char * const legacy_compatibles[] = { + "ibm,opal-sensor-cooling-fan", + "ibm,opal-sensor-amb-temp", + "ibm,opal-sensor-power-supply", + "ibm,opal-sensor-power" +}; + static struct sensor_group { - const char *name; - const char *compatible; + const char *name; /* matches property 'sensor-type' */ struct attribute_group group; u32 attr_count; u32 hwmon_index; } sensor_groups[] = { - {"fan", "ibm,opal-sensor-cooling-fan"}, - {"temp", "ibm,opal-sensor-amb-temp"}, - {"in", "ibm,opal-sensor-power-supply"}, - {"power", "ibm,opal-sensor-power"} + { "fan" }, + { "temp" }, + { "in" }, + { "power" } }; struct sensor_data { @@ -239,8 +249,8 @@ static int get_sensor_type(struct device_node *np) enum sensors type; const char *str; - for (type = 0; type < MAX_SENSOR_TYPE; type++) { - if (of_device_is_compatible(np, sensor_groups[type].compatible)) + for (type = 0; type < ARRAY_SIZE(legacy_compatibles); type++) { + if (of_device_is_compatible(np, legacy_compatibles[type])) return type; }