Skip to content

Commit

Permalink
ds2482: Discard obsolete detect method
Browse files Browse the repository at this point in the history
There is no point in implementing a detect callback for the DS2482, as
this device can't be detected. It was there solely to handle "force"
module parameters to instantiate devices, but now we have a better sysfs
interface that can do the same.

So we can get rid of the ugly module parameters and the detect callback.
This shrinks the binary module size by 21%.

Signed-off-by: Jean Delvare <[email protected]>
Acked-by: Ben Gardner <[email protected]>
  • Loading branch information
Jean Delvare committed Oct 4, 2009
1 parent b835d7f commit 0314b02
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 33 deletions.
6 changes: 3 additions & 3 deletions Documentation/w1/masters/ds2482
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ General Remarks

Valid addresses are 0x18, 0x19, 0x1a, and 0x1b.
However, the device cannot be detected without writing to the i2c bus, so no
detection is done.
You should force the device address.
detection is done. You should instantiate the device explicitly.

$ modprobe ds2482 force=0,0x18
$ modprobe ds2482
$ echo ds2482 0x18 > /sys/bus/i2c/devices/i2c-0/new_device

35 changes: 5 additions & 30 deletions drivers/w1/masters/ds2482.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,6 @@
#include "../w1.h"
#include "../w1_int.h"

/**
* Address is selected using 2 pins, resulting in 4 possible addresses.
* 0x18, 0x19, 0x1a, 0x1b
* However, the chip cannot be detected without doing an i2c write,
* so use the force module parameter.
*/
static const unsigned short normal_i2c[] = { I2C_CLIENT_END };

/**
* Insmod parameters
*/
I2C_CLIENT_INSMOD_1(ds2482);

/**
* The DS2482 registers - there are 3 registers that are addressed by a read
* pointer. The read pointer is set by the last command executed.
Expand Down Expand Up @@ -96,8 +83,6 @@ static const u8 ds2482_chan_rd[8] =

static int ds2482_probe(struct i2c_client *client,
const struct i2c_device_id *id);
static int ds2482_detect(struct i2c_client *client, int kind,
struct i2c_board_info *info);
static int ds2482_remove(struct i2c_client *client);


Expand All @@ -117,8 +102,6 @@ static struct i2c_driver ds2482_driver = {
.probe = ds2482_probe,
.remove = ds2482_remove,
.id_table = ds2482_id,
.detect = ds2482_detect,
.address_data = &addr_data,
};

/*
Expand Down Expand Up @@ -425,19 +408,6 @@ static u8 ds2482_w1_reset_bus(void *data)
}


static int ds2482_detect(struct i2c_client *client, int kind,
struct i2c_board_info *info)
{
if (!i2c_check_functionality(client->adapter,
I2C_FUNC_SMBUS_WRITE_BYTE_DATA |
I2C_FUNC_SMBUS_BYTE))
return -ENODEV;

strlcpy(info->type, "ds2482", I2C_NAME_SIZE);

return 0;
}

static int ds2482_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
Expand All @@ -446,6 +416,11 @@ static int ds2482_probe(struct i2c_client *client,
int temp1;
int idx;

if (!i2c_check_functionality(client->adapter,
I2C_FUNC_SMBUS_WRITE_BYTE_DATA |
I2C_FUNC_SMBUS_BYTE))
return -ENODEV;

if (!(data = kzalloc(sizeof(struct ds2482_data), GFP_KERNEL))) {
err = -ENOMEM;
goto exit;
Expand Down

0 comments on commit 0314b02

Please sign in to comment.