Browse Source

ARM i.MX53 enable i2c on EVK board

add i2c platform data and clock

Signed-off-by: Yong Shen <yong.shen@freescale.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Yong Shen 15 years ago
parent
commit
0d7671ee66

+ 1 - 0
arch/arm/mach-mx5/Kconfig

@@ -124,6 +124,7 @@ config MACH_MX53_EVK
 	bool "Support MX53 EVK platforms"
 	bool "Support MX53 EVK platforms"
 	select SOC_IMX53
 	select SOC_IMX53
 	select IMX_HAVE_PLATFORM_IMX_UART
 	select IMX_HAVE_PLATFORM_IMX_UART
+	select IMX_HAVE_PLATFORM_IMX_I2C
 	help
 	help
 	  Include support for MX53 EVK platform. This includes specific
 	  Include support for MX53 EVK platform. This includes specific
 	  configurations for the board and its peripherals.
 	  configurations for the board and its peripherals.

+ 7 - 0
arch/arm/mach-mx5/board-mx53_evk.c

@@ -65,6 +65,10 @@ static inline void mx53_evk_init_uart(void)
 	imx53_add_imx_uart(2, &mx53_evk_uart_pdata);
 	imx53_add_imx_uart(2, &mx53_evk_uart_pdata);
 }
 }
 
 
+static const struct imxi2c_platform_data mx53_evk_i2c_data __initconst = {
+	.bitrate = 100000,
+};
+
 static inline void mx53_evk_fec_reset(void)
 static inline void mx53_evk_fec_reset(void)
 {
 {
 	int ret;
 	int ret;
@@ -92,6 +96,9 @@ static void __init mx53_evk_board_init(void)
 	mx53_evk_init_uart();
 	mx53_evk_init_uart();
 	mx53_evk_fec_reset();
 	mx53_evk_fec_reset();
 	imx53_add_fec(&mx53_evk_fec_pdata);
 	imx53_add_fec(&mx53_evk_fec_pdata);
+
+	imx53_add_imx_i2c(0, &mx53_evk_i2c_data);
+	imx53_add_imx_i2c(1, &mx53_evk_i2c_data);
 }
 }
 
 
 static void __init mx53_evk_timer_init(void)
 static void __init mx53_evk_timer_init(void)

+ 2 - 0
arch/arm/mach-mx5/clock-mx51-mx53.c

@@ -1326,6 +1326,8 @@ static struct clk_lookup mx53_lookups[] = {
 	_REGISTER_CLOCK(NULL, "gpt", gpt_clk)
 	_REGISTER_CLOCK(NULL, "gpt", gpt_clk)
 	_REGISTER_CLOCK("fec.0", NULL, fec_clk)
 	_REGISTER_CLOCK("fec.0", NULL, fec_clk)
 	_REGISTER_CLOCK(NULL, "iim_clk", iim_clk)
 	_REGISTER_CLOCK(NULL, "iim_clk", iim_clk)
+	_REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk)
+	_REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk)
 };
 };
 
 
 static void clk_tree_init(void)
 static void clk_tree_init(void)

+ 5 - 0
arch/arm/mach-mx5/devices-imx53.h

@@ -15,3 +15,8 @@ extern const struct imx_fec_data imx53_fec_data __initconst;
 extern const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst;
 extern const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst;
 #define imx53_add_imx_uart(id, pdata)	\
 #define imx53_add_imx_uart(id, pdata)	\
 	imx_add_imx_uart_1irq(&imx53_imx_uart_data[id], pdata)
 	imx_add_imx_uart_1irq(&imx53_imx_uart_data[id], pdata)
+
+
+extern const struct imx_imx_i2c_data imx53_imx_i2c_data[] __initconst;
+#define imx53_add_imx_i2c(id, pdata)	\
+	imx_add_imx_i2c(&imx53_imx_i2c_data[id], pdata)

+ 9 - 0
arch/arm/plat-mxc/devices/platform-imx-i2c.c

@@ -78,6 +78,15 @@ const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst = {
 };
 };
 #endif /* ifdef CONFIG_SOC_IMX51 */
 #endif /* ifdef CONFIG_SOC_IMX51 */
 
 
+#ifdef CONFIG_SOC_IMX53
+const struct imx_imx_i2c_data imx53_imx_i2c_data[] __initconst = {
+#define imx53_imx_i2c_data_entry(_id, _hwid)				\
+	imx_imx_i2c_data_entry(MX53, _id, _hwid, SZ_4K)
+	imx53_imx_i2c_data_entry(0, 1),
+	imx53_imx_i2c_data_entry(1, 2),
+};
+#endif /* ifdef CONFIG_SOC_IMX51 */
+
 struct platform_device *__init imx_add_imx_i2c(
 struct platform_device *__init imx_add_imx_i2c(
 		const struct imx_imx_i2c_data *data,
 		const struct imx_imx_i2c_data *data,
 		const struct imxi2c_platform_data *pdata)
 		const struct imxi2c_platform_data *pdata)