mod i2c
author柯飞雄 <kfx@rock-chips.com>
Wed, 12 May 2010 09:57:29 +0000 (09:57 +0000)
committer黄涛 <huangtao@rock-chips.com>
Mon, 21 Jun 2010 05:34:51 +0000 (13:34 +0800)
arch/arm/mach-rk2818/board-midsdk.c
arch/arm/mach-rk2818/i2c.c [deleted file]

index 27edba489a3df34afc85a974ac79f72bc059457c..bc6e3c340b064e02c2c778215a0ae454b7673f8e 100644 (file)
@@ -32,7 +32,6 @@
 #include <mach/rk2818_iomap.h>
 #include <mach/iomux.h>
 #include <mach/gpio.h>
-#include <mach/i2c.h>
 
 #include <linux/mtd/nand.h>
 #include <linux/mtd/partitions.h>
@@ -140,6 +139,119 @@ static struct map_desc rk2818_io_desc[] __initdata = {
        },
 };
 
+/*****************************************************************************************
+ * I2C devices
+ *author: kfx
+ *****************************************************************************************/
+static struct rk2818_i2c_platform_data default_i2c0_data __initdata = { 
+       .bus_num    = 0,
+       .flags      = 0,
+       .slave_addr = 0xff,
+       .scl_rate  = 400*1000,
+       .clk_id  = "i2c0",
+};
+static struct rk2818_i2c_platform_data default_i2c1_data __initdata = { 
+       .bus_num    = 1,
+       .flags      = 0,
+       .slave_addr = 0xff,
+       .scl_rate  = 400*1000,
+       .clk_id  = "i2c1",
+};
+
+static struct i2c_board_info __initdata board_i2c0_devices[] = {
+#if defined (CONFIG_RK1000_CONTROL)
+       {
+               .type                   = "rk1000_control",
+               .addr           = 0x40,
+               .flags                  = 0,
+       },
+#endif
+
+#if defined (CONFIG_RK1000_TVOUT)
+       {
+               .type                   = "rk1000_tvout",
+               .addr           = 0x42,
+               .flags                  = 0,
+       },
+#endif
+#if defined (CONFIG_SND_SOC_RK1000)
+       {
+               .type                   = "rk1000_i2c_codec",
+               .addr           = 0x60,
+               .flags                  = 0,
+       },
+#endif
+       {}
+};
+static struct i2c_board_info __initdata board_i2c1_devices[] = {
+#if defined (CONFIG_RTC_HYM8563)
+       {
+               .type                   = "rtc_hym8563",
+               .addr           = 0x51,
+               .flags                  = 0,
+       },
+#endif
+#if defined (CONFIG_FM_QN8006)
+       {
+               .type                   = "fm_qn8006",
+               .addr           = 0x2b, 
+               .flags                  = 0,
+       },
+#endif
+       {}
+};
+
+static void rk2818_i2c0_cfg_gpio(struct platform_device *dev)
+{
+       rk2818_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_I2C0);
+}
+
+static void rk2818_i2c1_cfg_gpio(struct platform_device *dev)
+{
+       rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, IOMUXA_I2C1);
+}
+
+
+static void __init rk2818_i2c0_set_platdata(struct rk2818_i2c_platform_data *pd)
+{
+       struct rk2818_i2c_platform_data *npd;
+
+       if (!pd)
+               pd = &default_i2c0_data;
+
+       npd = kmemdup(pd, sizeof(struct rk2818_i2c_platform_data), GFP_KERNEL);
+       if (!npd)
+               printk(KERN_ERR "%s: no memory for platform data\n", __func__);
+       else if (!npd->cfg_gpio)
+               npd->cfg_gpio = rk2818_i2c0_cfg_gpio;
+
+       rk2818_device_i2c0.dev.platform_data = npd;
+}
+static void __init rk2818_i2c1_set_platdata(struct rk2818_i2c_platform_data *pd)
+{
+       struct rk2818_i2c_platform_data *npd;
+
+       if (!pd)
+               pd = &default_i2c1_data;
+
+       npd = kmemdup(pd, sizeof(struct rk2818_i2c_platform_data), GFP_KERNEL);
+       if (!npd)
+               printk(KERN_ERR "%s: no memory for platform data\n", __func__);
+       else if (!npd->cfg_gpio)
+               npd->cfg_gpio = rk2818_i2c1_cfg_gpio;
+
+       rk2818_device_i2c1.dev.platform_data = npd;
+}
+
+static void __init rk2818_i2c_board_init(void)
+{
+       rk2818_i2c0_set_platdata(NULL);
+       rk2818_i2c1_set_platdata(NULL);
+       i2c_register_board_info(0, board_i2c0_devices,
+                       ARRAY_SIZE(board_i2c0_devices));
+       i2c_register_board_info(1, board_i2c1_devices,
+                       ARRAY_SIZE(board_i2c1_devices));
+}
 /*****************************************************************************************
  * SPI devices
  *author: lhh
@@ -179,6 +291,7 @@ static void __init machine_rk2818_init_irq(void)
 
 static void __init machine_rk2818_board_init(void)
 {
+       rk2818_i2c_board_init();
        platform_add_devices(devices, ARRAY_SIZE(devices));
        spi_register_board_info(board_spi_devices, ARRAY_SIZE(board_spi_devices));
        rk2818_mux_api_set(GPIOB4_SPI0CS0_MMC0D4_NAME,IOMUXA_GPIO0_B4); //IOMUXA_SPI0_CSN0);//use for gpio SPI CS0
diff --git a/arch/arm/mach-rk2818/i2c.c b/arch/arm/mach-rk2818/i2c.c
deleted file mode 100755 (executable)
index 2a6a438..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/* arch/arm/mach-rk2818/i2c.c
- *
- * Copyright (C) 2010 ROCKCHIP, Inc.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- */
-
-#include <linux/kernel.h>
-#include <linux/i2c.h>
-#include <linux/platform_device.h>
-#include <mach/i2c.h>
-#include <mach/iomux.h>
-
-#include <mach/irqs.h>
-#include "devices.h"
-
-/* i2c0 */
-static struct rk2818_i2c_platform_data default_i2c0_data __initdata = { 
-       .bus_num    = 0,
-       .flags      = 0,
-       .slave_addr = 0xff,
-       .scl_rate  = 400*1000,
-       .clk_id  = "i2c0",
-};
-/* i2c1 */
-static struct rk2818_i2c_platform_data default_i2c1_data __initdata = { 
-       .bus_num    = 1,
-       .flags      = 0,
-       .slave_addr = 0xff,
-       .scl_rate  = 400*1000,
-       .clk_id  = "i2c1",
-};
-
-static struct i2c_board_info __initdata board_i2c0_devices[] = {
-#if defined (CONFIG_RK1000_CONTROL)
-       {
-               .type                   = "rk1000_control",
-               .addr           = 0x40,
-               .flags                  = 0,
-       },
-#endif
-
-#if defined (CONFIG_RK1000_TVOUT)
-       {
-               .type                   = "rk1000_tvout",
-               .addr           = 0x42,
-               .flags                  = 0,
-       },
-#endif
-#if defined (CONFIG_SND_SOC_RK1000)
-       {
-               .type                   = "rk1000_i2c_codec",
-               .addr           = 0x60,
-               .flags                  = 0,
-       },
-#endif
-       {}
-};
-static struct i2c_board_info __initdata board_i2c1_devices[] = {
-#if defined (CONFIG_RTC_HYM8563)
-       {
-               .type                   = "rtc_hym8563",
-               .addr           = 0x51,
-               .flags                  = 0,
-       },
-#endif
-#if defined (CONFIG_FM_QN8006)
-       {
-               .type                   = "fm_qn8006",
-               .addr           = 0x2b, 
-               .flags                  = 0,
-       },
-#endif
-       {}
-};
-
-static void rk2818_i2c0_cfg_gpio(struct platform_device *dev)
-{
-       rk2818_mux_api_set(GPIOE_I2C0_SEL_NAME, IOMUXA_I2C0);
-}
-
-static void rk2818_i2c1_cfg_gpio(struct platform_device *dev)
-{
-       rk2818_mux_api_set(GPIOE_U1IR_I2C1_NAME, IOMUXA_I2C1);
-}
-
-
-static void __init rk2818_i2c0_set_platdata(struct rk2818_i2c_platform_data *pd)
-{
-       struct rk2818_i2c_platform_data *npd;
-
-       if (!pd)
-               pd = &default_i2c0_data;
-
-       npd = kmemdup(pd, sizeof(struct rk2818_i2c_platform_data), GFP_KERNEL);
-       if (!npd)
-               printk(KERN_ERR "%s: no memory for platform data\n", __func__);
-       else if (!npd->cfg_gpio)
-               npd->cfg_gpio = rk2818_i2c0_cfg_gpio;
-
-       rk2818_device_i2c0.dev.platform_data = npd;
-}
-static void __init rk2818_i2c1_set_platdata(struct rk2818_i2c_platform_data *pd)
-{
-       struct rk2818_i2c_platform_data *npd;
-
-       if (!pd)
-               pd = &default_i2c1_data;
-
-       npd = kmemdup(pd, sizeof(struct rk2818_i2c_platform_data), GFP_KERNEL);
-       if (!npd)
-               printk(KERN_ERR "%s: no memory for platform data\n", __func__);
-       else if (!npd->cfg_gpio)
-               npd->cfg_gpio = rk2818_i2c1_cfg_gpio;
-
-       rk2818_device_i2c1.dev.platform_data = npd;
-}
-
-void __init rk2818_i2c_board_init(void)
-{
-       rk2818_i2c0_set_platdata(NULL);
-       rk2818_i2c1_set_platdata(NULL);
-       i2c_register_board_info(0, board_i2c0_devices,
-                       ARRAY_SIZE(board_i2c0_devices));
-       i2c_register_board_info(1, board_i2c1_devices,
-                       ARRAY_SIZE(board_i2c1_devices));
-}