Re: [PATCH] hwmon: (lm85) Drop generic detection

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

 



On Wed, Jun 11, 2014 at 06:35:56PM +0200, Jean Delvare wrote:
> Generic detection leads to too many false positives, so drop it. FWIW
> sensors-detect does not have such generic detection. If the user wants
> to force the driver to bind to a not yet supported chip, he/she can
> still do so using sysfs attribute new_device.
> 
> Signed-off-by: Jean Delvare <jdelvare@xxxxxxx>

Good idea. That was way too generic.

Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx>

Do you want to take it, or should I ? I have another fix pending, so it would
not make a difference for me.

Thanks,
Guenter

> ---
> Mike, I can credit you for reporting the issue if you want. That will
> put your name and e-mail address in the kernel development logs though,
> so up to you.
> 
>  drivers/hwmon/lm85.c |   33 ++++++++++-----------------------
>  1 file changed, 10 insertions(+), 23 deletions(-)
> 
> --- linux-3.15-rc7.orig/drivers/hwmon/lm85.c	2014-03-31 05:40:15.000000000 +0200
> +++ linux-3.15-rc7/drivers/hwmon/lm85.c	2014-06-11 15:45:35.967963827 +0200
> @@ -5,7 +5,7 @@
>   * Copyright (c) 2002, 2003  Philip Pokorny <ppokorny@xxxxxxxxxxxxxxxxxxxx>
>   * Copyright (c) 2003        Margit Schubert-While <margitsw@xxxxxxxxxxx>
>   * Copyright (c) 2004        Justin Thiessen <jthiessen@xxxxxxxxxxxxxxxxxxxx>
> - * Copyright (C) 2007--2009  Jean Delvare <jdelvare@xxxxxxx>
> + * Copyright (C) 2007--2014  Jean Delvare <jdelvare@xxxxxxx>
>   *
>   * Chip details at	      <http://www.national.com/ds/LM/LM85.pdf>
>   *
> @@ -39,7 +39,7 @@
>  static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
>  
>  enum chips {
> -	any_chip, lm85b, lm85c,
> +	lm85,
>  	adm1027, adt7463, adt7468,
>  	emc6d100, emc6d102, emc6d103, emc6d103s
>  };
> @@ -75,9 +75,6 @@ enum chips {
>  #define LM85_COMPANY_NATIONAL		0x01
>  #define LM85_COMPANY_ANALOG_DEV		0x41
>  #define LM85_COMPANY_SMSC		0x5c
> -#define LM85_VERSTEP_VMASK              0xf0
> -#define LM85_VERSTEP_GENERIC		0x60
> -#define LM85_VERSTEP_GENERIC2		0x70
>  #define LM85_VERSTEP_LM85C		0x60
>  #define LM85_VERSTEP_LM85B		0x62
>  #define LM85_VERSTEP_LM96000_1		0x68
> @@ -351,9 +348,9 @@ static const struct i2c_device_id lm85_i
>  	{ "adm1027", adm1027 },
>  	{ "adt7463", adt7463 },
>  	{ "adt7468", adt7468 },
> -	{ "lm85", any_chip },
> -	{ "lm85b", lm85b },
> -	{ "lm85c", lm85c },
> +	{ "lm85", lm85 },
> +	{ "lm85b", lm85 },
> +	{ "lm85c", lm85 },
>  	{ "emc6d100", emc6d100 },
>  	{ "emc6d101", emc6d100 },
>  	{ "emc6d102", emc6d102 },
> @@ -1281,7 +1278,7 @@ static int lm85_detect(struct i2c_client
>  {
>  	struct i2c_adapter *adapter = client->adapter;
>  	int address = client->addr;
> -	const char *type_name;
> +	const char *type_name = NULL;
>  	int company, verstep;
>  
>  	if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
> @@ -1297,16 +1294,6 @@ static int lm85_detect(struct i2c_client
>  		"Detecting device at 0x%02x with COMPANY: 0x%02x and VERSTEP: 0x%02x\n",
>  		address, company, verstep);
>  
> -	/* All supported chips have the version in common */
> -	if ((verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC &&
> -	    (verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC2) {
> -		dev_dbg(&adapter->dev,
> -			"Autodetection failed: unsupported version\n");
> -		return -ENODEV;
> -	}
> -	type_name = "lm85";
> -
> -	/* Now, refine the detection */
>  	if (company == LM85_COMPANY_NATIONAL) {
>  		switch (verstep) {
>  		case LM85_VERSTEP_LM85C:
> @@ -1323,6 +1310,7 @@ static int lm85_detect(struct i2c_client
>  					"Found Winbond WPCD377I, ignoring\n");
>  				return -ENODEV;
>  			}
> +			type_name = "lm85";
>  			break;
>  		}
>  	} else if (company == LM85_COMPANY_ANALOG_DEV) {
> @@ -1357,12 +1345,11 @@ static int lm85_detect(struct i2c_client
>  			type_name = "emc6d103s";
>  			break;
>  		}
> -	} else {
> -		dev_dbg(&adapter->dev,
> -			"Autodetection failed: unknown vendor\n");
> -		return -ENODEV;
>  	}
>  
> +	if (!type_name)
> +		return -ENODEV;
> +
>  	strlcpy(info->type, type_name, I2C_NAME_SIZE);
>  
>  	return 0;
> 
> 
> -- 
> Jean Delvare
> SUSE L3 Support
> 
> _______________________________________________
> lm-sensors mailing list
> lm-sensors@xxxxxxxxxxxxxx
> http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
> 

_______________________________________________
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