mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
hwmon: (max6650) Drop device detection
MAX6650 device detection is unreliable, we got reports of false positives. We now have many ways to let users instantiate the devices explicitly, so unreliable detection should be dropped. Signed-off-by: Jean Delvare <[email protected]> Acked-by: "Hans J. Koch" <[email protected]> Acked-by: Guenter Roeck <[email protected]>
This commit is contained in:
parent
7d03336538
commit
67b670ff04
2 changed files with 8 additions and 45 deletions
|
|
@ -40,13 +40,6 @@
|
|||
#include <linux/hwmon-sysfs.h>
|
||||
#include <linux/err.h>
|
||||
|
||||
/*
|
||||
* Addresses to scan. There are four disjoint possibilities, by pin config.
|
||||
*/
|
||||
|
||||
static const unsigned short normal_i2c[] = {0x1b, 0x1f, 0x48, 0x4b,
|
||||
I2C_CLIENT_END};
|
||||
|
||||
/*
|
||||
* Insmod parameters
|
||||
*/
|
||||
|
|
@ -114,8 +107,6 @@ module_param(clock, int, S_IRUGO);
|
|||
|
||||
static int max6650_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id);
|
||||
static int max6650_detect(struct i2c_client *client,
|
||||
struct i2c_board_info *info);
|
||||
static int max6650_init_client(struct i2c_client *client);
|
||||
static int max6650_remove(struct i2c_client *client);
|
||||
static struct max6650_data *max6650_update_device(struct device *dev);
|
||||
|
|
@ -131,15 +122,12 @@ static const struct i2c_device_id max6650_id[] = {
|
|||
MODULE_DEVICE_TABLE(i2c, max6650_id);
|
||||
|
||||
static struct i2c_driver max6650_driver = {
|
||||
.class = I2C_CLASS_HWMON,
|
||||
.driver = {
|
||||
.name = "max6650",
|
||||
},
|
||||
.probe = max6650_probe,
|
||||
.remove = max6650_remove,
|
||||
.id_table = max6650_id,
|
||||
.detect = max6650_detect,
|
||||
.address_list = normal_i2c,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -525,38 +513,6 @@ static struct attribute_group max6650_attr_grp = {
|
|||
* Real code
|
||||
*/
|
||||
|
||||
/* Return 0 if detection is successful, -ENODEV otherwise */
|
||||
static int max6650_detect(struct i2c_client *client,
|
||||
struct i2c_board_info *info)
|
||||
{
|
||||
struct i2c_adapter *adapter = client->adapter;
|
||||
int address = client->addr;
|
||||
|
||||
dev_dbg(&adapter->dev, "max6650_detect called\n");
|
||||
|
||||
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
|
||||
dev_dbg(&adapter->dev, "max6650: I2C bus doesn't support "
|
||||
"byte read mode, skipping.\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (((i2c_smbus_read_byte_data(client, MAX6650_REG_CONFIG) & 0xC0)
|
||||
||(i2c_smbus_read_byte_data(client, MAX6650_REG_GPIO_STAT) & 0xE0)
|
||||
||(i2c_smbus_read_byte_data(client, MAX6650_REG_ALARM_EN) & 0xE0)
|
||||
||(i2c_smbus_read_byte_data(client, MAX6650_REG_ALARM) & 0xE0)
|
||||
||(i2c_smbus_read_byte_data(client, MAX6650_REG_COUNT) & 0xFC))) {
|
||||
dev_dbg(&adapter->dev,
|
||||
"max6650: detection failed at 0x%02x.\n", address);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
dev_info(&adapter->dev, "max6650: chip found at 0x%02x.\n", address);
|
||||
|
||||
strlcpy(info->type, "max6650", I2C_NAME_SIZE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int max6650_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue