On Mon, Dec 06, 2010 at 01:38:14AM -0500, Matt Turner wrote: > From: Maciej W. Rozycki <macro@xxxxxxxxxxxxxx> > > This is a rewrite of large parts of the driver mainly so that it uses > SMBus interrupts to offload the CPU from busy-waiting on status inputs. > As a part of the overhaul of the init and exit calls, all accesses to the > hardware got converted to use accessory functions via an ioremap() cookie. > > Minimally rebased by Matt Turner. > > Tested-by: Matt Turner <mattst88@xxxxxxxxx> > Signed-off-by: Matt Turner <mattst88@xxxxxxxxx> [ .. ] > > -static struct i2c_algo_sibyte_data sibyte_board_data[2] = { > - { NULL, 0, (void *) (CKSEG1+A_SMB_BASE(0)) }, > - { NULL, 1, (void *) (CKSEG1+A_SMB_BASE(1)) } > +static struct i2c_algo_sibyte_data i2c_sibyte_board_data[2] = { > + { > + .name = "sb1250-smbus-0", > + .base = A_SMB_0, > + .irq = K_INT_SMB_0, > + }, > + { > + .name = "sb1250-smbus-1", > + .base = A_SMB_1, > + .irq = K_INT_SMB_1, Found my problem. The .irq settings don't work for BCM1480. It needs K_BCM1480_INT_SMB_0 and K_BCM1480_INT_SMB_1 from asm/sibyte/bcm1480_int.h. For a clean fix, i2c_sibyte_board_data[] should probably be defined in a platform file, not in the i2c bus driver. Guenter