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>
This commit is contained in:
parent
28caf41849
commit
dc8b0c0f02
|
@ -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
|
||||
* -------------------------------------------------------------------- */
|
||||
|
|
Loading…
Reference in New Issue