diff options
author | Mario Haustein <mario.haustein@hrz.tu-chemnitz.de> | 2016-09-19 18:15:32 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2016-09-20 04:56:33 +0200 |
commit | 83f594381aa1f7b8118620e7e93bb00fc038e7cc (patch) | |
tree | 2220ef706a6c4703efc66cb8a84fa0dfd8806111 | |
parent | 27fe296ac47887da17fa2e5a2c095a81322cb3ea (diff) |
add I2C support for AVR32 grasshopper board
Signed-off-by: Mario Haustein <mario.haustein@hrz.tu-chemnitz.de>
-rw-r--r-- | target/avr32/grasshopper/patches/4.7.3/0003-grasshopper-enable-i2c-gpio.patch | 55 | ||||
-rw-r--r-- | target/linux/config/Config.in.i2c | 1 |
2 files changed, 56 insertions, 0 deletions
diff --git a/target/avr32/grasshopper/patches/4.7.3/0003-grasshopper-enable-i2c-gpio.patch b/target/avr32/grasshopper/patches/4.7.3/0003-grasshopper-enable-i2c-gpio.patch new file mode 100644 index 000000000..da81cac3a --- /dev/null +++ b/target/avr32/grasshopper/patches/4.7.3/0003-grasshopper-enable-i2c-gpio.patch @@ -0,0 +1,55 @@ +diff -Naur linux-4.7.3/arch/avr32/boards/grasshopper/setup.c linux-4.7.3.grasshopper/arch/avr32/boards/grasshopper/setup.c +--- linux-4.7.3/arch/avr32/boards/grasshopper/setup.c 2016-09-14 10:48:53.403638569 +0200 ++++ linux-4.7.3.grasshopper/arch/avr32/boards/grasshopper/setup.c 2016-09-14 11:40:15.735513299 +0200 +@@ -129,6 +129,28 @@ + }; + #endif + ++/* I2C/TWI */ ++#ifdef CONFIG_I2C ++static struct i2c_gpio_platform_data i2c_gpio_data = { ++ .sda_pin = GPIO_PIN_PA(6), ++ .scl_pin = GPIO_PIN_PA(7), ++ .sda_is_open_drain = 1, ++ .scl_is_open_drain = 1, ++ .udelay = 2, /* close to 100 kHz */ ++}; ++ ++static struct platform_device i2c_gpio_device = { ++ .name = "i2c-gpio", ++ .id = 0, ++ .dev = { ++ .platform_data = &i2c_gpio_data, ++ }, ++}; ++ ++static struct i2c_board_info i2c_info[] = { ++}; ++#endif ++ + /* MCI */ + #ifdef CONFIG_MMC_ATMELMCI + static struct mci_platform_data __initdata mci0_data = { +@@ -168,6 +190,22 @@ + ATMEL_LCDC_PRI_CONTROL | ATMEL_LCDC_PRI_24BIT); + #endif + ++ // I2C / TWI ++#ifdef CONFIG_I2C ++ /* all these i2c/smbus pins should have external pullups for ++ * open-drain sharing among all I2C devices. SDA and SCL do; ++ * PB28/EXTINT3 doesn't; it should be SMBALERT# (for PMBus), ++ * but it's not available off-board. ++ */ ++ at32_select_periph(GPIO_PIOB_BASE, 1 << 28, 0, AT32_GPIOF_PULLUP); ++ at32_select_gpio(i2c_gpio_data.sda_pin, ++ AT32_GPIOF_MULTIDRV | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); ++ at32_select_gpio(i2c_gpio_data.scl_pin, ++ AT32_GPIOF_MULTIDRV | AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH); ++ platform_device_register(&i2c_gpio_device); ++ i2c_register_board_info(0, i2c_info, ARRAY_SIZE(i2c_info)); ++#endif ++ + #ifdef CONFIG_MMC_ATMELMCI + // at32_add_device_mci(0, &mci0_data); /* MMC/SD */ + #endif diff --git a/target/linux/config/Config.in.i2c b/target/linux/config/Config.in.i2c index 60fe49bee..1c9cc531c 100644 --- a/target/linux/config/Config.in.i2c +++ b/target/linux/config/Config.in.i2c @@ -23,6 +23,7 @@ config ADK_KERNEL_I2C_GPIO select ADK_KERNEL_I2C_BOARDINFO select ADK_KERNEL_I2C_ALGOBIT default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2 + default y if ADK_TARGET_SYSTEM_GRASSHOPPER help config ADK_KERNEL_I2C_BCM2708 |