diff options
Diffstat (limited to 'drivers/i2c/i2c-core.c')
-rw-r--r-- | drivers/i2c/i2c-core.c | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 79eaa12474dd..64f11e00651c 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -127,7 +127,7 @@ static ssize_t show_client_name(struct device *dev, struct device_attribute *att | |||
127 | return sprintf(buf, "%s\n", client->name); | 127 | return sprintf(buf, "%s\n", client->name); |
128 | } | 128 | } |
129 | 129 | ||
130 | /* | 130 | /* |
131 | * We can't use the DEVICE_ATTR() macro here as we want the same filename for a | 131 | * We can't use the DEVICE_ATTR() macro here as we want the same filename for a |
132 | * different type of a device. So beware if the DEVICE_ATTR() macro ever | 132 | * different type of a device. So beware if the DEVICE_ATTR() macro ever |
133 | * changes, this definition will also have to change. | 133 | * changes, this definition will also have to change. |
@@ -139,8 +139,8 @@ static struct device_attribute dev_attr_client_name = { | |||
139 | 139 | ||
140 | 140 | ||
141 | /* --------------------------------------------------- | 141 | /* --------------------------------------------------- |
142 | * registering functions | 142 | * registering functions |
143 | * --------------------------------------------------- | 143 | * --------------------------------------------------- |
144 | */ | 144 | */ |
145 | 145 | ||
146 | /* ----- | 146 | /* ----- |
@@ -314,7 +314,7 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver) | |||
314 | res = driver_register(&driver->driver); | 314 | res = driver_register(&driver->driver); |
315 | if (res) | 315 | if (res) |
316 | return res; | 316 | return res; |
317 | 317 | ||
318 | mutex_lock(&core_lists); | 318 | mutex_lock(&core_lists); |
319 | 319 | ||
320 | list_add_tail(&driver->list,&drivers); | 320 | list_add_tail(&driver->list,&drivers); |
@@ -338,13 +338,13 @@ int i2c_del_driver(struct i2c_driver *driver) | |||
338 | struct list_head *item1, *item2, *_n; | 338 | struct list_head *item1, *item2, *_n; |
339 | struct i2c_client *client; | 339 | struct i2c_client *client; |
340 | struct i2c_adapter *adap; | 340 | struct i2c_adapter *adap; |
341 | 341 | ||
342 | int res = 0; | 342 | int res = 0; |
343 | 343 | ||
344 | mutex_lock(&core_lists); | 344 | mutex_lock(&core_lists); |
345 | 345 | ||
346 | /* Have a look at each adapter, if clients of this driver are still | 346 | /* Have a look at each adapter, if clients of this driver are still |
347 | * attached. If so, detach them to be able to kill the driver | 347 | * attached. If so, detach them to be able to kill the driver |
348 | * afterwards. | 348 | * afterwards. |
349 | */ | 349 | */ |
350 | list_for_each(item1,&adapters) { | 350 | list_for_each(item1,&adapters) { |
@@ -419,14 +419,14 @@ int i2c_attach_client(struct i2c_client *client) | |||
419 | goto out_unlock; | 419 | goto out_unlock; |
420 | } | 420 | } |
421 | list_add_tail(&client->list,&adapter->clients); | 421 | list_add_tail(&client->list,&adapter->clients); |
422 | 422 | ||
423 | client->usage_count = 0; | 423 | client->usage_count = 0; |
424 | 424 | ||
425 | client->dev.parent = &client->adapter->dev; | 425 | client->dev.parent = &client->adapter->dev; |
426 | client->dev.driver = &client->driver->driver; | 426 | client->dev.driver = &client->driver->driver; |
427 | client->dev.bus = &i2c_bus_type; | 427 | client->dev.bus = &i2c_bus_type; |
428 | client->dev.release = &i2c_client_release; | 428 | client->dev.release = &i2c_client_release; |
429 | 429 | ||
430 | snprintf(&client->dev.bus_id[0], sizeof(client->dev.bus_id), | 430 | snprintf(&client->dev.bus_id[0], sizeof(client->dev.bus_id), |
431 | "%d-%04x", i2c_adapter_id(adapter), client->addr); | 431 | "%d-%04x", i2c_adapter_id(adapter), client->addr); |
432 | dev_dbg(&adapter->dev, "client [%s] registered with bus id %s\n", | 432 | dev_dbg(&adapter->dev, "client [%s] registered with bus id %s\n", |
@@ -467,7 +467,7 @@ int i2c_detach_client(struct i2c_client *client) | |||
467 | { | 467 | { |
468 | struct i2c_adapter *adapter = client->adapter; | 468 | struct i2c_adapter *adapter = client->adapter; |
469 | int res = 0; | 469 | int res = 0; |
470 | 470 | ||
471 | if (client->usage_count > 0) { | 471 | if (client->usage_count > 0) { |
472 | dev_warn(&client->dev, "Client [%s] still busy, " | 472 | dev_warn(&client->dev, "Client [%s] still busy, " |
473 | "can't detach\n", client->name); | 473 | "can't detach\n", client->name); |
@@ -535,10 +535,10 @@ int i2c_release_client(struct i2c_client *client) | |||
535 | __FUNCTION__); | 535 | __FUNCTION__); |
536 | return -EPERM; | 536 | return -EPERM; |
537 | } | 537 | } |
538 | 538 | ||
539 | client->usage_count--; | 539 | client->usage_count--; |
540 | i2c_dec_use_client(client); | 540 | i2c_dec_use_client(client); |
541 | 541 | ||
542 | return 0; | 542 | return 0; |
543 | } | 543 | } |
544 | 544 | ||
@@ -624,7 +624,7 @@ int i2c_master_send(struct i2c_client *client,const char *buf ,int count) | |||
624 | msg.flags = client->flags & I2C_M_TEN; | 624 | msg.flags = client->flags & I2C_M_TEN; |
625 | msg.len = count; | 625 | msg.len = count; |
626 | msg.buf = (char *)buf; | 626 | msg.buf = (char *)buf; |
627 | 627 | ||
628 | ret = i2c_transfer(adap, &msg, 1); | 628 | ret = i2c_transfer(adap, &msg, 1); |
629 | 629 | ||
630 | /* If everything went ok (i.e. 1 msg transmitted), return #bytes | 630 | /* If everything went ok (i.e. 1 msg transmitted), return #bytes |
@@ -757,7 +757,7 @@ int i2c_probe(struct i2c_adapter *adapter, | |||
757 | if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) { | 757 | if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) { |
758 | if (address_data->probe[0] == I2C_CLIENT_END | 758 | if (address_data->probe[0] == I2C_CLIENT_END |
759 | && address_data->normal_i2c[0] == I2C_CLIENT_END) | 759 | && address_data->normal_i2c[0] == I2C_CLIENT_END) |
760 | return 0; | 760 | return 0; |
761 | 761 | ||
762 | dev_warn(&adapter->dev, "SMBus Quick command not supported, " | 762 | dev_warn(&adapter->dev, "SMBus Quick command not supported, " |
763 | "can't probe for chips\n"); | 763 | "can't probe for chips\n"); |
@@ -817,7 +817,7 @@ int i2c_probe(struct i2c_adapter *adapter, | |||
817 | struct i2c_adapter* i2c_get_adapter(int id) | 817 | struct i2c_adapter* i2c_get_adapter(int id) |
818 | { | 818 | { |
819 | struct i2c_adapter *adapter; | 819 | struct i2c_adapter *adapter; |
820 | 820 | ||
821 | mutex_lock(&core_lists); | 821 | mutex_lock(&core_lists); |
822 | adapter = (struct i2c_adapter *)idr_find(&i2c_adapter_idr, id); | 822 | adapter = (struct i2c_adapter *)idr_find(&i2c_adapter_idr, id); |
823 | if (adapter && !try_module_get(adapter->owner)) | 823 | if (adapter && !try_module_get(adapter->owner)) |
@@ -834,14 +834,14 @@ void i2c_put_adapter(struct i2c_adapter *adap) | |||
834 | 834 | ||
835 | /* The SMBus parts */ | 835 | /* The SMBus parts */ |
836 | 836 | ||
837 | #define POLY (0x1070U << 3) | 837 | #define POLY (0x1070U << 3) |
838 | static u8 | 838 | static u8 |
839 | crc8(u16 data) | 839 | crc8(u16 data) |
840 | { | 840 | { |
841 | int i; | 841 | int i; |
842 | 842 | ||
843 | for(i = 0; i < 8; i++) { | 843 | for(i = 0; i < 8; i++) { |
844 | if (data & 0x8000) | 844 | if (data & 0x8000) |
845 | data = data ^ POLY; | 845 | data = data ^ POLY; |
846 | data = data << 1; | 846 | data = data << 1; |
847 | } | 847 | } |
@@ -891,13 +891,13 @@ static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg) | |||
891 | rpec, cpec); | 891 | rpec, cpec); |
892 | return -1; | 892 | return -1; |
893 | } | 893 | } |
894 | return 0; | 894 | return 0; |
895 | } | 895 | } |
896 | 896 | ||
897 | s32 i2c_smbus_write_quick(struct i2c_client *client, u8 value) | 897 | s32 i2c_smbus_write_quick(struct i2c_client *client, u8 value) |
898 | { | 898 | { |
899 | return i2c_smbus_xfer(client->adapter,client->addr,client->flags, | 899 | return i2c_smbus_xfer(client->adapter,client->addr,client->flags, |
900 | value,0,I2C_SMBUS_QUICK,NULL); | 900 | value,0,I2C_SMBUS_QUICK,NULL); |
901 | } | 901 | } |
902 | 902 | ||
903 | s32 i2c_smbus_read_byte(struct i2c_client *client) | 903 | s32 i2c_smbus_read_byte(struct i2c_client *client) |
@@ -996,11 +996,11 @@ s32 i2c_smbus_write_i2c_block_data(struct i2c_client *client, u8 command, | |||
996 | I2C_SMBUS_I2C_BLOCK_DATA, &data); | 996 | I2C_SMBUS_I2C_BLOCK_DATA, &data); |
997 | } | 997 | } |
998 | 998 | ||
999 | /* Simulate a SMBus command using the i2c protocol | 999 | /* Simulate a SMBus command using the i2c protocol |
1000 | No checking of parameters is done! */ | 1000 | No checking of parameters is done! */ |
1001 | static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, | 1001 | static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, |
1002 | unsigned short flags, | 1002 | unsigned short flags, |
1003 | char read_write, u8 command, int size, | 1003 | char read_write, u8 command, int size, |
1004 | union i2c_smbus_data * data) | 1004 | union i2c_smbus_data * data) |
1005 | { | 1005 | { |
1006 | /* So we need to generate a series of msgs. In the case of writing, we | 1006 | /* So we need to generate a series of msgs. In the case of writing, we |
@@ -1010,7 +1010,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, | |||
1010 | unsigned char msgbuf0[I2C_SMBUS_BLOCK_MAX+3]; | 1010 | unsigned char msgbuf0[I2C_SMBUS_BLOCK_MAX+3]; |
1011 | unsigned char msgbuf1[I2C_SMBUS_BLOCK_MAX+2]; | 1011 | unsigned char msgbuf1[I2C_SMBUS_BLOCK_MAX+2]; |
1012 | int num = read_write == I2C_SMBUS_READ?2:1; | 1012 | int num = read_write == I2C_SMBUS_READ?2:1; |
1013 | struct i2c_msg msg[2] = { { addr, flags, 1, msgbuf0 }, | 1013 | struct i2c_msg msg[2] = { { addr, flags, 1, msgbuf0 }, |
1014 | { addr, flags | I2C_M_RD, 0, msgbuf1 } | 1014 | { addr, flags | I2C_M_RD, 0, msgbuf1 } |
1015 | }; | 1015 | }; |
1016 | int i; | 1016 | int i; |
@@ -1103,14 +1103,14 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, | |||
1103 | if (i) { | 1103 | if (i) { |
1104 | /* Compute PEC if first message is a write */ | 1104 | /* Compute PEC if first message is a write */ |
1105 | if (!(msg[0].flags & I2C_M_RD)) { | 1105 | if (!(msg[0].flags & I2C_M_RD)) { |
1106 | if (num == 1) /* Write only */ | 1106 | if (num == 1) /* Write only */ |
1107 | i2c_smbus_add_pec(&msg[0]); | 1107 | i2c_smbus_add_pec(&msg[0]); |
1108 | else /* Write followed by read */ | 1108 | else /* Write followed by read */ |
1109 | partial_pec = i2c_smbus_msg_pec(0, &msg[0]); | 1109 | partial_pec = i2c_smbus_msg_pec(0, &msg[0]); |
1110 | } | 1110 | } |
1111 | /* Ask for PEC if last message is a read */ | 1111 | /* Ask for PEC if last message is a read */ |
1112 | if (msg[num-1].flags & I2C_M_RD) | 1112 | if (msg[num-1].flags & I2C_M_RD) |
1113 | msg[num-1].len++; | 1113 | msg[num-1].len++; |
1114 | } | 1114 | } |
1115 | 1115 | ||
1116 | if (i2c_transfer(adapter, msg, num) < 0) | 1116 | if (i2c_transfer(adapter, msg, num) < 0) |
@@ -1130,7 +1130,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, | |||
1130 | case I2C_SMBUS_BYTE_DATA: | 1130 | case I2C_SMBUS_BYTE_DATA: |
1131 | data->byte = msgbuf1[0]; | 1131 | data->byte = msgbuf1[0]; |
1132 | break; | 1132 | break; |
1133 | case I2C_SMBUS_WORD_DATA: | 1133 | case I2C_SMBUS_WORD_DATA: |
1134 | case I2C_SMBUS_PROC_CALL: | 1134 | case I2C_SMBUS_PROC_CALL: |
1135 | data->word = msgbuf1[0] | (msgbuf1[1] << 8); | 1135 | data->word = msgbuf1[0] | (msgbuf1[1] << 8); |
1136 | break; | 1136 | break; |
@@ -1146,7 +1146,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, | |||
1146 | 1146 | ||
1147 | 1147 | ||
1148 | s32 i2c_smbus_xfer(struct i2c_adapter * adapter, u16 addr, unsigned short flags, | 1148 | s32 i2c_smbus_xfer(struct i2c_adapter * adapter, u16 addr, unsigned short flags, |
1149 | char read_write, u8 command, int size, | 1149 | char read_write, u8 command, int size, |
1150 | union i2c_smbus_data * data) | 1150 | union i2c_smbus_data * data) |
1151 | { | 1151 | { |
1152 | s32 res; | 1152 | s32 res; |