The patch titled i2c: timberdale: i2c-ocores: can add I2C devices to the bus has been removed from the -mm tree. Its filename was i2c-timberdale-i2c-ocores-can-add-i2c-devices-to-the-bus.patch This patch was dropped because of build problems due to the missing xilinx patch The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: i2c: timberdale: i2c-ocores: can add I2C devices to the bus From: Richard Röjfors <richard.rojfors.ext@xxxxxxxxxxxxxxx> There is sometimes a need for the ocores driver to add devices to the bus when installed. i2c_register_board_info can not always be used, because the I2C devices are not known at an early state, they could for instance be connected on a I2C bus on a PCI device which has the Open Cores IP. i2c_new_device can not be used in all cases either since the resulting bus nummer might be unknown. The solution is the pass a list of I2C devices in the platform data to the Open Cores driver. This is useful for MFD drivers. Signed-off-by: Richard Röjfors <richard.rojfors.ext@xxxxxxxxxxxxxxx> Acked-by: Peter Korsgaard <jacmet@xxxxxxxxxx> Cc: Jean Delvare <khali@xxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- Documentation/i2c/busses/i2c-ocores | 17 +++++++++++++++++ drivers/i2c/busses/i2c-ocores.c | 5 +++++ include/linux/i2c-ocores.h | 2 ++ 3 files changed, 24 insertions(+) diff -puN Documentation/i2c/busses/i2c-ocores~i2c-timberdale-i2c-ocores-can-add-i2c-devices-to-the-bus Documentation/i2c/busses/i2c-ocores --- a/Documentation/i2c/busses/i2c-ocores~i2c-timberdale-i2c-ocores-can-add-i2c-devices-to-the-bus +++ a/Documentation/i2c/busses/i2c-ocores @@ -20,6 +20,8 @@ platform_device with the base address an dev.platform_data of the device should also point to a struct ocores_i2c_platform_data (see linux/i2c-ocores.h) describing the distance between registers and the input clock speed. +There is also a possibility to attach a list of i2c_board_info which +the i2c-ocores driver will add to the bus upon creation. E.G. something like: @@ -36,9 +38,24 @@ static struct resource ocores_resources[ }, }; +/* optional board info */ +struct i2c_board_info ocores_i2c_board_info[] = { + { + I2C_BOARD_INFO("tsc2003", 0x48), + .platform_data = &tsc2003_platform_data, + .irq = TSC_IRQ + }, + { + I2C_BOARD_INFO("adv7180", 0x42 >> 1), + .irq = ADV_IRQ + } +}; + static struct ocores_i2c_platform_data myi2c_data = { .regstep = 2, /* two bytes between registers */ .clock_khz = 50000, /* input clock of 50MHz */ + .devices = ocores_i2c_board_info, /* optional table of devices */ + .num_devices = ARRAY_SIZE(ocores_i2c_board_info), /* table size */ }; static struct platform_device myi2c = { diff -puN drivers/i2c/busses/i2c-ocores.c~i2c-timberdale-i2c-ocores-can-add-i2c-devices-to-the-bus drivers/i2c/busses/i2c-ocores.c --- a/drivers/i2c/busses/i2c-ocores.c~i2c-timberdale-i2c-ocores-can-add-i2c-devices-to-the-bus +++ a/drivers/i2c/busses/i2c-ocores.c @@ -216,6 +216,7 @@ static int __devinit ocores_i2c_probe(st struct ocores_i2c_platform_data *pdata; struct resource *res, *res2; int ret; + int i; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) @@ -271,6 +272,10 @@ static int __devinit ocores_i2c_probe(st goto add_adapter_failed; } + /* add in known devices to the bus */ + for (i = 0; i < pdata->num_devices; i++) + i2c_new_device(&i2c->adap, pdata->devices + i); + return 0; add_adapter_failed: diff -puN include/linux/i2c-ocores.h~i2c-timberdale-i2c-ocores-can-add-i2c-devices-to-the-bus include/linux/i2c-ocores.h --- a/include/linux/i2c-ocores.h~i2c-timberdale-i2c-ocores-can-add-i2c-devices-to-the-bus +++ a/include/linux/i2c-ocores.h @@ -14,6 +14,8 @@ struct ocores_i2c_platform_data { u32 regstep; /* distance between registers */ u32 clock_khz; /* input clock in kHz */ + u8 num_devices; /* number of devices in the devices list */ + struct i2c_board_info const *devices; /* devices connected to the bus */ }; #endif /* _LINUX_I2C_OCORES_H */ _ Patches currently in -mm which might be from richard.rojfors.ext@xxxxxxxxxxxxxxx are linux-next.patch i2c-timberdale-i2c-ocores-can-add-i2c-devices-to-the-bus.patch mfd-timberdale-add-timberdale-dma-driver.patch v4l2-timberdale-add-timberdale-logiwin-driver.patch v4l2-timberdale-add-timberdale-logiwin-driver-in-kconfig-and-makefile.patch mfd-timberdale-add-timberdale-driver.patch serial-timberdale-add-timberdale-uart-driver.patch gpio-timberdale-add-timbgpio.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html