#define I2C_DEV_BUILDER(bus_id, res, data) \ { \ .id = (bus_id), \ .name = name, \ .num_resources = ARRAY_SIZE(res), \ .resource = (res), \ .dev = { \ .platform_data = (data), \ }, \ } #define MAX_OMAP_I2C_HWMOD_NAME_LEN 16 #define OMAP_I2C_MAX_CONTROLLERS 4 static struct omap_i2c_bus_platform_data i2c_pdata[OMAP_I2C_MAX_CONTROLLERS]; static struct platform_device omap_i2c_devices[] = { I2C_DEV_BUILDER(1, i2c_resources[0], &i2c_pdata[0]), }; #define OMAP_I2C_CMDLINE_SETUP (BIT(31)) static int __init omap_i2c_nr_ports(void) { int ports = 0; if (cpu_class_is_omap1()) ports = 1; else if (cpu_is_omap24xx()) ports = 2; else if (cpu_is_omap34xx()) ports = 3; else if (cpu_is_omap44xx())
} static struct i2c_pb206x_platform_data platform_data[] = { I2C_DEV_DATA_BUILDER(0, platform_init, 100, -1, -1, -1), I2C_DEV_DATA_BUILDER(1, platform_init, 100, -1, -1, -1), I2C_DEV_DATA_BUILDER(2, platform_init, 100, -1, -1, -1), I2C_DEV_DATA_BUILDER(3, platform_init, 100, -1, -1, -1), I2C_DEV_DATA_BUILDER(4, platform_init, 100, -1, -1, -1), I2C_DEV_DATA_BUILDER(5, platform_init, 100, -1, -1, -1), }; /* * i2c bus 0, bus 1 are already used in S5PC100 */ static struct platform_device i2c_devices[] = { I2C_DEV_BUILDER(2, i2c_resources[0], &platform_data[0]), I2C_DEV_BUILDER(3, i2c_resources[1], &platform_data[1]), I2C_DEV_BUILDER(4, i2c_resources[2], &platform_data[2]), I2C_DEV_BUILDER(5, i2c_resources[3], &platform_data[3]), I2C_DEV_BUILDER(6, i2c_resources[4], &platform_data[4]), I2C_DEV_BUILDER(7, i2c_resources[5], &platform_data[5]), }; /* * master_id : 0 .. 5 */ int __init pb206x_i2c_add_bus(int master_id) { struct platform_device *pdev; struct i2c_pb206x_platform_data *pdata;
}; #define I2C_DEV_BUILDER(bus_id, res, data) \ { \ .id = (bus_id), \ .name = name, \ .num_resources = ARRAY_SIZE(res), \ .resource = (res), \ .dev = { \ .platform_data = (data), \ }, \ } static u32 i2c_rate[ARRAY_SIZE(i2c_resources)]; static struct platform_device omap_i2c_devices[] = { I2C_DEV_BUILDER(1, i2c_resources[0], &i2c_rate[0]), #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) I2C_DEV_BUILDER(2, i2c_resources[1], &i2c_rate[1]), #endif #if defined(CONFIG_ARCH_OMAP34XX) I2C_DEV_BUILDER(3, i2c_resources[2], &i2c_rate[2]), #endif }; #if defined(CONFIG_ARCH_OMAP24XX) static const int omap24xx_pins[][2] = { { M19_24XX_I2C1_SCL, L15_24XX_I2C1_SDA }, { J15_24XX_I2C2_SCL, H19_24XX_I2C2_SDA }, }; #else static const int omap24xx_pins[][2] = {};