aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c/i2c-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/i2c/i2c-core.c')
-rw-r--r--drivers/i2c/i2c-core.c54
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,
817struct i2c_adapter* i2c_get_adapter(int id) 817struct 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)
838static u8 838static u8
839crc8(u16 data) 839crc8(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
897s32 i2c_smbus_write_quick(struct i2c_client *client, u8 value) 897s32 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
903s32 i2c_smbus_read_byte(struct i2c_client *client) 903s32 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! */
1001static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, 1001static 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
1148s32 i2c_smbus_xfer(struct i2c_adapter * adapter, u16 addr, unsigned short flags, 1148s32 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;