From: root Date: Thu, 9 Jun 2011 01:12:35 +0000 (+0800) Subject: A22:update gpio i2c support from phonesdk X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=54e4e740f1d54519a43d327274b1cc7ec932b95e;p=firefly-linux-kernel-4.4.55.git A22:update gpio i2c support from phonesdk --- diff --git a/arch/arm/mach-rk29/board-rk29-a22.c b/arch/arm/mach-rk29/board-rk29-a22.c old mode 100755 new mode 100644 index c3ca7ab88c00..d46125925c36 --- a/arch/arm/mach-rk29/board-rk29-a22.c +++ b/arch/arm/mach-rk29/board-rk29-a22.c @@ -58,6 +58,7 @@ #include #include #include +#include #include "devices.h" @@ -1531,31 +1532,51 @@ static struct mpu3050_platform_data mpu3050_data = { *****************************************************************************************/ static int rk29_i2c0_io_init(void) { +#ifdef CONFIG_RK29_I2C0_CONTROLLER rk29_mux_api_set(GPIO2B7_I2C0SCL_NAME, GPIO2L_I2C0_SCL); rk29_mux_api_set(GPIO2B6_I2C0SDA_NAME, GPIO2L_I2C0_SDA); +#else + rk29_mux_api_set(GPIO2B7_I2C0SCL_NAME, GPIO2L_GPIO2B7); + rk29_mux_api_set(GPIO2B6_I2C0SDA_NAME, GPIO2L_GPIO2B6); +#endif return 0; } static int rk29_i2c1_io_init(void) { +#ifdef CONFIG_RK29_I2C1_CONTROLLER rk29_mux_api_set(GPIO1A7_I2C1SCL_NAME, GPIO1L_I2C1_SCL); rk29_mux_api_set(GPIO1A6_I2C1SDA_NAME, GPIO1L_I2C1_SDA); +#else + rk29_mux_api_set(GPIO1A7_I2C1SCL_NAME, GPIO1L_GPIO1A7); + rk29_mux_api_set(GPIO1A6_I2C1SDA_NAME, GPIO1L_GPIO1A6); +#endif return 0; } static int rk29_i2c2_io_init(void) { +#ifdef CONFIG_RK29_I2C2_CONTROLLER rk29_mux_api_set(GPIO5D4_I2C2SCL_NAME, GPIO5H_I2C2_SCL); rk29_mux_api_set(GPIO5D3_I2C2SDA_NAME, GPIO5H_I2C2_SDA); +#else + rk29_mux_api_set(GPIO5D4_I2C2SCL_NAME, GPIO5H_GPIO5D4); + rk29_mux_api_set(GPIO5D3_I2C2SDA_NAME, GPIO5H_GPIO5D3); +#endif return 0; } static int rk29_i2c3_io_init(void) { +#ifdef CONFIG_RK29_I2C3_CONTROLLER rk29_mux_api_set(GPIO2B5_UART3RTSN_I2C3SCL_NAME, GPIO2L_I2C3_SCL); rk29_mux_api_set(GPIO2B4_UART3CTSN_I2C3SDA_NAME, GPIO2L_I2C3_SDA); +#else + rk29_mux_api_set(GPIO2B5_UART3RTSN_I2C3SCL_NAME, GPIO2L_GPIO2B5); + rk29_mux_api_set(GPIO2B4_UART3CTSN_I2C3SDA_NAME, GPIO2L_GPIO2B4); +#endif return 0; } - +#ifdef CONFIG_RK29_I2C0_CONTROLLER struct rk29_i2c_platform_data default_i2c0_data = { .bus_num = 0, .flags = 0, @@ -1564,16 +1585,36 @@ struct rk29_i2c_platform_data default_i2c0_data = { .mode = I2C_MODE_IRQ, .io_init = rk29_i2c0_io_init, }; - +#else +struct i2c_gpio_platform_data default_i2c0_data = { + .sda_pin = RK29_PIN2_PB6, + .scl_pin = RK29_PIN2_PB7, + .udelay = 5, // clk = 500/udelay = 100Khz + .timeout = 100,//msecs_to_jiffies(200), + .bus_num = 0, + .io_init = rk29_i2c0_io_init, +}; +#endif +#ifdef CONFIG_RK29_I2C1_CONTROLLER struct rk29_i2c_platform_data default_i2c1_data = { .bus_num = 1, .flags = 0, .slave_addr = 0xff, .scl_rate = 400*1000, - .mode = I2C_MODE_POLL, + .mode = I2C_MODE_IRQ, .io_init = rk29_i2c1_io_init, }; - +#else +struct i2c_gpio_platform_data default_i2c1_data = { + .sda_pin = RK29_PIN1_PA6, + .scl_pin = RK29_PIN1_PA7, + .udelay = 5, // clk = 500/udelay = 100Khz + .timeout = 100,//msecs_to_jiffies(200), + .bus_num = 1, + .io_init = rk29_i2c1_io_init, +}; +#endif +#ifdef CONFIG_RK29_I2C2_CONTROLLER struct rk29_i2c_platform_data default_i2c2_data = { .bus_num = 2, .flags = 0, @@ -1582,16 +1623,35 @@ struct rk29_i2c_platform_data default_i2c2_data = { .mode = I2C_MODE_IRQ, .io_init = rk29_i2c2_io_init, }; - +#else +struct i2c_gpio_platform_data default_i2c2_data = { + .sda_pin = RK29_PIN5_PD3, + .scl_pin = RK29_PIN5_PD4, + .udelay = 5, // clk = 500/udelay = 100Khz + .timeout = 100,//msecs_to_jiffies(200), + .bus_num = 2, + .io_init = rk29_i2c2_io_init, +}; +#endif +#ifdef CONFIG_RK29_I2C3_CONTROLLER struct rk29_i2c_platform_data default_i2c3_data = { .bus_num = 3, .flags = 0, .slave_addr = 0xff, .scl_rate = 400*1000, - .mode = I2C_MODE_POLL, + .mode = I2C_MODE_IRQ, .io_init = rk29_i2c3_io_init, }; - +#else +struct i2c_gpio_platform_data default_i2c3_data = { + .sda_pin = RK29_PIN5_PB5, + .scl_pin = RK29_PIN5_PB4, + .udelay = 5, // clk = 500/udelay = 100Khz + .timeout = 100,//msecs_to_jiffies(200), + .bus_num = 3, + .io_init = rk29_i2c3_io_init, +}; +#endif #ifdef CONFIG_I2C0_RK29 static struct i2c_board_info __initdata board_i2c0_devices[] = { #if defined (CONFIG_RK1000_CONTROL)