diff options
author | Doug Anderson <dianders@chromium.org> | 2011-10-17 17:56:54 -0700 |
---|---|---|
committer | Doug Anderson <dianders@chromium.org> | 2011-10-20 17:05:49 -0700 |
commit | ce7c162657975e1a857dddc7704d8923a8ca53f6 (patch) | |
tree | 54197ab54ee9be34d1bfef5a9d2441ed8fcb979c | |
parent | 1a0c981683db4a38e685e11eaf233ceabf6ea66a (diff) |
CHROMIUM: tegra3: i2c: Add i2c support for all but i2c4
BUG=chromium-os:21540
TEST=With future config change, saw that I could run i2c probe on
busses 0-3
Change-Id: Ibfad91a3e7360434111c7aa6d2ea45f73e9690fc
Signed-off-by: Doug Anderson <dianders@chromium.org>
Reviewed-on: http://gerrit.chromium.org/gerrit/10366
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | board/nvidia/cardhu/tegra3-waluigi.dts | 5 | ||||
-rw-r--r-- | board/nvidia/cardhu/tegra30.dtsi | 31 | ||||
-rw-r--r-- | drivers/i2c/tegra_i2c.c | 19 |
3 files changed, 41 insertions, 14 deletions
diff --git a/board/nvidia/cardhu/tegra3-waluigi.dts b/board/nvidia/cardhu/tegra3-waluigi.dts index b0061ee4c28..20e3e833fa2 100644 --- a/board/nvidia/cardhu/tegra3-waluigi.dts +++ b/board/nvidia/cardhu/tegra3-waluigi.dts @@ -16,6 +16,11 @@ aliases { console = "/serial@70006300"; + + i2c0 = "/i2c@0x7000d000"; + i2c1 = "/i2c@0x7000c000"; + i2c2 = "/i2c@0x7000c400"; + i2c3 = "/i2c@0x7000c500"; }; chosen { diff --git a/board/nvidia/cardhu/tegra30.dtsi b/board/nvidia/cardhu/tegra30.dtsi index 79a3ba01c08..9e663107f74 100644 --- a/board/nvidia/cardhu/tegra30.dtsi +++ b/board/nvidia/cardhu/tegra30.dtsi @@ -73,5 +73,36 @@ status = "disabled"; }; + i2c@0x7000c000 { + compatible = "nvidia,tegra250-i2c"; + reg = <0x7000c000 0x006c>; + pinmux = <1>; + speed = <100000>; + periph-id = <12>; // PERIPH_ID_I2C1 + }; + + i2c@0x7000c400 { + compatible = "nvidia,tegra250-i2c"; + reg = <0x7000c400 0x006c>; + pinmux = <2>; + speed = <100000>; + periph-id = <54>; // PERIPH_ID_I2C2 + }; + + i2c@0x7000c500 { + compatible = "nvidia,tegra250-i2c"; + reg = <0x7000c500 0x006c>; + pinmux = <1>; + speed = <100000>; + periph-id = <67>; // PERIPH_ID_I2C3 + }; + + i2c@0x7000d000 { + compatible = "nvidia,tegra250-i2c"; + reg = <0x7000d000 0x007c>; + pinmux = <1>; + speed = <100000>; + periph-id = <47>; // PERIPH_ID_DVC_I2C + }; }; diff --git a/drivers/i2c/tegra_i2c.c b/drivers/i2c/tegra_i2c.c index 0f795091191..54d38f30abc 100644 --- a/drivers/i2c/tegra_i2c.c +++ b/drivers/i2c/tegra_i2c.c @@ -32,9 +32,6 @@ #include <asm/arch/pinmux.h> #include <fdt_decode.h> -/* TODO(sjg): This driver has not been tested with Tegra3 yet */ -#ifdef CONFIG_TEGRA2 - DECLARE_GLOBAL_DATA_PTR; static unsigned int i2c_bus_num; @@ -61,6 +58,7 @@ struct i2c_bus i2c_controllers[CONFIG_SYS_MAX_I2C_BUS]; static void i2c_pin_mux_select(struct i2c_bus *i2c_bus, int pinmux_config) { +#ifdef CONFIG_TEGRA2 switch (i2c_bus->periph_id) { case PERIPH_ID_DVC_I2C: /* DVC I2C (I2CP) */ /* there is only one selection, pinmux_config is ignored */ @@ -95,8 +93,10 @@ static void i2c_pin_mux_select(struct i2c_bus *i2c_bus, int pinmux_config) default: break; } +#endif } + /** * tristate : 0 - NORMAL * 1 - TRISTATE @@ -104,6 +104,7 @@ static void i2c_pin_mux_select(struct i2c_bus *i2c_bus, int pinmux_config) static void i2c_pin_mux_tristate(struct i2c_bus *i2c_bus, int pinmux_config, int tristate) { +#ifdef CONFIG_TEGRA2 enum pmux_pingrp pin; switch (i2c_bus->periph_id) { @@ -140,6 +141,7 @@ static void i2c_pin_mux_tristate(struct i2c_bus *i2c_bus, int pinmux_config, } pinmux_set_tristate(pin, tristate); +#endif } static void set_packet_mode(struct i2c_bus *i2c_bus) @@ -643,17 +645,6 @@ int i2c_set_bus_num(unsigned int bus) } #endif -#else /* not CONFIG_TEGRA2 */ - -/* Not implemented for now */ -int i2c_init_board(void) -{ - printf("i2c support is not available on T30\n"); - return -1; -} - -#endif /* CONFIG_TEGRA2 */ - void tegra_i2c_ll_write_addr(uint addr, uint config) { struct i2c_ctlr *reg = (struct i2c_ctlr *)TEGRA_DVC_BASE; |