瀏覽代碼

[AVR32] Wire up i2c-gpio on the ATNGW100 board

The NGW100 has a board controller which is hooked up to the TWI lines
on AP7000. Since the TWI driver isn't in mainline, use the i2c-gpio
driver in the mean time.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Haavard Skinnemoen 18 年之前
父節點
當前提交
54bb69e250
共有 1 個文件被更改,包括 18 次插入0 次删除
  1. 18 0
      arch/avr32/boards/atngw100/setup.c

+ 18 - 0
arch/avr32/boards/atngw100/setup.c

@@ -9,6 +9,7 @@
  */
  */
 #include <linux/clk.h>
 #include <linux/clk.h>
 #include <linux/etherdevice.h>
 #include <linux/etherdevice.h>
+#include <linux/i2c-gpio.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <linux/linkage.h>
 #include <linux/linkage.h>
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
@@ -123,6 +124,19 @@ static struct platform_device ngw_gpio_leds = {
 	}
 	}
 };
 };
 
 
+static struct i2c_gpio_platform_data i2c_gpio_data = {
+	.sda_pin	= GPIO_PIN_PA(6),
+	.scl_pin	= GPIO_PIN_PA(7),
+};
+
+static struct platform_device i2c_gpio_device = {
+	.name		= "i2c-gpio",
+	.id		= 0,
+	.dev		= {
+		.platform_data	= &i2c_gpio_data,
+	},
+};
+
 static int __init atngw100_init(void)
 static int __init atngw100_init(void)
 {
 {
 	unsigned	i;
 	unsigned	i;
@@ -147,6 +161,10 @@ static int __init atngw100_init(void)
 	}
 	}
 	platform_device_register(&ngw_gpio_leds);
 	platform_device_register(&ngw_gpio_leds);
 
 
+	at32_select_gpio(i2c_gpio_data.sda_pin, 0);
+	at32_select_gpio(i2c_gpio_data.scl_pin, 0);
+	platform_device_register(&i2c_gpio_device);
+
 	return 0;
 	return 0;
 }
 }
 postcore_initcall(atngw100_init);
 postcore_initcall(atngw100_init);