diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-11-01 16:07:22 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-15 20:20:29 +0100 |
commit | dc8b0c0f0203f67a76c4432afc043412b9d3ebaf (patch) | |
tree | bfa6988d8b2bb7e1944258a936045458ff4b7bb0 /arch/arm/mach-at91/at91rm9200_devices.c | |
parent | 28caf418499dc137f5c946ce23b7a1ba7630151d (diff) | |
download | barebox-dc8b0c0f0203f67a76c4432afc043412b9d3ebaf.tar.gz barebox-dc8b0c0f0203f67a76c4432afc043412b9d3ebaf.tar.xz |
at91rm9200: add i2c support
use i2c-gpio as the hw ip is broken
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-at91/at91rm9200_devices.c')
-rw-r--r-- | arch/arm/mach-at91/at91rm9200_devices.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 8cb2f57751..1a2d0fdaba 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c @@ -18,6 +18,7 @@ #include <mach/gpio.h> #include <mach/io.h> #include <mach/at91rm9200_mc.h> +#include <i2c/i2c-gpio.h> #include <sizes.h> #include "generic.h" @@ -154,6 +155,33 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) void __init at91_add_device_nand(struct atmel_nand_data *data) {} #endif +#if defined(CONFIG_I2C_GPIO) +static struct i2c_gpio_platform_data pdata_i2c = { + .sda_pin = AT91_PIN_PA25, + .sda_is_open_drain = 1, + .scl_pin = AT91_PIN_PA26, + .scl_is_open_drain = 1, + .udelay = 5, /* ~100 kHz */ +}; + +void at91_add_device_i2c(short i2c_id, struct i2c_board_info *devices, int nr_devices) +{ + struct i2c_gpio_platform_data *pdata = &pdata_i2c; + + i2c_register_board_info(0, devices, nr_devices); + + at91_set_GPIO_periph(pdata->sda_pin, 1); /* TWD (SDA) */ + at91_set_multi_drive(pdata->sda_pin, 1); + + at91_set_GPIO_periph(pdata->scl_pin, 1); /* TWCK (SCL) */ + at91_set_multi_drive(pdata->scl_pin, 1); + + add_generic_device_res("i2c-gpio", 0, NULL, 0, pdata); +} +#else +void at91_add_device_i2c(short i2c_id, struct i2c_board_info *devices, int nr_devices) {} +#endif + /* -------------------------------------------------------------------- * SPI * -------------------------------------------------------------------- */ |