diff options
author | David Brownell <david-b@pacbell.net> | 2007-10-13 17:56:32 -0400 |
---|---|---|
committer | Jean Delvare <khali@hyperion.delvare> | 2007-10-13 17:56:32 -0400 |
commit | 53be79593452e568a856f8393985131848d59b72 (patch) | |
tree | b1abe8a310486a6c0c146cdaf35f93e1f9faada3 | |
parent | cdeec3cc79c7b1acfa89fb362b01e544ecfb285c (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.c | 22 | ||||
-rw-r--r-- | drivers/i2c/i2c-dev.c | 14 | ||||
-rw-r--r-- | include/linux/i2c.h | 7 |
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 | } |
932 | EXPORT_SYMBOL(i2c_master_recv); | 932 | EXPORT_SYMBOL(i2c_master_recv); |
933 | 933 | ||
934 | int 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 | } | ||
954 | EXPORT_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 | */ | ||
421 | extern int i2c_control(struct i2c_client *,unsigned int, unsigned long); | ||
422 | |||
423 | extern struct i2c_adapter* i2c_get_adapter(int id); | 416 | extern struct i2c_adapter* i2c_get_adapter(int id); |
424 | extern void i2c_put_adapter(struct i2c_adapter *adap); | 417 | extern void i2c_put_adapter(struct i2c_adapter *adap); |
425 | 418 | ||