Re: [PATCH v5 3/9] hwmon: (tmp421) support disabling channels from DT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 14, 2021 at 03:01:09PM +0200, Krzysztof Adamski wrote:
> The previous patch introduced per channel subnodes in DT that let us
> specify some channel specific properties. This built a ground for easily
> disabling individual channels of the sensor that may not be connected to
> any external diode and thus are not returning any meaningful data.
> 
> This patch adds support for parsing the "status" property of channels DT
> subnodes and makes sure the -ENODATA is returned when disabled channels
> value is read.
> 
> Signed-off-by: Krzysztof Adamski <krzysztof.adamski@xxxxxxxxx>

Same problem as with patch 2/9. Any idea what happened ?

Anyway, applied after fixing it up.

Guenter

> ---
>  drivers/hwmon/tmp421.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c
> index 89346ca6c9a9..af08bc985a13 100644
> --- a/drivers/hwmon/tmp421.c
> +++ b/drivers/hwmon/tmp421.c
> @@ -89,6 +89,7 @@ MODULE_DEVICE_TABLE(of, tmp421_of_match);
>  
>  struct tmp421_channel {
>  	const char *label;
> +	bool enabled;
>  	s16 temp;
>  };
>  
> @@ -170,6 +171,9 @@ static int tmp421_read(struct device *dev, enum hwmon_sensor_types type,
>  	if (ret)
>  		return ret;
>  
> +	if (!tmp421->channel[channel].enabled)
> +		return -ENODATA;
> +
>  	switch (attr) {
>  	case hwmon_temp_input:
>  		*val = temp_from_raw(tmp421->channel[channel].temp,
> @@ -323,6 +327,8 @@ static int tmp421_probe_child_from_dt(struct i2c_client *client,
>  	if (data->channel[i].label)
>  		data->temp_config[i] |= HWMON_T_LABEL;
>  
> +	data->channel[i].enabled = of_device_is_available(child);
> +
>  	return 0;
>  }
>  
> @@ -371,8 +377,10 @@ static int tmp421_probe(struct i2c_client *client)
>  	if (err)
>  		return err;
>  
> -	for (i = 0; i < data->channels; i++)
> +	for (i = 0; i < data->channels; i++) {
>  		data->temp_config[i] = HWMON_T_INPUT | HWMON_T_FAULT;
> +		data->channel[i].enabled = true;
> +	}
>  
>  	err = tmp421_probe_from_dt(client, data);
>  	if (err)



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux