Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=53be79593452e568a856f8393985131848d59b72
Commit:     53be79593452e568a856f8393985131848d59b72
Parent:     cdeec3cc79c7b1acfa89fb362b01e544ecfb285c
Author:     David Brownell <[EMAIL PROTECTED]>
AuthorDate: Sat Oct 13 23:56:32 2007 +0200
Committer:  Jean Delvare <[EMAIL PROTECTED]>
CommitDate: Sat Oct 13 23:56:32 2007 +0200

    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 <[EMAIL PROTECTED]>
    Signed-off-by: Jean Delvare <[EMAIL PROTECTED]>
---
 drivers/i2c/i2c-core.c |   22 ----------------------
 drivers/i2c/i2c-dev.c  |   14 ++++++++++++--
 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 5e58b56..e73d58c 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)
 }
 EXPORT_SYMBOL(i2c_master_recv);
 
-int i2c_control(struct i2c_client *client,
-       unsigned int cmd, unsigned long arg)
-{
-       int ret = 0;
-       struct i2c_adapter *adap = client->adapter;
-
-       dev_dbg(&client->adapter->dev, "i2c ioctl, cmd: 0x%x, arg: %#lx\n", 
cmd, arg);
-       switch (cmd) {
-               case I2C_RETRIES:
-                       adap->retries = arg;
-                       break;
-               case I2C_TIMEOUT:
-                       adap->timeout = arg;
-                       break;
-               default:
-                       if (adap->algo->algo_control!=NULL)
-                               ret = adap->algo->algo_control(adap,cmd,arg);
-       }
-       return ret;
-}
-EXPORT_SYMBOL(i2c_control);
-
 /* ----------------------------------------------------
  * the i2c address scanning function
  * Will not work for 10-bit addresses!
diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c
index df6e14c..5a15e50 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,
                                return -EFAULT;
                }
                return res;
-
+       case I2C_RETRIES:
+               client->adapter->retries = arg;
+               break;
+       case I2C_TIMEOUT:
+               client->adapter->timeout = arg;
+               break;
        default:
-               return i2c_control(client,cmd,arg);
+               /* NOTE:  returning a fault code here could cause trouble
+                * in buggy userspace code.  Some old kernel bugs returned
+                * zero in this case, and userspace code might accidentally
+                * have depended on that bug.
+                */
+               return -ENOTTY;
        }
        return 0;
 }
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 8fc4310..ae477b3 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -290,9 +290,6 @@ struct i2c_algorithm {
                           unsigned short flags, char read_write,
                           u8 command, int size, union i2c_smbus_data * data);
 
-       /* --- ioctl like call to set div. parameters. */
-       int (*algo_control)(struct i2c_adapter *, unsigned int, unsigned long);
-
        /* To determine what the adapter supports */
        u32 (*functionality) (struct i2c_adapter *);
 };
@@ -416,10 +413,6 @@ extern int i2c_probe(struct i2c_adapter *adapter,
                struct i2c_client_address_data *address_data,
                int (*found_proc) (struct i2c_adapter *, int, int));
 
-/* An ioctl like call to set div. parameters of the adapter.
- */
-extern int i2c_control(struct i2c_client *,unsigned int, unsigned long);
-
 extern struct i2c_adapter* i2c_get_adapter(int id);
 extern void i2c_put_adapter(struct i2c_adapter *adap);
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to