diff options
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/i2c-core.c | 54 | ||||
-rw-r--r-- | drivers/i2c/i2c-dev.c | 34 |
2 files changed, 44 insertions, 44 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; |
diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c index d66cefc63df7..cf9381eae8da 100644 --- a/drivers/i2c/i2c-dev.c +++ b/drivers/i2c/i2c-dev.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | i2c-dev.c - i2c-bus driver, char device interface | 2 | i2c-dev.c - i2c-bus driver, char device interface |
3 | 3 | ||
4 | Copyright (C) 1995-97 Simon G. Vogl | 4 | Copyright (C) 1995-97 Simon G. Vogl |
5 | Copyright (C) 1998-99 Frodo Looijaard <frodol@dds.nl> | 5 | Copyright (C) 1998-99 Frodo Looijaard <frodol@dds.nl> |
@@ -172,7 +172,7 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file, | |||
172 | switch ( cmd ) { | 172 | switch ( cmd ) { |
173 | case I2C_SLAVE: | 173 | case I2C_SLAVE: |
174 | case I2C_SLAVE_FORCE: | 174 | case I2C_SLAVE_FORCE: |
175 | if ((arg > 0x3ff) || | 175 | if ((arg > 0x3ff) || |
176 | (((client->flags & I2C_M_TEN) == 0) && arg > 0x7f)) | 176 | (((client->flags & I2C_M_TEN) == 0) && arg > 0x7f)) |
177 | return -EINVAL; | 177 | return -EINVAL; |
178 | if ((cmd == I2C_SLAVE) && i2c_check_addr(client->adapter,arg)) | 178 | if ((cmd == I2C_SLAVE) && i2c_check_addr(client->adapter,arg)) |
@@ -196,8 +196,8 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file, | |||
196 | return put_user(funcs, (unsigned long __user *)arg); | 196 | return put_user(funcs, (unsigned long __user *)arg); |
197 | 197 | ||
198 | case I2C_RDWR: | 198 | case I2C_RDWR: |
199 | if (copy_from_user(&rdwr_arg, | 199 | if (copy_from_user(&rdwr_arg, |
200 | (struct i2c_rdwr_ioctl_data __user *)arg, | 200 | (struct i2c_rdwr_ioctl_data __user *)arg, |
201 | sizeof(rdwr_arg))) | 201 | sizeof(rdwr_arg))) |
202 | return -EFAULT; | 202 | return -EFAULT; |
203 | 203 | ||
@@ -205,9 +205,9 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file, | |||
205 | * be sent at once */ | 205 | * be sent at once */ |
206 | if (rdwr_arg.nmsgs > I2C_RDRW_IOCTL_MAX_MSGS) | 206 | if (rdwr_arg.nmsgs > I2C_RDRW_IOCTL_MAX_MSGS) |
207 | return -EINVAL; | 207 | return -EINVAL; |
208 | 208 | ||
209 | rdwr_pa = (struct i2c_msg *) | 209 | rdwr_pa = (struct i2c_msg *) |
210 | kmalloc(rdwr_arg.nmsgs * sizeof(struct i2c_msg), | 210 | kmalloc(rdwr_arg.nmsgs * sizeof(struct i2c_msg), |
211 | GFP_KERNEL); | 211 | GFP_KERNEL); |
212 | 212 | ||
213 | if (rdwr_pa == NULL) return -ENOMEM; | 213 | if (rdwr_pa == NULL) return -ENOMEM; |
@@ -277,9 +277,9 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file, | |||
277 | (struct i2c_smbus_ioctl_data __user *) arg, | 277 | (struct i2c_smbus_ioctl_data __user *) arg, |
278 | sizeof(struct i2c_smbus_ioctl_data))) | 278 | sizeof(struct i2c_smbus_ioctl_data))) |
279 | return -EFAULT; | 279 | return -EFAULT; |
280 | if ((data_arg.size != I2C_SMBUS_BYTE) && | 280 | if ((data_arg.size != I2C_SMBUS_BYTE) && |
281 | (data_arg.size != I2C_SMBUS_QUICK) && | 281 | (data_arg.size != I2C_SMBUS_QUICK) && |
282 | (data_arg.size != I2C_SMBUS_BYTE_DATA) && | 282 | (data_arg.size != I2C_SMBUS_BYTE_DATA) && |
283 | (data_arg.size != I2C_SMBUS_WORD_DATA) && | 283 | (data_arg.size != I2C_SMBUS_WORD_DATA) && |
284 | (data_arg.size != I2C_SMBUS_PROC_CALL) && | 284 | (data_arg.size != I2C_SMBUS_PROC_CALL) && |
285 | (data_arg.size != I2C_SMBUS_BLOCK_DATA) && | 285 | (data_arg.size != I2C_SMBUS_BLOCK_DATA) && |
@@ -290,11 +290,11 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file, | |||
290 | data_arg.size); | 290 | data_arg.size); |
291 | return -EINVAL; | 291 | return -EINVAL; |
292 | } | 292 | } |
293 | /* Note that I2C_SMBUS_READ and I2C_SMBUS_WRITE are 0 and 1, | 293 | /* Note that I2C_SMBUS_READ and I2C_SMBUS_WRITE are 0 and 1, |
294 | so the check is valid if size==I2C_SMBUS_QUICK too. */ | 294 | so the check is valid if size==I2C_SMBUS_QUICK too. */ |
295 | if ((data_arg.read_write != I2C_SMBUS_READ) && | 295 | if ((data_arg.read_write != I2C_SMBUS_READ) && |
296 | (data_arg.read_write != I2C_SMBUS_WRITE)) { | 296 | (data_arg.read_write != I2C_SMBUS_WRITE)) { |
297 | dev_dbg(&client->adapter->dev, | 297 | dev_dbg(&client->adapter->dev, |
298 | "read_write out of range (%x) in ioctl I2C_SMBUS.\n", | 298 | "read_write out of range (%x) in ioctl I2C_SMBUS.\n", |
299 | data_arg.read_write); | 299 | data_arg.read_write); |
300 | return -EINVAL; | 300 | return -EINVAL; |
@@ -303,7 +303,7 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file, | |||
303 | /* Note that command values are always valid! */ | 303 | /* Note that command values are always valid! */ |
304 | 304 | ||
305 | if ((data_arg.size == I2C_SMBUS_QUICK) || | 305 | if ((data_arg.size == I2C_SMBUS_QUICK) || |
306 | ((data_arg.size == I2C_SMBUS_BYTE) && | 306 | ((data_arg.size == I2C_SMBUS_BYTE) && |
307 | (data_arg.read_write == I2C_SMBUS_WRITE))) | 307 | (data_arg.read_write == I2C_SMBUS_WRITE))) |
308 | /* These are special: we do not use data */ | 308 | /* These are special: we do not use data */ |
309 | return i2c_smbus_xfer(client->adapter, client->addr, | 309 | return i2c_smbus_xfer(client->adapter, client->addr, |
@@ -321,14 +321,14 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file, | |||
321 | if ((data_arg.size == I2C_SMBUS_BYTE_DATA) || | 321 | if ((data_arg.size == I2C_SMBUS_BYTE_DATA) || |
322 | (data_arg.size == I2C_SMBUS_BYTE)) | 322 | (data_arg.size == I2C_SMBUS_BYTE)) |
323 | datasize = sizeof(data_arg.data->byte); | 323 | datasize = sizeof(data_arg.data->byte); |
324 | else if ((data_arg.size == I2C_SMBUS_WORD_DATA) || | 324 | else if ((data_arg.size == I2C_SMBUS_WORD_DATA) || |
325 | (data_arg.size == I2C_SMBUS_PROC_CALL)) | 325 | (data_arg.size == I2C_SMBUS_PROC_CALL)) |
326 | datasize = sizeof(data_arg.data->word); | 326 | datasize = sizeof(data_arg.data->word); |
327 | else /* size == smbus block, i2c block, or block proc. call */ | 327 | else /* size == smbus block, i2c block, or block proc. call */ |
328 | datasize = sizeof(data_arg.data->block); | 328 | datasize = sizeof(data_arg.data->block); |
329 | 329 | ||
330 | if ((data_arg.size == I2C_SMBUS_PROC_CALL) || | 330 | if ((data_arg.size == I2C_SMBUS_PROC_CALL) || |
331 | (data_arg.size == I2C_SMBUS_BLOCK_PROC_CALL) || | 331 | (data_arg.size == I2C_SMBUS_BLOCK_PROC_CALL) || |
332 | (data_arg.read_write == I2C_SMBUS_WRITE)) { | 332 | (data_arg.read_write == I2C_SMBUS_WRITE)) { |
333 | if (copy_from_user(&temp, data_arg.data, datasize)) | 333 | if (copy_from_user(&temp, data_arg.data, datasize)) |
334 | return -EFAULT; | 334 | return -EFAULT; |
@@ -336,8 +336,8 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file, | |||
336 | res = i2c_smbus_xfer(client->adapter,client->addr,client->flags, | 336 | res = i2c_smbus_xfer(client->adapter,client->addr,client->flags, |
337 | data_arg.read_write, | 337 | data_arg.read_write, |
338 | data_arg.command,data_arg.size,&temp); | 338 | data_arg.command,data_arg.size,&temp); |
339 | if (! res && ((data_arg.size == I2C_SMBUS_PROC_CALL) || | 339 | if (! res && ((data_arg.size == I2C_SMBUS_PROC_CALL) || |
340 | (data_arg.size == I2C_SMBUS_BLOCK_PROC_CALL) || | 340 | (data_arg.size == I2C_SMBUS_BLOCK_PROC_CALL) || |
341 | (data_arg.read_write == I2C_SMBUS_READ))) { | 341 | (data_arg.read_write == I2C_SMBUS_READ))) { |
342 | if (copy_to_user(data_arg.data, &temp, datasize)) | 342 | if (copy_to_user(data_arg.data, &temp, datasize)) |
343 | return -EFAULT; | 343 | return -EFAULT; |