1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- diff -Naur linux-4.7.3/arch/avr32/boards/grasshopper/Kconfig linux-4.7.3.grasshopper/arch/avr32/boards/grasshopper/Kconfig
- --- linux-4.7.3/arch/avr32/boards/grasshopper/Kconfig 2016-09-20 11:29:35.780351249 +0200
- +++ linux-4.7.3.grasshopper/arch/avr32/boards/grasshopper/Kconfig 2016-09-20 11:39:58.981762577 +0200
- @@ -44,4 +44,9 @@
- depends on BOARD_GRASSHOPPER_MMC
- default n
-
- +config BOARD_GRASSHOPPER_I2C
- + bool "Enable I2C interface"
- + depends on I2C && I2C_GPIO
- + default y
- +
- endif # BOARD_GRASSHOPPER
- 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-20 11:29:35.781351262 +0200
- +++ linux-4.7.3.grasshopper/arch/avr32/boards/grasshopper/setup.c 2016-09-20 11:32:21.270587433 +0200
- @@ -129,6 +129,28 @@
- };
- #endif
-
- +/* I2C/TWI */
- +#ifdef CONFIG_BOARD_GRASSHOPPER_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_BOARD_GRASSHOPPER_MMC
- 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_BOARD_GRASSHOPPER_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_BOARD_GRASSHOPPER_MMC
- at32_add_device_mci(0, &mci0_data); /* MMC/SD */
- #endif
|