diff options
Diffstat (limited to 'recipes/linux/linux-2.6.27/ts72xx/0018-EP93xx-GPIO-I2C.patch')
-rw-r--r-- | recipes/linux/linux-2.6.27/ts72xx/0018-EP93xx-GPIO-I2C.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/recipes/linux/linux-2.6.27/ts72xx/0018-EP93xx-GPIO-I2C.patch b/recipes/linux/linux-2.6.27/ts72xx/0018-EP93xx-GPIO-I2C.patch new file mode 100644 index 0000000000..96bc2f4c00 --- /dev/null +++ b/recipes/linux/linux-2.6.27/ts72xx/0018-EP93xx-GPIO-I2C.patch @@ -0,0 +1,71 @@ +From c74060501ec81a28f288a6d82ecf532320dae361 Mon Sep 17 00:00:00 2001 +From: Matthieu Crapet <mcrapet@gmail.com> +Date: Sun, 4 Jan 2009 01:41:44 +0100 +Subject: [PATCH] EP93xx GPIO I2C +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Štetiar <ynezz@true.cz> +--- + arch/arm/mach-ep93xx/core.c | 30 ++++++++++++++++++++++++++++++ + 1 files changed, 30 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c +index 88afbe6..f689531 100644 +--- a/arch/arm/mach-ep93xx/core.c ++++ b/arch/arm/mach-ep93xx/core.c +@@ -34,6 +34,8 @@ + #include <linux/amba/serial.h> + #include <linux/dma-mapping.h> + #include <linux/leds.h> ++#include <linux/i2c.h> ++#include <linux/i2c-gpio.h> + + #include <asm/types.h> + #include <asm/setup.h> +@@ -509,6 +511,30 @@ static struct platform_device ep93xx_gpio_leds = { + } + }; + ++#ifdef CONFIG_MACH_TS72XX ++static struct i2c_gpio_platform_data ep93xx_i2c_data = { ++ .sda_pin = EP93XX_GPIO_LINE_EGPIO14, // DIO_6 (TS72XX DIO 2x8 header) ++ .sda_is_open_drain = 0, ++ .scl_pin = EP93XX_GPIO_LINE_EGPIO15, // DIO_7 (TS72XX DIO 2x8 header) ++ .scl_is_open_drain = 0, ++ .udelay = 2, ++}; ++#else ++static struct i2c_gpio_platform_data ep93xx_i2c_data = { ++ .sda_pin = EP93XX_GPIO_LINE_EEDAT, ++ .sda_is_open_drain = 0, ++ .scl_pin = EP93XX_GPIO_LINE_EECLK, ++ .scl_is_open_drain = 0, ++ .udelay = 2, ++}; ++#endif ++ ++static struct platform_device ep93xx_i2c_device = { ++ .name = "i2c-gpio", ++ .id = 0, ++ .dev.platform_data = &ep93xx_i2c_data, ++}; ++ + + extern void ep93xx_gpio_init(void); + +@@ -530,6 +556,10 @@ void __init ep93xx_init_devices(void) + amba_device_register(&uart2_device, &iomem_resource); + amba_device_register(&uart3_device, &iomem_resource); + ++ /* We have no specific I2C slave devices to register, ++ so we do not have to call i2c_register_board_info. */ ++ platform_device_register(&ep93xx_i2c_device); ++ + platform_device_register(&ep93xx_gpio_leds); + platform_device_register(&ep93xx_rtc_device); + platform_device_register(&ep93xx_ohci_device); +-- +1.6.0.4 + |