Add I2C gpio platform data.

This is useful for the Carambola dev board (and maybe others if they
use I2C).

Signed-off-by: Tobias Diedrich <ranma+open...@tdiedrich.de>

Index: a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c
===================================================================
--- b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c       
2013-03-31 23:21:42.992809485 +0200
+++ a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c       
2013-03-31 23:21:50.142819472 +0200
@@ -12,6 +12,7 @@
 #include <linux/platform_device.h>
 #include <linux/err.h>
 #include <linux/clk.h>
+#include <linux/i2c-gpio.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/physmap.h>
 #include <linux/spi/spi.h>
@@ -260,6 +261,33 @@
        platform_device_register(&rt305x_wdt_device);
 }
 
+static struct i2c_gpio_platform_data rt305x_i2c_pdata = {
+       .sda_pin                = RT305X_GPIO_I2C_SD,
+       .scl_pin                = RT305X_GPIO_I2C_SCLK,
+       .sda_is_open_drain      = 0,
+       .scl_is_open_drain      = 0,
+       .udelay                 = 10,
+};
+
+static struct platform_device rt305x_i2c_device = {
+       .name           = "i2c-gpio",
+       .id             = 0,
+       .dev            = {
+               .platform_data = &rt305x_i2c_pdata,
+       },
+};
+
+void __init rt305x_register_i2c(void)
+{
+       /*
+        * There is even a dedicated i2c controller block, but it is probably
+        * not worth implementing support for the minimal speed gain.
+        * Just use the generic linux bitbanging and register the necessary
+        * platform data for the default I2C pin mapping the HW would use.
+        */
+       platform_device_register(&rt305x_i2c_device);
+}
+
 static struct resource rt305x_spi_resources[] = {
        {
                .flags  = IORESOURCE_MEM,
Index: a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h
===================================================================
--- b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h       
2013-03-31 23:21:42.992809485 +0200
+++ a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h       
2013-03-31 23:21:42.982809471 +0200
@@ -23,6 +23,7 @@
 
 void rt305x_register_flash(unsigned int id);
 void rt305x_register_ethernet(void);
+void rt305x_register_i2c(void);
 void rt305x_register_wifi(void);
 void rt305x_register_wdt(void);
 void rt305x_register_spi(struct spi_board_info *info, int n);
Index: a/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-carambola.c
===================================================================
--- b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-carambola.c        
2013-03-31 23:21:42.992809485 +0200
+++ a/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-carambola.c        
2013-03-31 23:21:42.982809471 +0200
@@ -36,6 +36,7 @@
        rt305x_register_wifi();
        rt305x_register_wdt();
        rt305x_register_usb();
+       rt305x_register_i2c();  /* platform data for i2c-gpio */
 }
 
 MIPS_MACHINE(RAMIPS_MACH_CARAMBOLA, "CARAMBOLA", "8devices Carambola",

-- 
Tobias                                          PGP: http://8ef7ddba.uguu.de
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to