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@xxxxxxxx> >> >> 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@xxxxxxxx> >> Tested-by: Shilpasri G Bhat <shilpa.bhat@xxxxxxxxxxxxxxxxxx> > > 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html