Re: [PATCH 4/4] hwmon: (pmbus/zl6100) Only instantiate external temperature sensor if enabled

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

 



 
> -----Original Message-----
> From: Guenter Roeck 
> Sent: Wednesday, November 23, 2011 11:31 AM
> To: Jean Delvare
> Cc: Robert Coulson; lm-sensors@xxxxxxxxxxxxxx; Guenter Roeck
> Subject: [PATCH 4/4] hwmon: (pmbus/zl6100) Only instantiate 
> external temperature sensor if enabled
> 
> BMR4xx devices don't have an external temperature sensor, and 
> instantiating it does not provide value anyway if it is disabled.
> Only instantiate it if it is enabled.
> 
> Also optimize wait time between I2C chip accesses in the 
> probe function, and replace unnecessary check for support for 
> I2C_FUNC_SMBUS_READ_BYTE_DATA with now required support for 
> I2C_FUNC_SMBUS_READ_WORD_DATA.
> 
> Signed-off-by: Guenter Roeck <guenter.roeck@xxxxxxxxxxxx>

Reviewed-by: Robert Coulson <robert.coulson@xxxxxxxxxxxx>

> ---
>  drivers/hwmon/pmbus/zl6100.c |   19 ++++++++++++++-----
>  1 files changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/hwmon/pmbus/zl6100.c 
> b/drivers/hwmon/pmbus/zl6100.c index 7a72b6e..48c7b4a 100644
> --- a/drivers/hwmon/pmbus/zl6100.c
> +++ b/drivers/hwmon/pmbus/zl6100.c
> @@ -38,8 +38,11 @@ struct zl6100_data {
>  
>  #define to_zl6100_data(x)  container_of(x, struct zl6100_data, info)
>  
> +#define ZL6100_MFR_CONFIG		0xd0
>  #define ZL6100_DEVICE_ID		0xe4
>  
> +#define ZL6100_MFR_XTEMP_ENABLE		(1 << 7)
> +
>  #define ZL6100_WAIT_TIME		1000	/* uS	*/
>  
>  static ushort delay = ZL6100_WAIT_TIME; @@ -162,7 +165,7 @@ 
> static int zl6100_probe(struct i2c_client *client,
>  	const struct i2c_device_id *mid;
>  
>  	if (!i2c_check_functionality(client->adapter,
> -				     I2C_FUNC_SMBUS_READ_BYTE_DATA
> +				     I2C_FUNC_SMBUS_READ_WORD_DATA
>  				     | I2C_FUNC_SMBUS_READ_BLOCK_DATA))
>  		return -ENODEV;
>  
> @@ -210,12 +213,9 @@ static int zl6100_probe(struct 
> i2c_client *client,
>  	/*
>  	 * Since there was a direct I2C device access above, wait before
>  	 * accessing the chip again.
> -	 * Set the timestamp, wait, then set it again. This 
> should provide
> -	 * enough buffer time to be safe.
>  	 */
>  	data->access = ktime_get();
>  	zl6100_wait(data);
> -	data->access = ktime_get();
>  
>  	info = &data->info;
>  
> @@ -223,7 +223,16 @@ static int zl6100_probe(struct 
> i2c_client *client,
>  	info->func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT
>  	  | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
>  	  | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
> -	  | PMBUS_HAVE_TEMP | PMBUS_HAVE_TEMP2 | PMBUS_HAVE_STATUS_TEMP;
> +	  | PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP;
> +
> +	ret = i2c_smbus_read_word_data(client, ZL6100_MFR_CONFIG);
> +	if (ret < 0)
> +		goto err_mem;
> +	if (ret & ZL6100_MFR_XTEMP_ENABLE)
> +		info->func[0] |= PMBUS_HAVE_TEMP2;
> +
> +	data->access = ktime_get();
> +	zl6100_wait(data);
>  
>  	info->read_word_data = zl6100_read_word_data;
>  	info->read_byte_data = zl6100_read_byte_data;
> --
> 1.7.3.1
> 
> 
_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors


[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux