Commit f42b2f606161d0051c14ccaccdc7fdef4bb2fc96
Committed by
Stefano Babic
1 parent
0f3effb99f
Exists in
v2017.01-smarct4x
and in
37 other branches
arm: mx6: cm_fx6: add i2c support
Add support for all 3 I2C busses on Compulab CM-FX6 CoM. Cc: Igor Grinberg <grinberg@compulab.co.il> Cc: Stefano Babic <sbabic@denx.de> Cc: Tom Rini <trini@ti.com> Acked-by: Igor Grinberg <grinberg@compulab.co.il> Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
Showing 2 changed files with 53 additions and 0 deletions Side-by-side Diff
board/compulab/cm_fx6/cm_fx6.c
... | ... | @@ -16,12 +16,53 @@ |
16 | 16 | #include <asm/arch/crm_regs.h> |
17 | 17 | #include <asm/arch/sys_proto.h> |
18 | 18 | #include <asm/arch/iomux.h> |
19 | +#include <asm/imx-common/mxc_i2c.h> | |
19 | 20 | #include <asm/io.h> |
20 | 21 | #include <asm/gpio.h> |
21 | 22 | #include "common.h" |
22 | 23 | |
23 | 24 | DECLARE_GLOBAL_DATA_PTR; |
24 | 25 | |
26 | +#ifdef CONFIG_SYS_I2C_MXC | |
27 | +#define I2C_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ | |
28 | + PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \ | |
29 | + PAD_CTL_ODE | PAD_CTL_SRE_FAST) | |
30 | + | |
31 | +I2C_PADS(i2c0_pads, | |
32 | + PAD_EIM_D21__I2C1_SCL | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
33 | + PAD_EIM_D21__GPIO3_IO21 | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
34 | + IMX_GPIO_NR(3, 21), | |
35 | + PAD_EIM_D28__I2C1_SDA | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
36 | + PAD_EIM_D28__GPIO3_IO28 | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
37 | + IMX_GPIO_NR(3, 28)); | |
38 | + | |
39 | +I2C_PADS(i2c1_pads, | |
40 | + PAD_KEY_COL3__I2C2_SCL | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
41 | + PAD_KEY_COL3__GPIO4_IO12 | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
42 | + IMX_GPIO_NR(4, 12), | |
43 | + PAD_KEY_ROW3__I2C2_SDA | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
44 | + PAD_KEY_ROW3__GPIO4_IO13 | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
45 | + IMX_GPIO_NR(4, 13)); | |
46 | + | |
47 | +I2C_PADS(i2c2_pads, | |
48 | + PAD_GPIO_3__I2C3_SCL | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
49 | + PAD_GPIO_3__GPIO1_IO03 | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
50 | + IMX_GPIO_NR(1, 3), | |
51 | + PAD_GPIO_6__I2C3_SDA | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
52 | + PAD_GPIO_6__GPIO1_IO06 | MUX_PAD_CTRL(I2C_PAD_CTRL), | |
53 | + IMX_GPIO_NR(1, 6)); | |
54 | + | |
55 | + | |
56 | +static void cm_fx6_setup_i2c(void) | |
57 | +{ | |
58 | + setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, I2C_PADS_INFO(i2c0_pads)); | |
59 | + setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, I2C_PADS_INFO(i2c1_pads)); | |
60 | + setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, I2C_PADS_INFO(i2c2_pads)); | |
61 | +} | |
62 | +#else | |
63 | +static void cm_fx6_setup_i2c(void) { } | |
64 | +#endif | |
65 | + | |
25 | 66 | #ifdef CONFIG_USB_EHCI_MX6 |
26 | 67 | #define WEAK_PULLDOWN (PAD_CTL_PUS_100K_DOWN | \ |
27 | 68 | PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | \ |
... | ... | @@ -259,6 +300,7 @@ |
259 | 300 | { |
260 | 301 | gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100; |
261 | 302 | cm_fx6_setup_gpmi_nand(); |
303 | + cm_fx6_setup_i2c(); | |
262 | 304 | |
263 | 305 | return 0; |
264 | 306 | } |
include/configs/cm_fx6.h
... | ... | @@ -210,6 +210,17 @@ |
210 | 210 | #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 |
211 | 211 | #define CONFIG_EHCI_HCD_INIT_AFTER_RESET /* For OTG port */ |
212 | 212 | |
213 | +/* I2C */ | |
214 | +#define CONFIG_CMD_I2C | |
215 | +#define CONFIG_SYS_I2C | |
216 | +#define CONFIG_SYS_I2C_MXC | |
217 | +#define CONFIG_SYS_I2C_SPEED 100000 | |
218 | +#define CONFIG_SYS_MXC_I2C3_SPEED 400000 | |
219 | + | |
220 | +#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 | |
221 | +#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1 | |
222 | +#define CONFIG_SYS_I2C_EEPROM_BUS 2 | |
223 | + | |
213 | 224 | /* GPIO */ |
214 | 225 | #define CONFIG_MXC_GPIO |
215 | 226 |