exynos: dts: Support EC tunnel and main TPS65090 regulator
authorSimon Glass <sjg@chromium.org>
Fri, 3 Jul 2015 00:15:50 +0000 (18:15 -0600)
committerSimon Glass <sjg@chromium.org>
Thu, 6 Aug 2015 03:06:11 +0000 (21:06 -0600)
On pit and pi the TPS65090 regulator is connected only to the EC and we
must use a tunnel to get to it. The existing U-Boot support relies on a
special driver. Add a tunnel definition so that the new device-model
TPS65090 driver can be used unmodified.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/arm/dts/exynos5250-snow.dts
arch/arm/dts/exynos5420-peach-pit.dts
arch/arm/dts/exynos5800-peach-pi.dts

index 06d675bc40a007c1f0d3832cb4395079085ebdfb..653efb4175b29d91252050ad9a18373c5885f22b 100644 (file)
@@ -25,6 +25,7 @@
                i2c2 = "/i2c@12C80000";
                i2c3 = "/i2c@12C90000";
                i2c4 = "/i2c@12CA0000";
+               i2c104 = &i2c_104;
                i2c5 = "/i2c@12CB0000";
                i2c6 = "/i2c@12CC0000";
                i2c7 = "/i2c@12CD0000";
@@ -43,7 +44,7 @@
        };
 
        i2c4: i2c@12CA0000 {
-               cros_ec: cros-ec@1e {
+               cros_ec_old: cros-ec@1e {
                        reg = <0x1e>;
                        compatible = "google,cros-ec-i2c";
                        i2c-max-frequency = <100000>;
                };
        };
 
+       i2c-arbitrator {
+               compatible = "i2c-arb-gpio-challenge";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c-parent = <&{/i2c@12CA0000}>;
+
+               our-claim-gpio = <&gpf0 3 GPIO_ACTIVE_LOW>;
+               their-claim-gpios = <&gpe0 4 GPIO_ACTIVE_LOW>;
+               slew-delay-us = <10>;
+               wait-retry-us = <3000>;
+               wait-free-us = <50000>;
+
+               /* Use ID 104 as a hint that we're on physical bus 4 */
+               i2c_104: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       battery: sbs-battery@b {
+                               compatible = "sbs,sbs-battery";
+                               reg = <0xb>;
+                               sbs,poll-retry-count = <1>;
+                       };
+
+                       cros_ec: embedded-controller {
+                               compatible = "google,cros-ec-i2c";
+                               reg = <0x1e>;
+                               interrupts = <6 IRQ_TYPE_NONE>;
+                               interrupt-parent = <&gpx1>;
+                               wakeup-source;
+                               i2c-max-frequency = <100000>;
+                               u-boot,i2c-offset-len = <0>;
+                               ec-interrupt = <&gpx1 6 GPIO_ACTIVE_LOW>;
+                       };
+
+                       power-regulator {
+                               compatible = "ti,tps65090";
+                               reg = <0x48>;
+
+                               regulators {
+                                       dcdc1 {
+                                               ti,enable-ext-control;
+                                       };
+                                       dcdc2 {
+                                               ti,enable-ext-control;
+                                       };
+                                       dcdc3 {
+                                               ti,enable-ext-control;
+                                       };
+                                       fet1: fet1 {
+                                               regulator-name = "vcd_led";
+                                               ti,overcurrent-wait = <3>;
+                                       };
+                                       tps65090_fet2: fet2 {
+                                               regulator-name = "video_mid";
+                                               regulator-always-on;
+                                               ti,overcurrent-wait = <3>;
+                                       };
+                                       fet3 {
+                                               regulator-name = "wwan_r";
+                                               regulator-always-on;
+                                               ti,overcurrent-wait = <3>;
+                                       };
+                                       fet4 {
+                                               regulator-name = "sdcard";
+                                               ti,overcurrent-wait = <3>;
+                                       };
+                                       fet5 {
+                                               regulator-name = "camout";
+                                               regulator-always-on;
+                                               ti,overcurrent-wait = <3>;
+                                       };
+                                       fet6: fet6 {
+                                               regulator-name = "lcd_vdd";
+                                               ti,overcurrent-wait = <3>;
+                                       };
+                                       tps65090_fet7: fet7 {
+                                               regulator-name = "video_mid_1a";
+                                               regulator-always-on;
+                                               ti,overcurrent-wait = <3>;
+                                       };
+                                       ldo1 {
+                                       };
+                                       ldo2 {
+                                       };
+                               };
+
+                               charger {
+                                       compatible = "ti,tps65090-charger";
+                               };
+                       };
+               };
+       };
+
        spi@12d30000 {
                spi-max-frequency = <50000000>;
                firmware_storage_spi: flash@0 {
index 0f1002e894a3e87c2cfd0e024e2c686a423e1ca0..5182b2b1c1efb296739ff59b4f89102deae4ae24 100644 (file)
@@ -26,6 +26,7 @@
                serial0 = "/serial@12C30000";
                console = "/serial@12C30000";
                pmic = "/i2c@12CA0000";
+               i2c104 = &i2c_tunnel;
        };
 
        dmc {
                };
        };
 
