]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
ARM: S5PV310: Add I2C channel 0, 1 and 2 support
authorKyungmin Park <kyungmin.park@samsung.com>
Thu, 5 Aug 2010 08:10:24 +0000 (17:10 +0900)
committerKukjin Kim <kgene.kim@samsung.com>
Thu, 5 Aug 2010 09:32:42 +0000 (18:32 +0900)
This patch adds configuration of proper mux pins for support
I2C channel 0, 1, and 2 on S5PV310/S5PC210.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
[kgene.kim@samsung.com: coding-style and minor comment fixes]
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
arch/arm/mach-s5pv310/Kconfig
arch/arm/mach-s5pv310/Makefile
arch/arm/mach-s5pv310/setup-i2c0.c
arch/arm/mach-s5pv310/setup-i2c1.c [new file with mode: 0644]
arch/arm/mach-s5pv310/setup-i2c2.c [new file with mode: 0644]

index 24ef3cd5b4bcf8d2f5850530d6369c0da8f5cd7c..f9b18923438744460b13b384184232926c138b71 100644 (file)
@@ -15,6 +15,16 @@ config CPU_S5PV310
        help
          Enable S5PV310 CPU support
 
+config S5PV310_SETUP_I2C1
+       bool
+       help
+         Common setup code for i2c bus 1.
+
+config S5PV310_SETUP_I2C2
+       bool
+       help
+         Common setup code for i2c bus 2.
+
 # machine support
 
 config MACH_SMDKV310
index 56e7693ad861807a1fdc398a3ab2804a0ba60c51..967e2c8f7c0b33fe7f04a9307e6e77084d7c2c8c 100644 (file)
@@ -22,3 +22,8 @@ obj-$(CONFIG_HOTPLUG_CPU)     += hotplug.o
 # machine support
 
 obj-$(CONFIG_MACH_SMDKV310)    += mach-smdkv310.o
+
+# device support
+
+obj-$(CONFIG_S5PV310_SETUP_I2C1)       += setup-i2c1.o
+obj-$(CONFIG_S5PV310_SETUP_I2C2)       += setup-i2c2.o
index d4f5a8106946200e8533043cde2b15b5c6f15f93..436712807383e43c4cd073b13dbe61ec01be2039 100644 (file)
@@ -1,4 +1,5 @@
-/* linux/arch/arm/mach-s5pv210/setup-i2c0.c
+/*
+ * linux/arch/arm/mach-s5pv310/setup-i2c0.c
  *
  * Copyright (c) 2009-2010 Samsung Electronics Co., Ltd.
  *             http://www.samsung.com/
 
 struct platform_device; /* don't need the contents */
 
+#include <linux/gpio.h>
+#include <plat/iic.h>
+#include <plat/gpio-cfg.h>
+
 void s3c_i2c0_cfg_gpio(struct platform_device *dev)
 {
-/* will be implemented later */
+       s3c_gpio_cfgpin(S5PV310_GPD1(0), S3C_GPIO_SFN(2));
+       s3c_gpio_setpull(S5PV310_GPD1(0), S3C_GPIO_PULL_UP);
+       s3c_gpio_cfgpin(S5PV310_GPD1(1), S3C_GPIO_SFN(2));
+       s3c_gpio_setpull(S5PV310_GPD1(1), S3C_GPIO_PULL_UP);
 }
diff --git a/arch/arm/mach-s5pv310/setup-i2c1.c b/arch/arm/mach-s5pv310/setup-i2c1.c
new file mode 100644 (file)
index 0000000..1ecd5bc
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * linux/arch/arm/mach-s5pv310/setup-i2c1.c
+ *
+ * Copyright (C) 2010 Samsung Electronics Co., Ltd.
+ *
+ * I2C1 GPIO configuration.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+struct platform_device; /* don't need the contents */
+
+#include <linux/gpio.h>
+#include <plat/iic.h>
+#include <plat/gpio-cfg.h>
+
+void s3c_i2c1_cfg_gpio(struct platform_device *dev)
+{
+       s3c_gpio_cfgpin(S5PV310_GPD1(2), S3C_GPIO_SFN(2));
+       s3c_gpio_setpull(S5PV310_GPD1(2), S3C_GPIO_PULL_UP);
+       s3c_gpio_cfgpin(S5PV310_GPD1(3), S3C_GPIO_SFN(2));
+       s3c_gpio_setpull(S5PV310_GPD1(3), S3C_GPIO_PULL_UP);
+}
diff --git a/arch/arm/mach-s5pv310/setup-i2c2.c b/arch/arm/mach-s5pv310/setup-i2c2.c
new file mode 100644 (file)
index 0000000..4c0d8de
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * linux/arch/arm/mach-s5pv310/setup-i2c2.c
+ *
+ * Copyright (c) 2009-2010 Samsung Electronics Co., Ltd.
+ *
+ * I2C2 GPIO configuration.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+struct platform_device; /* don't need the contents */
+
+#include <linux/gpio.h>
+#include <plat/iic.h>
+#include <plat/gpio-cfg.h>
+
+void s3c_i2c2_cfg_gpio(struct platform_device *dev)
+{
+       s3c_gpio_cfgpin(S5PV310_GPA0(6), S3C_GPIO_SFN(3));
+       s3c_gpio_setpull(S5PV310_GPA0(6), S3C_GPIO_PULL_UP);
+       s3c_gpio_cfgpin(S5PV310_GPA0(7), S3C_GPIO_SFN(3));
+       s3c_gpio_setpull(S5PV310_GPA0(7), S3C_GPIO_PULL_UP);
+}