Exemplo n.º 1
0
Arquivo: i2c.c Projeto: AllenDou/linux
#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())
Exemplo n.º 2
0
}

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;
Exemplo n.º 3
0
};

#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] = {};