#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>
},
};
+/*****************************************************************************************
+ * 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
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
+++ /dev/null
-/* 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));
-}