linux/drivers/i2c
Tony Lindgren f08ac4e794 i2c-omap: Fix unhandled fault
If an I2C interrupt happens between disabling interface clock
and functional clock, the interrupt handler will produce an
external abort on non-linefetch error when trying to access
driver registers while interface clock is disabled.

This patch fixes the problem by saving and disabling i2c-omap
interrupt before turning off the clocks. Also disable functional
clock before the interface clock as suggested by Paul Walmsley.

Patch also renames enable/disable_clocks functions to unidle/idle
functions. Note that the driver is currently not taking advantage
of the idle interrupts. To use the idle interrupts, driver would
have to enable interface clock based on the idle interrupt
and dev->idle flag.

This patch has been tested in linux-omap tree with various omaps.

Cc: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
2008-03-23 20:28:20 +01:00
..
algos i2c-algo-pcf: Delete broken 10-bit address support 2008-01-27 18:14:46 +01:00
busses i2c-omap: Fix unhandled fault 2008-03-23 20:28:20 +01:00
chips i2c: chips subdirectory is deprecated 2008-03-12 14:15:00 +01:00
Kconfig [S390] Kconfig: menus with depends on HAS_IOMEM. 2007-05-10 15:46:07 +02:00
Makefile i2c: Add i2c_board_info and i2c_new_device() 2007-05-01 23:26:31 +02:00
i2c-boardinfo.c i2c: Add i2c_board_info and i2c_new_device() 2007-05-01 23:26:31 +02:00
i2c-core.c i2c: Keep client->driver and client->dev.driver in sync 2008-03-12 14:15:00 +01:00
i2c-core.h i2c: Add i2c_board_info and i2c_new_device() 2007-05-01 23:26:31 +02:00
i2c-dev.c i2c: Stop using the redundant client list 2008-01-27 18:14:51 +01:00