diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-04 17:46:27 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-04 17:46:27 -0700 |
commit | 8d41f0e8d51742aba5bbcab9acb5238a8578c917 (patch) | |
tree | c69e7ffaf2a8598283422d20643154a298d08293 /drivers/i2c/busses/i2c-parport.c | |
parent | 8bc8493063f938c932819958a7b5a0d56046bc96 (diff) | |
parent | 5b68790cd5e2879067bcbc45b01eeb6081e7d731 (diff) |
Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6
* 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6: (44 commits)
i2c-s3c2410: Fix bug in releasing driver
i2c-s3c2410: Fix I2C SDA to SCL setup time
i2c: New i2c-tiny-usb bus driver
i2c: Documentation update
i2c: SPIN_LOCK_UNLOCKED cleanup
i2c: Obsolete i2c-ixp2000, i2c-ixp4xx and scx200_i2c
i2c: New Simtec I2C bus driver
i2c: Bitbanging I2C bus driver using the GPIO API
Use menuconfig objects - I2C
i2c: Restore i2c_smbus_read_block_data
i2c-pxa: Clean transaction stop
i2c-algo-bit: Improve debugging
i2c-algo-bit: Implement a 50/50 SCL duty cycle
i2c-omap: Switch to static adapter numbering
i2c: Blackfin Two Wire Interface driver
i2c-algo-sgi: Comment and whitespace cleanups
i2c: Make i2c_del_driver a void function
i2c: Move i2c-isa-only exported symbol declarations
i2c: Document i2c_new_device()
i2c: Add i2c_new_probed_device()
...
Fixed trivial conflict in Documentation/feature-removal-schedule.txt manually.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/i2c/busses/i2c-parport.c')
-rw-r--r-- | drivers/i2c/busses/i2c-parport.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/drivers/i2c/busses/i2c-parport.c b/drivers/i2c/busses/i2c-parport.c index 66696a40c7b..8c953707253 100644 --- a/drivers/i2c/busses/i2c-parport.c +++ b/drivers/i2c/busses/i2c-parport.c @@ -1,7 +1,7 @@ /* ------------------------------------------------------------------------ * * i2c-parport.c I2C bus over parallel port * * ------------------------------------------------------------------------ * - Copyright (C) 2003-2004 Jean Delvare <khali@linux-fr.org> + Copyright (C) 2003-2007 Jean Delvare <khali@linux-fr.org> Based on older i2c-philips-par.c driver Copyright (C) 1995-2000 Simon G. Vogl @@ -137,19 +137,12 @@ static struct i2c_algo_bit_data parport_algo_data = { .setscl = parport_setscl, .getsda = parport_getsda, .getscl = parport_getscl, - .udelay = 60, + .udelay = 10, /* ~50 kbps */ .timeout = HZ, }; /* ----- I2c and parallel port call-back functions and structures --------- */ -static struct i2c_adapter parport_adapter = { - .owner = THIS_MODULE, - .class = I2C_CLASS_HWMON, - .id = I2C_HW_B_LP, - .name = "Parallel port adapter", -}; - static void i2c_parport_attach (struct parport *port) { struct i2c_par *adapter; @@ -169,10 +162,17 @@ static void i2c_parport_attach (struct parport *port) } /* Fill the rest of the structure */ - adapter->adapter = parport_adapter; + adapter->adapter.owner = THIS_MODULE; + adapter->adapter.class = I2C_CLASS_HWMON; + adapter->adapter.id = I2C_HW_B_LP; + strlcpy(adapter->adapter.name, "Parallel port adapter", + sizeof(adapter->adapter.name)); adapter->algo_data = parport_algo_data; - if (!adapter_parm[type].getscl.val) + /* Slow down if we can't sense SCL */ + if (!adapter_parm[type].getscl.val) { adapter->algo_data.getscl = NULL; + adapter->algo_data.udelay = 50; /* ~10 kbps */ + } adapter->algo_data.data = port; adapter->adapter.algo_data = &adapter->algo_data; @@ -214,11 +214,12 @@ static void i2c_parport_detach (struct parport *port) for (prev = NULL, adapter = adapter_list; adapter; prev = adapter, adapter = adapter->next) { if (adapter->pdev->port == port) { + i2c_del_adapter(&adapter->adapter); + /* Un-init if needed (power off...) */ if (adapter_parm[type].init.val) line_set(port, 0, &adapter_parm[type].init); - i2c_del_adapter(&adapter->adapter); parport_unregister_device(adapter->pdev); if (prev) prev->next = adapter->next; |