diff options
-rw-r--r-- | Documentation/w1/masters/ds2482 | 6 | ||||
-rw-r--r-- | drivers/w1/masters/ds2482.c | 35 |
2 files changed, 8 insertions, 33 deletions
diff --git a/Documentation/w1/masters/ds2482 b/Documentation/w1/masters/ds2482 index 9210d6fa5024..299b91c7609f 100644 --- a/Documentation/w1/masters/ds2482 +++ b/Documentation/w1/masters/ds2482 | |||
@@ -24,8 +24,8 @@ General Remarks | |||
24 | 24 | ||
25 | Valid addresses are 0x18, 0x19, 0x1a, and 0x1b. | 25 | Valid addresses are 0x18, 0x19, 0x1a, and 0x1b. |
26 | However, the device cannot be detected without writing to the i2c bus, so no | 26 | However, the device cannot be detected without writing to the i2c bus, so no |
27 | detection is done. | 27 | detection is done. You should instantiate the device explicitly. |
28 | You should force the device address. | ||
29 | 28 | ||
30 | $ modprobe ds2482 force=0,0x18 | 29 | $ modprobe ds2482 |
30 | $ echo ds2482 0x18 > /sys/bus/i2c/devices/i2c-0/new_device | ||
31 | 31 | ||
diff --git a/drivers/w1/masters/ds2482.c b/drivers/w1/masters/ds2482.c index df52cb355f7d..406caa6a71cb 100644 --- a/drivers/w1/masters/ds2482.c +++ b/drivers/w1/masters/ds2482.c | |||
@@ -24,19 +24,6 @@ | |||
24 | #include "../w1_int.h" | 24 | #include "../w1_int.h" |
25 | 25 | ||
26 | /** | 26 | /** |
27 | * Address is selected using 2 pins, resulting in 4 possible addresses. | ||
28 | * 0x18, 0x19, 0x1a, 0x1b | ||
29 | * However, the chip cannot be detected without doing an i2c write, | ||
30 | * so use the force module parameter. | ||
31 | */ | ||
32 | static const unsigned short normal_i2c[] = { I2C_CLIENT_END }; | ||
33 | |||
34 | /** | ||
35 | * Insmod parameters | ||
36 | */ | ||
37 | I2C_CLIENT_INSMOD_1(ds2482); | ||
38 | |||
39 | /** | ||
40 | * The DS2482 registers - there are 3 registers that are addressed by a read | 27 | * The DS2482 registers - there are 3 registers that are addressed by a read |
41 | * pointer. The read pointer is set by the last command executed. | 28 | * pointer. The read pointer is set by the last command executed. |
42 | * | 29 | * |
@@ -96,8 +83,6 @@ static const u8 ds2482_chan_rd[8] = | |||
96 | 83 | ||
97 | static int ds2482_probe(struct i2c_client *client, | 84 | static int ds2482_probe(struct i2c_client *client, |
98 | const struct i2c_device_id *id); | 85 | const struct i2c_device_id *id); |
99 | static int ds2482_detect(struct i2c_client *client, int kind, | ||
100 | struct i2c_board_info *info); | ||
101 | static int ds2482_remove(struct i2c_client *client); | 86 | static int ds2482_remove(struct i2c_client *client); |
102 | 87 | ||
103 | 88 | ||
@@ -117,8 +102,6 @@ static struct i2c_driver ds2482_driver = { | |||
117 | .probe = ds2482_probe, | 102 | .probe = ds2482_probe, |
118 | .remove = ds2482_remove, | 103 | .remove = ds2482_remove, |
119 | .id_table = ds2482_id, | 104 | .id_table = ds2482_id, |
120 | .detect = ds2482_detect, | ||
121 | .address_data = &addr_data, | ||
122 | }; | 105 | }; |
123 | 106 | ||
124 | /* | 107 | /* |
@@ -425,19 +408,6 @@ static u8 ds2482_w1_reset_bus(void *data) | |||
425 | } | 408 | } |
426 | 409 | ||
427 | 410 | ||
428 | static int ds2482_detect(struct i2c_client *client, int kind, | ||
429 | struct i2c_board_info *info) | ||
430 | { | ||
431 | if (!i2c_check_functionality(client->adapter, | ||
432 | I2C_FUNC_SMBUS_WRITE_BYTE_DATA | | ||
433 | I2C_FUNC_SMBUS_BYTE)) | ||
434 | return -ENODEV; | ||
435 | |||
436 | strlcpy(info->type, "ds2482", I2C_NAME_SIZE); | ||
437 | |||
438 | return 0; | ||
439 | } | ||
440 | |||
441 | static int ds2482_probe(struct i2c_client *client, | 411 | static int ds2482_probe(struct i2c_client *client, |
442 | const struct i2c_device_id *id) | 412 | const struct i2c_device_id *id) |
443 | { | 413 | { |
@@ -446,6 +416,11 @@ static int ds2482_probe(struct i2c_client *client, | |||
446 | int temp1; | 416 | int temp1; |
447 | int idx; | 417 | int idx; |
448 | 418 | ||
419 | if (!i2c_check_functionality(client->adapter, | ||
420 | I2C_FUNC_SMBUS_WRITE_BYTE_DATA | | ||
421 | I2C_FUNC_SMBUS_BYTE)) | ||
422 | return -ENODEV; | ||
423 | |||
449 | if (!(data = kzalloc(sizeof(struct ds2482_data), GFP_KERNEL))) { | 424 | if (!(data = kzalloc(sizeof(struct ds2482_data), GFP_KERNEL))) { |
450 | err = -ENOMEM; | 425 | err = -ENOMEM; |
451 | goto exit; | 426 | goto exit; |