From: Vitaly Wool Subject: i2c-pnx: Fix interrupt handler, get rid of EARLY config option This fixes two issues raised by David Brownell on the i2c list: << Someone needs to update i2c-pnx.c to handle the IRQ handler doesn't expect pt_regs (gone now for a while), and so it doesn't try to reference "mudule_init()" if I2C isn't initialized "early". For that matter, to get rid of that _option_ to initialize then, and always init that driver with subsystem_init() ... it's common with embedded systems to need I2C access to tweak a GPIO expander or do some other work when bringing up drivers, that's not specific to USB stacks. >> Signed-off-by: Vitaly Wool Signed-off-by: Jean Delvare --- drivers/i2c/busses/Kconfig | 9 --------- drivers/i2c/busses/i2c-pnx.c | 7 +------ 2 files changed, 1 insertion(+), 15 deletions(-) --- linux-2.6.20-rc1.orig/drivers/i2c/busses/Kconfig 2006-12-15 09:05:26.000000000 +0100 +++ linux-2.6.20-rc1/drivers/i2c/busses/Kconfig 2006-12-19 09:44:50.000000000 +0100 @@ -564,13 +564,4 @@ This driver can also be built as a module. If so, the module will be called i2c-pnx. -config I2C_PNX_EARLY - bool "Early initialization for I2C on PNXxxxx" - depends on I2C_PNX=y - help - Under certain circumstances one may need to make sure I2C on PNXxxxx - is initialized earlier than some other driver that depends on it - (for instance, that might be USB in case of PNX4008). With this - option turned on you can guarantee that. - endmenu --- linux-2.6.20-rc1.orig/drivers/i2c/busses/i2c-pnx.c 2006-12-19 09:44:07.000000000 +0100 +++ linux-2.6.20-rc1/drivers/i2c/busses/i2c-pnx.c 2006-12-19 09:44:50.000000000 +0100 @@ -305,8 +305,7 @@ return 0; } -static irqreturn_t -i2c_pnx_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t i2c_pnx_interrupt(int irq, void *dev_id) { u32 stat, ctl; struct i2c_adapter *adap = dev_id; @@ -699,10 +698,6 @@ MODULE_DESCRIPTION("I2C driver for Philips IP3204-based I2C busses"); MODULE_LICENSE("GPL"); -#ifdef CONFIG_I2C_PNX_EARLY /* We need to make sure I2C is initialized before USB */ subsys_initcall(i2c_adap_pnx_init); -#else -mudule_init(i2c_adap_pnx_init); -#endif module_exit(i2c_adap_pnx_exit);