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; |
