diff options
author | Jean Delvare <khali@linux-fr.org> | 2007-09-08 08:09:19 -0400 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-10-16 17:59:57 -0400 |
commit | 745647e7a2ae399f7f70aca47827e62c99c893b5 (patch) | |
tree | 7e92190d03ba5ce43baee0c9de1fb34dd7182d7c | |
parent | 69e2b602966533256edce1ed1b24fec23fe05962 (diff) |
ieee1394: pcilynx: I2C cleanups
* Delete optional and empty i2c client_register and client_unregister
callbacks.
* Use the proper i2c adapter ID.
* Don't use a template to initialize the i2c_adapter structure, it's
inefficient.
* Update a misleading comment on why we use i2c_transfer rather than
higher level i2c functions.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
-rw-r--r-- | drivers/ieee1394/pcilynx.c | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/drivers/ieee1394/pcilynx.c b/drivers/ieee1394/pcilynx.c index 7762e43ad5ce..8af01ab30cc9 100644 --- a/drivers/ieee1394/pcilynx.c +++ b/drivers/ieee1394/pcilynx.c | |||
@@ -121,16 +121,6 @@ static int bit_getsda(void *data) | |||
121 | return reg_read((struct ti_lynx *) data, SERIAL_EEPROM_CONTROL) & 0x00000010; | 121 | return reg_read((struct ti_lynx *) data, SERIAL_EEPROM_CONTROL) & 0x00000010; |
122 | } | 122 | } |
123 | 123 | ||
124 | static int bit_reg(struct i2c_client *client) | ||
125 | { | ||
126 | return 0; | ||
127 | } | ||
128 | |||
129 | static int bit_unreg(struct i2c_client *client) | ||
130 | { | ||
131 | return 0; | ||
132 | } | ||
133 | |||
134 | static struct i2c_algo_bit_data bit_data = { | 124 | static struct i2c_algo_bit_data bit_data = { |
135 | .setsda = bit_setsda, | 125 | .setsda = bit_setsda, |
136 | .setscl = bit_setscl, | 126 | .setscl = bit_setscl, |
@@ -140,14 +130,6 @@ static struct i2c_algo_bit_data bit_data = { | |||
140 | .timeout = 100, | 130 | .timeout = 100, |
141 | }; | 131 | }; |
142 | 132 | ||
143 | static struct i2c_adapter bit_ops = { | ||
144 | .id = 0xAA, //FIXME: probably we should get an id in i2c-id.h | ||
145 | .client_register = bit_reg, | ||
146 | .client_unregister = bit_unreg, | ||
147 | .name = "PCILynx I2C", | ||
148 | }; | ||
149 | |||
150 | |||
151 | 133 | ||
152 | /* | 134 | /* |
153 | * PCL handling functions. | 135 | * PCL handling functions. |
@@ -1435,9 +1417,11 @@ static int __devinit add_card(struct pci_dev *dev, | |||
1435 | struct i2c_algo_bit_data i2c_adapter_data; | 1417 | struct i2c_algo_bit_data i2c_adapter_data; |
1436 | 1418 | ||
1437 | error = -ENOMEM; | 1419 | error = -ENOMEM; |
1438 | i2c_ad = kmemdup(&bit_ops, sizeof(*i2c_ad), GFP_KERNEL); | 1420 | i2c_ad = kzalloc(sizeof(*i2c_ad), GFP_KERNEL); |
1439 | if (!i2c_ad) FAIL("failed to allocate I2C adapter memory"); | 1421 | if (!i2c_ad) FAIL("failed to allocate I2C adapter memory"); |
1440 | 1422 | ||
1423 | i2c_ad->id = I2C_HW_B_PCILYNX; | ||
1424 | strlcpy(i2c_ad->name, "PCILynx I2C", sizeof(i2c_ad->name)); | ||
1441 | i2c_adapter_data = bit_data; | 1425 | i2c_adapter_data = bit_data; |
1442 | i2c_ad->algo_data = &i2c_adapter_data; | 1426 | i2c_ad->algo_data = &i2c_adapter_data; |
1443 | i2c_adapter_data.data = lynx; | 1427 | i2c_adapter_data.data = lynx; |
@@ -1464,8 +1448,8 @@ static int __devinit add_card(struct pci_dev *dev, | |||
1464 | { 0x50, I2C_M_RD, 20, (unsigned char*) lynx->bus_info_block } | 1448 | { 0x50, I2C_M_RD, 20, (unsigned char*) lynx->bus_info_block } |
1465 | }; | 1449 | }; |
1466 | 1450 | ||
1467 | /* we use i2c_transfer, because i2c_smbus_read_block_data does not work properly and we | 1451 | /* we use i2c_transfer because we have no i2c_client |
1468 | do it more efficiently in one transaction rather then using several reads */ | 1452 | at hand */ |
1469 | if (i2c_transfer(i2c_ad, msg, 2) < 0) { | 1453 | if (i2c_transfer(i2c_ad, msg, 2) < 0) { |
1470 | PRINT(KERN_ERR, lynx->id, "unable to read bus info block from i2c"); | 1454 | PRINT(KERN_ERR, lynx->id, "unable to read bus info block from i2c"); |
1471 | } else { | 1455 | } else { |