diff options
Diffstat (limited to 'drivers/i2c/chips/eeprom.c')
-rw-r--r-- | drivers/i2c/chips/eeprom.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/drivers/i2c/chips/eeprom.c b/drivers/i2c/chips/eeprom.c index a2da31b0dd7b..d58403a47908 100644 --- a/drivers/i2c/chips/eeprom.c +++ b/drivers/i2c/chips/eeprom.c | |||
@@ -33,15 +33,13 @@ | |||
33 | #include <linux/sched.h> | 33 | #include <linux/sched.h> |
34 | #include <linux/jiffies.h> | 34 | #include <linux/jiffies.h> |
35 | #include <linux/i2c.h> | 35 | #include <linux/i2c.h> |
36 | #include <linux/i2c-sensor.h> | ||
37 | 36 | ||
38 | /* Addresses to scan */ | 37 | /* Addresses to scan */ |
39 | static unsigned short normal_i2c[] = { 0x50, 0x51, 0x52, 0x53, 0x54, | 38 | static unsigned short normal_i2c[] = { 0x50, 0x51, 0x52, 0x53, 0x54, |
40 | 0x55, 0x56, 0x57, I2C_CLIENT_END }; | 39 | 0x55, 0x56, 0x57, I2C_CLIENT_END }; |
41 | static unsigned int normal_isa[] = { I2C_CLIENT_ISA_END }; | ||
42 | 40 | ||
43 | /* Insmod parameters */ | 41 | /* Insmod parameters */ |
44 | SENSORS_INSMOD_1(eeprom); | 42 | I2C_CLIENT_INSMOD_1(eeprom); |
45 | 43 | ||
46 | 44 | ||
47 | /* Size of EEPROM in bytes */ | 45 | /* Size of EEPROM in bytes */ |
@@ -153,21 +151,16 @@ static struct bin_attribute eeprom_attr = { | |||
153 | 151 | ||
154 | static int eeprom_attach_adapter(struct i2c_adapter *adapter) | 152 | static int eeprom_attach_adapter(struct i2c_adapter *adapter) |
155 | { | 153 | { |
156 | return i2c_detect(adapter, &addr_data, eeprom_detect); | 154 | return i2c_probe(adapter, &addr_data, eeprom_detect); |
157 | } | 155 | } |
158 | 156 | ||
159 | /* This function is called by i2c_detect */ | 157 | /* This function is called by i2c_probe */ |
160 | int eeprom_detect(struct i2c_adapter *adapter, int address, int kind) | 158 | int eeprom_detect(struct i2c_adapter *adapter, int address, int kind) |
161 | { | 159 | { |
162 | struct i2c_client *new_client; | 160 | struct i2c_client *new_client; |
163 | struct eeprom_data *data; | 161 | struct eeprom_data *data; |
164 | int err = 0; | 162 | int err = 0; |
165 | 163 | ||
166 | /* prevent 24RF08 corruption */ | ||
167 | if (kind < 0) | ||
168 | i2c_smbus_xfer(adapter, address, 0, 0, 0, | ||
169 | I2C_SMBUS_QUICK, NULL); | ||
170 | |||
171 | /* There are three ways we can read the EEPROM data: | 164 | /* There are three ways we can read the EEPROM data: |
172 | (1) I2C block reads (faster, but unsupported by most adapters) | 165 | (1) I2C block reads (faster, but unsupported by most adapters) |
173 | (2) Consecutive byte reads (100% overhead) | 166 | (2) Consecutive byte reads (100% overhead) |
@@ -231,10 +224,8 @@ static int eeprom_detach_client(struct i2c_client *client) | |||
231 | int err; | 224 | int err; |
232 | 225 | ||
233 | err = i2c_detach_client(client); | 226 | err = i2c_detach_client(client); |
234 | if (err) { | 227 | if (err) |
235 | dev_err(&client->dev, "Client deregistration failed, client not detached.\n"); | ||
236 | return err; | 228 | return err; |
237 | } | ||
238 | 229 | ||
239 | kfree(i2c_get_clientdata(client)); | 230 | kfree(i2c_get_clientdata(client)); |
240 | 231 | ||