aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2007-10-13 17:56:32 -0400
committerJean Delvare <khali@hyperion.delvare>2007-10-13 17:56:32 -0400
commit53be79593452e568a856f8393985131848d59b72 (patch)
treeb1abe8a310486a6c0c146cdaf35f93e1f9faada3
parentcdeec3cc79c7b1acfa89fb362b01e544ecfb285c (diff)
i2c: Remove i2c_algorithm.algo_control()
This removes: - An effectively unused hook: i2c_algorithm.algo_control. - The i2c_control() call, used only by i2c-dev to call that unused hook or set two barely supported adapter params. (That param setting moves into i2c-dev.c ... still iffy due to lack of locking, but no other changes.) As shown by diffstat, this is a net code shrink. It also reduces the complexity of the I2C adapter and /dev interfaces. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Jean Delvare <khali@linux-fr.org>
-rw-r--r--drivers/i2c/i2c-core.c22
-rw-r--r--drivers/i2c/i2c-dev.c14
-rw-r--r--include/linux/i2c.h7
3 files changed, 12 insertions, 31 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 5e58b5641a35..e73d58c43f38 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -931,28 +931,6 @@ int i2c_master_recv(struct i2c_client *client, char *buf ,int count)
931} 931}
932EXPORT_SYMBOL(i2c_master_recv); 932EXPORT_SYMBOL(i2c_master_recv);
933 933
934int i2c_control(struct i2c_client *client,
935 unsigned int cmd, unsigned long arg)
936{
937 int ret = 0;
938 struct i2c_adapter *adap = client->adapter;
939
940 dev_dbg(&client->adapter->dev, "i2c ioctl, cmd: 0x%x, arg: %#lx\n", cmd, arg);
941 switch (cmd) {
942 case I2C_RETRIES:
943 adap->retries = arg;
944 break;
945 case I2C_TIMEOUT:
946 adap->timeout = arg;
947 break;
948 default:
949 if (adap->algo->algo_control!=NULL)
950 ret = adap->algo->algo_control(adap,cmd,arg);
951 }
952 return ret;
953}
954EXPORT_SYMBOL(i2c_control);
955
956/* ---------------------------------------------------- 934/* ----------------------------------------------------
957 * the i2c address scanning function 935 * the i2c address scanning function
958 * Will not work for 10-bit addresses! 936 * Will not work for 10-bit addresses!
diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
index df6e14c192d6..5a15e50748de 100644
--- a/drivers/i2c/i2c-dev.c
+++ b/drivers/i2c/i2c-dev.c
@@ -354,9 +354,19 @@ static int i2cdev_ioctl(struct inode *inode, struct file *file,
354 return -EFAULT; 354 return -EFAULT;
355 } 355 }
356 return res; 356 return res;
357 357 case I2C_RETRIES:
358 client->adapter->retries = arg;
359 break;
360 case I2C_TIMEOUT:
361 client->adapter->timeout = arg;
362 break;
358 default: 363 default:
359 return i2c_control(client,cmd,arg); 364 /* NOTE: returning a fault code here could cause trouble
365 * in buggy userspace code. Some old kernel bugs returned
366 * zero in this case, and userspace code might accidentally
367 * have depended on that bug.
368 */
369 return -ENOTTY;
360 } 370 }
361 return 0; 371 return 0;
362} 372}
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 8fc4310f071b..ae477b3106a2 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -290,9 +290,6 @@ struct i2c_algorithm {
290 unsigned short flags, char read_write, 290 unsigned short flags, char read_write,
291 u8 command, int size, union i2c_smbus_data * data); 291 u8 command, int size, union i2c_smbus_data * data);
292 292
293 /* --- ioctl like call to set div. parameters. */
294 int (*algo_control)(struct i2c_adapter *, unsigned int, unsigned long);
295
296 /* To determine what the adapter supports */ 293 /* To determine what the adapter supports */
297 u32 (*functionality) (struct i2c_adapter *); 294 u32 (*functionality) (struct i2c_adapter *);
298}; 295};
@@ -416,10 +413,6 @@ extern int i2c_probe(struct i2c_adapter *adapter,
416 struct i2c_client_address_data *address_data, 413 struct i2c_client_address_data *address_data,
417 int (*found_proc) (struct i2c_adapter *, int, int)); 414 int (*found_proc) (struct i2c_adapter *, int, int));
418 415
419/* An ioctl like call to set div. parameters of the adapter.
420 */
421extern int i2c_control(struct i2c_client *,unsigned int, unsigned long);
422
423extern struct i2c_adapter* i2c_get_adapter(int id); 416extern struct i2c_adapter* i2c_get_adapter(int id);
424extern void i2c_put_adapter(struct i2c_adapter *adap); 417extern void i2c_put_adapter(struct i2c_adapter *adap);
425 418