hwmon: (nct7802) hwmon: (nct7802) Add device tree support
PATCH v2 1/1 hwmon: (nct7802) hwmon: (nct7802) Add device tree support
Introduced properties sensorX-type with string values "disabled", "thermal diode", "thermistor" and "voltage".
Signed-off-by Constantine Shulyupin <[email protected]>
---
Changed in v2:
- removed tempX_type
- introduced nuvoton,sensorX-type with string values
Changed in v1:
- Introduced tempX_type with numerical values
--- drivers/hwmon/nct7802.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-)
drivers/hwmon/nct7802.c +40 -3
@@ -1077,9 +1077,11 @@ static const struct regmap_config nct7802_regmap_config = { .volatile_reg = nct7802_regmap_is_volatile, }; -static int nct7802_init_chip (struct nct7802_data *data) +static int nct7802_init_chip (struct device_node *node, +struct nct7802_data *data) {int err; +int i;/* Enable ADC */ err =regmap_update_bits (data->regmap,REG_START ,0x01 ,0x01 );
@@ -1092,7 +1094,34 @@ static int nct7802_init_chip(struct nct7802_data *data)return err;/* Enable Vcore and VCC voltage monitoring */ -return regmap_update_bits (data->regmap,REG_VMON_ENABLE ,0x03 ,0x03 ); + err =regmap_update_bits (data->regmap,REG_VMON_ENABLE ,0x03 ,0x03 ); +if (err) +return err; + +for (i =0 ; i <3 ; i++) { +char propname[30 ]; +const char *val; +int senor_type; + +snprintf (propname,sizeof (propname),"nuvoton,sensor%d-type" , + i +1 ); + err =of_property_read_string (node, propname, &val); +if (err <0 ) +break ; +if (!strcmp (val,"disabled" )) + senor_type =0 ; +else if (!strcmp (val,"thermal diode" )) + senor_type =1 ; +else if (!strcmp (val,"thermistor" )) + senor_type =2 ; +else if (!strcmp (val,"voltage" )) + senor_type =3 ; +else +return -EINVAL ; + err =regmap_update_bits (data->regmap,REG_MODE , +3 <<2 * i, senor_type <<2 * i); + } +return 0 ; } static int nct7802_probe(struct i2c_client *client,
@@ -1113,7 +1142,7 @@ static int nct7802_probe(struct i2c_client *client,mutex_init (&data->access_lock); - ret =nct7802_init_chip (data); + ret =nct7802_init_chip (client->dev.of_node, data);if (ret <0 )return ret;
@@ -1133,10 +1162,18 @@ static const struct i2c_device_id nct7802_idtable[] = { };MODULE_DEVICE_TABLE (i2c, nct7802_idtable); +#ifdef CONFIG_OF +static const struct of_device_id nct7802_dt_match[] = { + { .compatible ="nuvoton,nct7802" }, + { }, +}; +#endif +static struct i2c_driver nct7802_driver = { .class =I2C_CLASS_HWMON , .driver = { .name =DRVNAME , + .of_match_table =of_match_ptr (nct7802_dt_match), }, .detect = nct7802_detect, .probe = nct7802_probe,
Signature · 1 line
1.9.1