Re: [PATCH] i2c driver fixes for 2.6.0

Greg KH
2003-12-30T22:51:17Z

ChangeSet 1.1496.8.37, 2003/12/30 12:09:49-08:00, khali@linux-fr.org

[PATCH] I2C: remove bus scan logic from i2c chip drivers

This patch drops bus scan from i2c-algo-ite and i2c-ibm_iic. It also
removes the incomplete and broken SLO_IO stuff from i2c-algo-ite.

drivers/i2c/algos/i2c-algo-ite.c | 36 ------------------------------------
drivers/i2c/busses/i2c-ibm_iic.c | 34 ----------------------------------
2 files changed, 70 deletions(-)

diff -Nru a/drivers/i2c/algos/i2c-algo-ite.c b/drivers/i2c/algos/i2c-algo-ite.c
--- a/drivers/i2c/algos/i2c-algo-ite.c Tue Dec 30 12:28:59 2003
+++ b/drivers/i2c/algos/i2c-algo-ite.c Tue Dec 30 12:28:59 2003
@@ -60,27 +60,13 @@
/* debug the protocol by showing transferred bits */
#define DEF_TIMEOUT 16

-/* debugging - slow down transfer to have a look at the data .. */
-/* I use this with two leds&resistors, each one connected to sda,scl */
-/* respectively. This makes sure that the algorithm works. Some chips */
-/* might not like this, as they have an internal timeout of some mils */
-/*
-#define SLO_IO jif=jiffies;while(jiffies<=jif+i2c_table[minor].veryslow)\
- cond_resched();
-*/
-

/* ----- global variables --------------------------------------------- */

-#ifdef SLO_IO
- int jif;
-#endif
-
/* module parameters:
*/
static int i2c_debug=1;
static int iic_test=0; /* see if the line-setting functions work */
-static int iic_scan=0; /* have a look at what's hanging 'round */

/* --- setting states on the bus with the right timing: --------------- */

@@ -757,8 +743,6 @@
*/
int i2c_iic_add_bus(struct i2c_adapter *adap)
{
- int i;
- short status;
struct i2c_algo_iic_data *iic_adap = adap->algo_data;

if (iic_test) {
@@ -782,24 +766,6 @@
i2c_add_adapter(adap);
iic_init(iic_adap);

- /* scan bus */
- /* By default scanning the bus is turned off. */
- if (iic_scan) {
- printk(KERN_INFO " i2c-algo-ite: scanning bus %s.\n",
- adap->name);
- for (i = 0x00; i < 0xff; i+=2) {
- iic_outw(iic_adap, ITE_I2CSAR, i);
- iic_start(iic_adap);
- if ( (wait_for_pin(iic_adap, &status) == 0) &&
- ((status & ITE_I2CHSR_DNE) == 0) ) {
- printk(KERN_INFO "\n(%02x)\n",i>>1);
- } else {
- printk(KERN_INFO ".");
- iic_reset(iic_adap);
- }
- udelay(iic_adap->udelay);
- }
- }
return 0;
}

@@ -839,11 +805,9 @@
MODULE_LICENSE("GPL");

MODULE_PARM(iic_test, "i");
-MODULE_PARM(iic_scan, "i");
MODULE_PARM(i2c_debug,"i");

MODULE_PARM_DESC(iic_test, "Test if the I2C bus is available");
-MODULE_PARM_DESC(iic_scan, "Scan for active chips on the bus");
MODULE_PARM_DESC(i2c_debug,
"debug level - 0 off; 1 normal; 2,3 more verbose; 9 iic-protocol");

diff -Nru a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c
--- a/drivers/i2c/busses/i2c-ibm_iic.c Tue Dec 30 12:28:59 2003
+++ b/drivers/i2c/busses/i2c-ibm_iic.c Tue Dec 30 12:28:59 2003
@@ -48,10 +48,6 @@
MODULE_DESCRIPTION("IBM IIC driver v" DRIVER_VERSION);
MODULE_LICENSE("GPL");

-static int iic_scan = 0;
-MODULE_PARM(iic_scan, "i");
-MODULE_PARM_DESC(iic_scan, "Scan for active chips on the bus");
-
static int iic_force_poll = 0;
MODULE_PARM(iic_force_poll, "i");
MODULE_PARM_DESC(iic_force_poll, "Force polling mode");
@@ -518,32 +514,6 @@
};

/*
- * Scan bus for valid 7-bit addresses (ie things that ACK on 1 byte read)
- * We only scan range [0x08 - 0x77], all other addresses are reserved anyway
- */
-static void __devinit iic_scan_bus(struct ibm_iic_private* dev)
-{
- int found = 0;
- char dummy;
- struct i2c_msg msg = {
- .buf = &dummy,
- .len = sizeof(dummy),
- .flags = I2C_M_RD
- };
-
- printk(KERN_INFO "ibm-iic%d: scanning bus...\n" KERN_INFO, dev->idx);
-
- for (msg.addr = 8; msg.addr < 0x78; ++msg.addr)
- if (iic_xfer(&dev->adap, &msg, 1) == 1){
- ++found;
- printk(" 0x%02x", msg.addr);
- }
-
- printk("%sibm-iic%d: %d device(s) detected\n",
- found ? "\n" KERN_INFO : "", dev->idx, found);
-}
-
-/*
* Calculates IICx_CLCKDIV value for a specific OPB clock frequency
*/
static inline u8 iic_clckdiv(unsigned int opb)
@@ -648,10 +618,6 @@

printk(KERN_INFO "ibm-iic%d: using %s mode\n", dev->idx,
dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)");
-
- /* Scan bus if requested by user */
- if (iic_scan)
- iic_scan_bus(dev);

return 0;