-       spi@12d40000 { /* spi2 */
-               spi-max-frequency = <4000000>;
-               spi-deactivate-delay = <200>;
-
-               cros_ec: cros-ec@0 {
-                       compatible = "google,cros-ec-spi";
-                       reg = <0>;
-                       spi-half-duplex;
-                       spi-max-timeout-ms = <1100>;
-                       ec-interrupt = <&gpx1 5 GPIO_ACTIVE_LOW>;
-
-                       /*
-                        * This describes the flash memory within the EC. Note
-                        * that the STM32L flash erases to 0, not 0xff.
-                        */
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       flash@8000000 {
-                               reg = <0x08000000 0x20000>;
-                               erase-value = <0>;
-                       };
-               };
-       };
-
        xhci@12000000 {
                samsung,vbus-gpio = <&gph0 0 GPIO_ACTIVE_HIGH>;
        };
        };
 };
 
+&spi_2 {
+       spi-max-frequency = <3125000>;
+       spi-deactivate-delay = <200>;
+       status = "okay";
+       num-cs = <1>;
+       samsung,spi-src-clk = <0>;
+       cs-gpios = <&gpb1 2 0>;
+
+       cros_ec: cros-ec@0 {
+               compatible = "google,cros-ec-spi";
+               interrupt-parent = <&gpx1>;
+               interrupts = <5 0>;
+               reg = <0>;
+               spi-half-duplex;
+               spi-max-timeout-ms = <1100>;
+               ec-interrupt = <&gpx1 5 GPIO_ACTIVE_LOW>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               /*
+                * This describes the flash memory within the EC. Note
+                * that the STM32L flash erases to 0, not 0xff.
+                */
+               flash@8000000 {
+                       reg = <0x08000000 0x20000>;
+                       erase-value = <0>;
+               };
+
+               controller-data {
+                       samsung,spi-feedback-delay = <1>;
+               };
+
+               i2c_tunnel: i2c-tunnel {
+                       compatible = "google,cros-ec-i2c-tunnel";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       google,remote-bus = <0>;
+
+                       battery: sbs-battery@b {
+                               compatible = "sbs,sbs-battery";
+                               reg = <0xb>;
+                               sbs,poll-retry-count = <1>;
+                               sbs,i2c-retry-count = <2>;
+                       };
+
+                       power-regulator@48 {
+                               compatible = "ti,tps65090";
+                               reg = <0x48>;
+
+                               regulators {
+                                       tps65090_dcdc1: dcdc1 {
+                                               ti,enable-ext-control;
+                                       };
+                                       tps65090_dcdc2: dcdc2 {
+                                               ti,enable-ext-control;
+                                       };
+                                       tps65090_dcdc3: dcdc3 {
+                                               ti,enable-ext-control;
+                                       };
+                                       tps65090_fet1: fet1 {
+                                               regulator-name = "vcd_led";
+                                       };
+                                       tps65090_fet2: fet2 {
+                                               regulator-name = "video_mid";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_fet3: fet3 {
+                                               regulator-name = "wwan_r";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_fet4: fet4 {
+                                               regulator-name = "sdcard";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_fet5: fet5 {
+                                               regulator-name = "camout";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_fet6: fet6 {
+                                               regulator-name = "lcd_vdd";
+                                       };
+                                       tps65090_fet7: fet7 {
+                                               regulator-name = "video_mid_1a";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_ldo1: ldo1 {
+                                       };
+                                       tps65090_ldo2: ldo2 {
+                                       };
+                               };
+
+                               charger {
+                                       compatible = "ti,tps65090-charger";
+                               };
+                       };
+               };
+       };
+};
+
 #include "cros-ec-keyboard.dtsi"
index 4e548f7cd7514734bbcbc40226bfb43b801f95e5..600c2948cf3eebdce9be99b91e2ffcbe4224d6f9 100644 (file)
@@ -26,6 +26,7 @@
                serial0 = "/serial@12C30000";
                console = "/serial@12C30000";
                pmic = "/i2c@12CA0000";
+               i2c104 = &i2c_tunnel;
        };
 
        dmc {
                };
        };
 
-       spi@12d40000 { /* spi2 */
-               spi-max-frequency = <4000000>;
-               spi-deactivate-delay = <200>;
-               cros_ec: cros-ec@0 {
-                       compatible = "google,cros-ec-spi";
-                       reg = <0>;
-                       spi-half-duplex;
-                       spi-max-timeout-ms = <1100>;
-                       ec-interrupt = <&gpx1 5 GPIO_ACTIVE_LOW>;
-
-                       /*
-                        * This describes the flash memory within the EC. Note
-                        * that the STM32L flash erases to 0, not 0xff.
-                        */
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       flash@8000000 {
-                               reg = <0x08000000 0x20000>;
-                               erase-value = <0>;
-                       };
-               };
-       };
-
        xhci@12000000 {
                samsung,vbus-gpio = <&gph0 0 GPIO_ACTIVE_HIGH>;
        };
        };
 };
 
+&spi_2 {
+       spi-max-frequency = <3125000>;
+       spi-deactivate-delay = <200>;
+       status = "okay";
+       num-cs = <1>;
+       samsung,spi-src-clk = <0>;
+       cs-gpios = <&gpb1 2 0>;
+
+       cros_ec: cros-ec@0 {
+               compatible = "google,cros-ec-spi";
+               interrupt-parent = <&gpx1>;
+               interrupts = <5 0>;
+               reg = <0>;
+               spi-half-duplex;
+               spi-max-timeout-ms = <1100>;
+               ec-interrupt = <&gpx1 5 GPIO_ACTIVE_LOW>;
+
+               /*
+                * This describes the flash memory within the EC. Note
+                * that the STM32L flash erases to 0, not 0xff.
+                */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               flash@8000000 {
+                       reg = <0x08000000 0x20000>;
+                       erase-value = <0>;
+               };
+
+               controller-data {
+                       samsung,spi-feedback-delay = <1>;
+               };
+
+               i2c_tunnel: i2c-tunnel {
+                       compatible = "google,cros-ec-i2c-tunnel";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       google,remote-bus = <0>;
+
+                       battery: sbs-battery@b {
+                               compatible = "sbs,sbs-battery";
+                               reg = <0xb>;
+                               sbs,poll-retry-count = <1>;
+                               sbs,i2c-retry-count = <2>;
+                       };
+
+                       power-regulator@48 {
+                               compatible = "ti,tps65090";
+                               reg = <0x48>;
+
+                               regulators {
+                                       tps65090_dcdc1: dcdc1 {
+                                               ti,enable-ext-control;
+                                       };
+                                       tps65090_dcdc2: dcdc2 {
+                                               ti,enable-ext-control;
+                                       };
+                                       tps65090_dcdc3: dcdc3 {
+                                               ti,enable-ext-control;
+                                       };
+                                       tps65090_fet1: fet1 {
+                                               regulator-name = "vcd_led";
+                                       };
+                                       tps65090_fet2: fet2 {
+                                               regulator-name = "video_mid";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_fet3: fet3 {
+                                               regulator-name = "wwan_r";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_fet4: fet4 {
+                                               regulator-name = "sdcard";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_fet5: fet5 {
+                                               regulator-name = "camout";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_fet6: fet6 {
+                                               regulator-name = "lcd_vdd";
+                                       };
+                                       tps65090_fet7: fet7 {
+                                               regulator-name = "video_mid_1a";
+                                               regulator-always-on;
+                                       };
+                                       tps65090_ldo1: ldo1 {
+                                       };
+                                       tps65090_ldo2: ldo2 {
+                                       };
+                               };
+
+                               charger {
+                                       compatible = "ti,tps65090-charger";
+                               };
+                       };
+               };
+       };
+};
+
 #include "cros-ec-keyboard.dtsi"