Merge branch 'drivers/mmc' into next/dt2
authorArnd Bergmann <arnd@arndb.de>
Mon, 14 May 2012 20:35:04 +0000 (22:35 +0200)
committerArnd Bergmann <arnd@arndb.de>
Tue, 15 May 2012 11:44:11 +0000 (13:44 +0200)
Changes in the dt2 branch move stuff around that gets changed
in the drivers/mmc branch. I chose a non-obvious resolution by
adding the new bus-width property into all the tegra sdhci device
nodes.

Conflicts:
arch/arm/boot/dts/tegra-cardhu.dts
arch/arm/boot/dts/tegra-harmony.dts
arch/arm/boot/dts/tegra-ventana.dts

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
28 files changed:
Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt
Documentation/devicetree/bindings/mmc/mmc.txt [new file with mode: 0644]
Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt
Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
arch/arm/boot/dts/imx53-smd.dts
arch/arm/boot/dts/imx6q-arm2.dts
arch/arm/boot/dts/omap3-beagle.dts
arch/arm/boot/dts/omap3.dtsi
arch/arm/boot/dts/omap4-panda.dts
arch/arm/boot/dts/omap4-sdp.dts
arch/arm/boot/dts/omap4.dtsi
arch/arm/boot/dts/tegra-cardhu.dts
arch/arm/boot/dts/tegra-harmony.dts
arch/arm/boot/dts/tegra-paz00.dts
arch/arm/boot/dts/tegra-seaboard.dts
arch/arm/boot/dts/tegra-trimslice.dts
arch/arm/boot/dts/tegra-ventana.dts
arch/arm/boot/dts/twl4030.dtsi [new file with mode: 0644]
arch/arm/boot/dts/twl6030.dtsi [new file with mode: 0644]
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/gpio.c
arch/powerpc/boot/dts/mpc8569mds.dts
drivers/mmc/host/omap_hsmmc.c
drivers/mmc/host/sdhci-esdhc-imx.c
drivers/mmc/host/sdhci-pltfm.c

index 64bcb8b..0d93b4b 100644 (file)
@@ -11,9 +11,11 @@ Required properties:
   - interrupt-parent : interrupt source phandle.
   - clock-frequency : specifies eSDHC base clock frequency.
   - sdhci,wp-inverted : (optional) specifies that eSDHC controller
-    reports inverted write-protect state;
+    reports inverted write-protect state; New devices should use
+    the generic "wp-inverted" property.
   - sdhci,1-bit-only : (optional) specifies that a controller can
-    only handle 1-bit data transfers.
+    only handle 1-bit data transfers. New devices should use the
+    generic "bus-width = <1>" property.
   - sdhci,auto-cmd12: (optional) specifies that a controller can
     only handle auto CMD12.
 
index ab22fe6..c7e404b 100644 (file)
@@ -9,7 +9,7 @@ Required properties:
 - interrupts : Should contain eSDHC interrupt
 
 Optional properties:
-- fsl,card-wired : Indicate the card is wired to host permanently
+- non-removable : Indicate the card is wired to host permanently
 - fsl,cd-internal : Indicate to use controller internal card detection
 - fsl,wp-internal : Indicate to use controller internal write protection
 - cd-gpios : Specify GPIOs for card detection
index 89a0084..d64aea5 100644 (file)
@@ -10,7 +10,8 @@ Required properties:
 
 Optional properties:
 - gpios : may specify GPIOs in this order: Card-Detect GPIO,
-  Write-Protect GPIO.
+  Write-Protect GPIO. Note that this does not follow the
+  binding from mmc.txt, for historic reasons.
 - interrupts : the interrupt of a card detect interrupt.
 - interrupt-parent : the phandle for the interrupt controller that
   services interrupts for this device.
diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt
new file mode 100644 (file)
index 0000000..6e70dcd
--- /dev/null
@@ -0,0 +1,27 @@
+These properties are common to multiple MMC host controllers. Any host
+that requires the respective functionality should implement them using
+these definitions.
+
+Required properties:
+- bus-width: Number of data lines, can be <1>, <4>, or <8>
+
+Optional properties:
+- cd-gpios : Specify GPIOs for card detection, see gpio binding
+- wp-gpios : Specify GPIOs for write protection, see gpio binding
+- cd-inverted: when present, polarity on the wp gpio line is inverted
+- wp-inverted: when present, polarity on the wp gpio line is inverted
+- non-removable: non-removable slot (like eMMC)
+- max-frequency: maximum operating clock frequency
+
+Example:
+
+sdhci@ab000000 {
+       compatible = "sdhci";
+       reg = <0xab000000 0x200>;
+       interrupts = <23>;
+       bus-width = <4>;
+       cd-gpios = <&gpio 69 0>;
+       cd-inverted;
+       wp-gpios = <&gpio 70 0>;
+       max-frequency = <50000000>;
+}
index 7e51154..f77c303 100644 (file)
@@ -7,12 +7,12 @@ Required properties:
 - compatible : Should be "nvidia,<chip>-sdhci"
 - reg : Should contain SD/MMC registers location and length
 - interrupts : Should contain SD/MMC interrupt
+- bus-width : Number of data lines, can be <1>, <4>, or <8>
 
 Optional properties:
 - cd-gpios : Specify GPIOs for card detection
 - wp-gpios : Specify GPIOs for write protection
 - power-gpios : Specify GPIOs for power control
-- support-8bit : Boolean, indicates if 8-bit mode should be used.
 
 Example:
 
@@ -23,5 +23,5 @@ sdhci@c8000200 {
        cd-gpios = <&gpio 69 0>; /* gpio PI5 */
        wp-gpios = <&gpio 57 0>; /* gpio PH1 */
        power-gpios = <&gpio 155 0>; /* gpio PT3 */
-       support-8bit;
+       bus-width = <8>;
 };
index dbd4368..8a53958 100644 (file)
@@ -15,7 +15,7 @@ Optional properties:
 ti,dual-volt: boolean, supports dual voltage cards
 <supply-name>-supply: phandle to the regulator device tree node
 "supply-name" examples are "vmmc", "vmmc_aux" etc
-ti,bus-width: Number of data lines, default assumed is 1 if the property is missing.
+bus-width: Number of data lines, default assumed is 1 if the property is missing.
 cd-gpios: GPIOs for card detection
 wp-gpios: GPIOs for write protection
 ti,non-removable: non-removable slot (like eMMC)
@@ -27,7 +27,7 @@ Example:
                reg = <0x4809c000 0x400>;
                ti,hwmods = "mmc1";
                ti,dual-volt;
-               ti,bus-width = <4>;
+               bus-width = <4>;
                vmmc-supply = <&vmmc>; /* phandle to regulator node */
                ti,non-removable;
        };
index a3529af..0809102 100644 (file)
@@ -31,7 +31,7 @@
                                };
 
                                esdhc@50008000 { /* ESDHC2 */
-                                       fsl,card-wired;
+                                       non-removable;
                                        status = "okay";
                                };
 
@@ -72,7 +72,7 @@
                                };
 
                                esdhc@50020000 { /* ESDHC3 */
-                                       fsl,card-wired;
+                                       non-removable;
                                        status = "okay";
                                };
                        };
index 97893f5..db4c609 100644 (file)
@@ -38,7 +38,7 @@
                        };
 
                        usdhc@0219c000 { /* uSDHC4 */
-                               fsl,card-wired;
+                               non-removable;
                                vmmc-supply = <&reg_3p3v>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&pinctrl_usdhc4_1>;
index 9f72cd4..5b4506c 100644 (file)
                reg = <0x80000000 0x20000000>; /* 512 MB */
        };
 };
+
+&i2c1 {
+       clock-frequency = <2600000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               interrupts = <7>; /* SYS_NIRQ cascaded to intc */
+               interrupt-parent = <&intc>;
+
+               vsim: regulator@10 {
+                       compatible = "ti,twl4030-vsim";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <3000000>;
+               };
+       };
+};
+
+/include/ "twl4030.dtsi"
+
+&i2c2 {
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       clock-frequency = <100000>;
+
+       /*
+        * Display monitor features are burnt in the EEPROM
+        * as EDID data.
+        */
+       eeprom@50 {
+               compatible = "ti,eeprom";
+               reg = <0x50>;
+       };
+};
+
+&mmc1 {
+       vmmc-supply = <&vmmc1>;
+       vmmc_aux-supply = <&vsim>;
+       bus-width = <8>;
+};
+
+&mmc2 {
+       status = "disable";
+};
+
+&mmc3 {
+       status = "disable";
+};
index c612135..99474fa 100644 (file)
                        reg = <0x48200000 0x1000>;
                };
 
+               gpio1: gpio@48310000 {
+                       compatible = "ti,omap3-gpio";
+                       ti,hwmods = "gpio1";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio2: gpio@49050000 {
+                       compatible = "ti,omap3-gpio";
+                       ti,hwmods = "gpio2";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio3: gpio@49052000 {
+                       compatible = "ti,omap3-gpio";
+                       ti,hwmods = "gpio3";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio4: gpio@49054000 {
+                       compatible = "ti,omap3-gpio";
+                       ti,hwmods = "gpio4";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio5: gpio@49056000 {
+                       compatible = "ti,omap3-gpio";
+                       ti,hwmods = "gpio5";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio6: gpio@49058000 {
+                       compatible = "ti,omap3-gpio";
+                       ti,hwmods = "gpio6";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
                uart1: serial@4806a000 {
                        compatible = "ti,omap3-uart";
                        ti,hwmods = "uart1";
                        #size-cells = <0>;
                        ti,hwmods = "i2c3";
                };
+
+               mcspi1: spi@48098000 {
+                       compatible = "ti,omap2-mcspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi1";
+                       ti,spi-num-cs = <4>;
+               };
+
+               mcspi2: spi@4809a000 {
+                       compatible = "ti,omap2-mcspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi2";
+                       ti,spi-num-cs = <2>;
+               };
+
+               mcspi3: spi@480b8000 {
+                       compatible = "ti,omap2-mcspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi3";
+                       ti,spi-num-cs = <2>;
+               };
+
+               mcspi4: spi@480ba000 {
+                       compatible = "ti,omap2-mcspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi4";
+                       ti,spi-num-cs = <1>;
+               };
+
+               mmc1: mmc@4809c000 {
+                       compatible = "ti,omap3-hsmmc";
+                       ti,hwmods = "mmc1";
+                       ti,dual-volt;
+               };
+
+               mmc2: mmc@480b4000 {
+                       compatible = "ti,omap3-hsmmc";
+                       ti,hwmods = "mmc2";
+               };
+
+               mmc3: mmc@480ad000 {
+                       compatible = "ti,omap3-hsmmc";
+                       ti,hwmods = "mmc3";
+               };
        };
 };
index 9755ad5..31fb421 100644 (file)
                reg = <0x80000000 0x40000000>; /* 1 GB */
        };
 };
+
+&i2c1 {
+       clock-frequency = <400000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
+               interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
+               interrupt-parent = <&gic>;
+       };
+};
+
+/include/ "twl6030.dtsi"
+
+&i2c2 {
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       clock-frequency = <100000>;
+
+       /*
+        * Display monitor features are burnt in their EEPROM as EDID data.
+        * The EEPROM is connected as I2C slave device.
+        */
+       eeprom@50 {
+               compatible = "ti,eeprom";
+               reg = <0x50>;
+       };
+};
+
+&i2c4 {
+       clock-frequency = <400000>;
+};
+
+&mmc1 {
+       vmmc-supply = <&vmmc>;
+       bus-width = <8>;
+};
+
+&mmc2 {
+       status = "disable";
+};
+
+&mmc3 {
+       status = "disable";
+};
+
+&mmc4 {
+       status = "disable";
+};
+
+&mmc5 {
+       ti,non-removable;
+       bus-width = <4>;
+};
index 63c6b2b..a1dd873 100644 (file)
                device_type = "memory";
                reg = <0x80000000 0x40000000>; /* 1 GB */
        };
+
+       vdd_eth: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_ETH";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio2 16 0>;  /* gpio line 48 */
+               enable-active-high;
+               regulator-boot-on;
+       };
+};
+
+&i2c1 {
+       clock-frequency = <400000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
+               interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
+               interrupt-parent = <&gic>;
+       };
+};
+
+/include/ "twl6030.dtsi"
+
+&i2c2 {
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+
+       /*
+        * Temperature Sensor
+        * http://www.ti.com/lit/ds/symlink/tmp105.pdf
+        */
+       tmp105@48 {
+               compatible = "ti,tmp105";
+               reg = <0x48>;
+       };
+
+       /*
+        * Ambient Light Sensor
+        * http://www.rohm.com/products/databook/sensor/pdf/bh1780gli-e.pdf
+        */
+       bh1780@29 {
+               compatible = "rohm,bh1780";
+               reg = <0x29>;
+       };
+};
+
+&i2c4 {
+       clock-frequency = <400000>;
+
+       /*
+        * 3-Axis Digital Compass
+        * http://www.sparkfun.com/datasheets/Sensors/Magneto/HMC5843.pdf
+        */
+       hmc5843@1e {
+               compatible = "honeywell,hmc5843";
+               reg = <0x1e>;
+       };
+};
+
+&mcspi1 {
+       eth@0 {
+               compatible = "ks8851";
+               spi-max-frequency = <24000000>;
+               reg = <0>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <2>; /* gpio line 34 */
+               vdd-supply = <&vdd_eth>;
+       };
+};
+
+&mmc1 {
+       vmmc-supply = <&vmmc>;
+       bus-width = <8>;
+};
+
+&mmc2 {
+       vmmc-supply = <&vaux1>;
+       bus-width = <8>;
+       ti,non-removable;
+};
+
+&mmc3 {
+       status = "disable";
+};
+
+&mmc4 {
+       status = "disable";
+};
+
+&mmc5 {
+       bus-width = <4>;
+       ti,non-removable;
 };
index 3d35559..359c497 100644 (file)
                              <0x48240100 0x0100>;
                };
 
+               gpio1: gpio@4a310000 {
+                       compatible = "ti,omap4-gpio";
+                       ti,hwmods = "gpio1";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio2: gpio@48055000 {
+                       compatible = "ti,omap4-gpio";
+                       ti,hwmods = "gpio2";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio3: gpio@48057000 {
+                       compatible = "ti,omap4-gpio";
+                       ti,hwmods = "gpio3";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio4: gpio@48059000 {
+                       compatible = "ti,omap4-gpio";
+                       ti,hwmods = "gpio4";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio5: gpio@4805b000 {
+                       compatible = "ti,omap4-gpio";
+                       ti,hwmods = "gpio5";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio6: gpio@4805d000 {
+                       compatible = "ti,omap4-gpio";
+                       ti,hwmods = "gpio6";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
                uart1: serial@4806a000 {
                        compatible = "ti,omap4-uart";
                        ti,hwmods = "uart1";
                        #size-cells = <0>;
                        ti,hwmods = "i2c4";
                };
+
+               mcspi1: spi@48098000 {
+                       compatible = "ti,omap4-mcspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi1";
+                       ti,spi-num-cs = <4>;
+               };
+
+               mcspi2: spi@4809a000 {
+                       compatible = "ti,omap4-mcspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi2";
+                       ti,spi-num-cs = <2>;
+               };
+
+               mcspi3: spi@480b8000 {
+                       compatible = "ti,omap4-mcspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi3";
+                       ti,spi-num-cs = <2>;
+               };
+
+               mcspi4: spi@480ba000 {
+                       compatible = "ti,omap4-mcspi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi4";
+                       ti,spi-num-cs = <1>;
+               };
+
+               mmc1: mmc@4809c000 {
+                       compatible = "ti,omap4-hsmmc";
+                       ti,hwmods = "mmc1";
+                       ti,dual-volt;
+                       ti,needs-special-reset;
+               };
+
+               mmc2: mmc@480b4000 {
+                       compatible = "ti,omap4-hsmmc";
+                       ti,hwmods = "mmc2";
+                       ti,needs-special-reset;
+               };
+
+               mmc3: mmc@480ad000 {
+                       compatible = "ti,omap4-hsmmc";
+                       ti,hwmods = "mmc3";
+                       ti,needs-special-reset;
+               };
+
+               mmc4: mmc@480d1000 {
+                       compatible = "ti,omap4-hsmmc";
+                       ti,hwmods = "mmc4";
+                       ti,needs-special-reset;
+               };
+
+               mmc5: mmc@480d5000 {
+                       compatible = "ti,omap4-hsmmc";
+                       ti,hwmods = "mmc5";
+                       ti,needs-special-reset;
+               };
        };
 };
index e14bb45..36321bc 100644 (file)
                cd-gpios = <&gpio 69 0>; /* gpio PI5 */
                wp-gpios = <&gpio 155 0>; /* gpio PT3 */
                power-gpios = <&gpio 31 0>; /* gpio PD7 */
+               bus-width = <4>;
        };
 
        sdhci@78000600 {
                status = "okay";
                support-8bit;
+               bus-width = <8>;
        };
 
        sound {
index 6bcdad3..7de7013 100644 (file)
                cd-gpios = <&gpio 69 0>; /* gpio PI5 */
                wp-gpios = <&gpio 57 0>; /* gpio PH1 */
                power-gpios = <&gpio 155 0>; /* gpio PT3 */
+               bus-width = <4>;
        };
 
        sdhci@c8000600 {
                wp-gpios = <&gpio 59 0>; /* gpio PH3 */
                power-gpios = <&gpio 70 0>; /* gpio PI6 */
                support-8bit;
+               bus-width = <8>;
        };
 
        sound {
index cb366f0..bfeb117 100644 (file)
                cd-gpios = <&gpio 173 0>; /* gpio PV5 */
                wp-gpios = <&gpio 57 0>;  /* gpio PH1 */
                power-gpios = <&gpio 169 0>; /* gpio PV1 */
+               bus-width = <4>;
        };
 
        sdhci@c8000600 {
                status = "okay";
                support-8bit;
+               bus-width = <8>;
        };
 
        gpio-keys {
index 21b586e..89cb7f2 100644 (file)
                cd-gpios = <&gpio 69 0>; /* gpio PI5 */
                wp-gpios = <&gpio 57 0>; /* gpio PH1 */
                power-gpios = <&gpio 70 0>; /* gpio PI6 */
+               bus-width = <4>;
        };
 
        sdhci@c8000600 {
                status = "okay";
                support-8bit;
+               bus-width = <8>;
        };
 
        gpio-keys {
index 6fc52af..9de5636 100644 (file)
 
        sdhci@c8000000 {
                status = "okay";
+               bus-width = <4>;
        };
 
        sdhci@c8000600 {
                status = "okay";
                cd-gpios = <&gpio 121 0>; /* gpio PP1 */
                wp-gpios = <&gpio 122 0>; /* gpio PP2 */
+               bus-width = <4>;
        };
 
        sound {
index 15d8fdb..445343b 100644 (file)
                cd-gpios = <&gpio 69 0>; /* gpio PI5 */
                wp-gpios = <&gpio 57 0>; /* gpio PH1 */
                power-gpios = <&gpio 70 0>; /* gpio PI6 */
+               bus-width = <4>;
        };
 
        sdhci@c8000600 {
                status = "okay";
                support-8bit;
+               bus-width = <8>;
        };
 
        sound {
diff --git a/arch/arm/boot/dts/twl4030.dtsi b/arch/arm/boot/dts/twl4030.dtsi
new file mode 100644 (file)
index 0000000..a94654c
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * Integrated Power Management Chip
+ */
+&twl {
+       compatible = "ti,twl4030";
+       interrupt-controller;
+       #interrupt-cells = <1>;
+
+       rtc {
+               compatible = "ti,twl4030-rtc";
+               interrupts = <11>;
+       };
+
+       vdac: regulator@0 {
+               compatible = "ti,twl4030-vdac";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       vpll2: regulator@1 {
+               compatible = "ti,twl4030-vpll2";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       vmmc1: regulator@2 {
+               compatible = "ti,twl4030-vmmc1";
+               regulator-min-microvolt = <1850000>;
+               regulator-max-microvolt = <3150000>;
+       };
+};
diff --git a/arch/arm/boot/dts/twl6030.dtsi b/arch/arm/boot/dts/twl6030.dtsi
new file mode 100644 (file)
index 0000000..3b2f351
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * Integrated Power Management Chip
+ * http://www.ti.com/lit/ds/symlink/twl6030.pdf
+ */
+&twl {
+       compatible = "ti,twl6030";
+       interrupt-controller;
+       #interrupt-cells = <1>;
+
+       rtc {
+               compatible = "ti,twl4030-rtc";
+               interrupts = <11>;
+       };
+
+       vaux1: regulator@0 {
+               compatible = "ti,twl6030-vaux1";
+               regulator-min-microvolt = <1000000>;
+               regulator-max-microvolt = <3000000>;
+       };
+
+       vaux2: regulator@1 {
+               compatible = "ti,twl6030-vaux2";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <2800000>;
+       };
+
+       vaux3: regulator@2 {
+               compatible = "ti,twl6030-vaux3";
+               regulator-min-microvolt = <1000000>;
+               regulator-max-microvolt = <3000000>;
+       };
+
+       vmmc: regulator@3 {
+               compatible = "ti,twl6030-vmmc";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <3000000>;
+       };
+
+       vpp: regulator@4 {
+               compatible = "ti,twl6030-vpp";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2500000>;
+       };
+
+       vusim: regulator@5 {
+               compatible = "ti,twl6030-vusim";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <2900000>;
+       };
+
+       vdac: regulator@6 {
+               compatible = "ti,twl6030-vdac";
+       };
+
+       vana: regulator@7 {
+               compatible = "ti,twl6030-vana";
+       };
+
+       vcxio: regulator@8 {
+               compatible = "ti,twl6030-vcxio";
+       };
+
+       vusb: regulator@9 {
+               compatible = "ti,twl6030-vusb";
+       };
+
+       v1v8: regulator@10 {
+               compatible = "ti,twl6030-v1v8";
+       };
+
+       v2v1: regulator@11 {
+               compatible = "ti,twl6030-v2v1";
+       };
+
+       clk32kg: regulator@12 {
+               compatible = "ti,twl6030-clk32kg";
+       };
+};
index 098d183..7302ba7 100644 (file)
@@ -15,7 +15,6 @@
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
 #include <linux/irqdomain.h>
-#include <linux/i2c/twl.h>
 
 #include <mach/hardware.h>
 #include <asm/hardware/gic.h>
@@ -95,22 +94,6 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_ARCH_OMAP3
-static struct twl4030_platform_data beagle_twldata = {
-       .irq_base       = TWL4030_IRQ_BASE,
-       .irq_end        = TWL4030_IRQ_END,
-};
-
-static void __init omap3_i2c_init(void)
-{
-       omap3_pmic_init("twl4030", &beagle_twldata);
-}
-
-static void __init omap3_init(void)
-{
-       omap3_i2c_init();
-       omap_generic_init();
-}
-
 static const char *omap3_boards_compat[] __initdata = {
        "ti,omap3",
        NULL,
@@ -122,7 +105,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
        .init_early     = omap3430_init_early,
        .init_irq       = omap_init_irq,
        .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = omap3_init,
+       .init_machine   = omap_generic_init,
        .timer          = &omap3_timer,
        .dt_compat      = omap3_boards_compat,
        .restart        = omap_prcm_restart,
@@ -130,22 +113,6 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_ARCH_OMAP4
-static struct twl4030_platform_data sdp4430_twldata = {
-       .irq_base       = TWL6030_IRQ_BASE,
-       .irq_end        = TWL6030_IRQ_END,
-};
-
-static void __init omap4_i2c_init(void)
-{
-       omap4_pmic_init("twl6030", &sdp4430_twldata, NULL, 0);
-}
-
-static void __init omap4_init(void)
-{
-       omap4_i2c_init();
-       omap_generic_init();
-}
-
 static const char *omap4_boards_compat[] __initdata = {
        "ti,omap4",
        NULL,
@@ -157,7 +124,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
        .init_early     = omap4430_init_early,
        .init_irq       = omap_init_irq,
        .handle_irq     = gic_handle_irq,
-       .init_machine   = omap4_init,
+       .init_machine   = omap_generic_init,
        .timer          = &omap4_timer,
        .dt_compat      = omap4_boards_compat,
        .restart        = omap_prcm_restart,
index e433603..98cab3a 100644 (file)
@@ -705,7 +705,9 @@ static int __init omap2_init_devices(void)
        omap_init_dmic();
        omap_init_camera();
        omap_init_mbox();
-       omap_init_mcspi();
+       /* If dtb is there, the devices will be created dynamically */
+       if (!of_have_populated_dt())
+               omap_init_mcspi();
        omap_init_pmu();
        omap_hdq_init();
        omap_init_sti();
index 2f994e5..18f9c7b 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/err.h>
 #include <linux/slab.h>
 #include <linux/interrupt.h>
+#include <linux/of.h>
 
 #include <plat/omap_hwmod.h>
 #include <plat/omap_device.h>
@@ -146,7 +147,10 @@ static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
  */
 static int __init omap2_gpio_init(void)
 {
-       return omap_hwmod_for_each_by_class("gpio", omap2_gpio_dev_init,
-                                               NULL);
+       /* If dtb is there, the devices will be created dynamically */
+       if (of_have_populated_dt())
+               return -ENODEV;
+
+       return omap_hwmod_for_each_by_class("gpio", omap2_gpio_dev_init, NULL);
 }
 postcore_initcall(omap2_gpio_init);
index 7e283c8..fe0d609 100644 (file)
                sdhc@2e000 {
                        status = "disabled";
                        sdhci,1-bit-only;
+                       bus-width = <1>;
                };
 
                par_io@e0100 {
index 56d4499..33e81c2 100644 (file)
@@ -1766,7 +1766,7 @@ static struct omap_mmc_platform_data *of_get_hsmmc_pdata(struct device *dev)
                pdata->slots[0].nonremovable = true;
                pdata->slots[0].no_regulator_off_init = true;
        }
-       of_property_read_u32(np, "ti,bus-width", &bus_width);
+       of_property_read_u32(np, "bus-width", &bus_width);
        if (bus_width == 4)
                pdata->slots[0].caps |= MMC_CAP_4_BIT_DATA;
        else if (bus_width == 8)
index 6b0e3f3..ebbe984 100644 (file)
@@ -407,7 +407,7 @@ sdhci_esdhc_imx_probe_dt(struct platform_device *pdev,
        if (!np)
                return -ENODEV;
 
-       if (of_get_property(np, "fsl,card-wired", NULL))
+       if (of_get_property(np, "non-removable", NULL))
                boarddata->cd_type = ESDHC_CD_PERMANENT;
 
        if (of_get_property(np, "fsl,cd-controller", NULL))
index c5c2a48..d9a4ef4 100644 (file)
@@ -42,7 +42,8 @@ static struct sdhci_ops sdhci_pltfm_ops = {
 #ifdef CONFIG_OF
 static bool sdhci_of_wp_inverted(struct device_node *np)
 {
-       if (of_get_property(np, "sdhci,wp-inverted", NULL))
+       if (of_get_property(np, "sdhci,wp-inverted", NULL) ||
+           of_get_property(np, "wp-inverted", NULL))
                return true;
 
        /* Old device trees don't have the wp-inverted property. */
@@ -59,13 +60,16 @@ void sdhci_get_of_property(struct platform_device *pdev)
        struct sdhci_host *host = platform_get_drvdata(pdev);
        struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
        const __be32 *clk;
+       u32 bus_width;
        int size;
 
        if (of_device_is_available(np)) {
                if (of_get_property(np, "sdhci,auto-cmd12", NULL))
                        host->quirks |= SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12;
 
-               if (of_get_property(np, "sdhci,1-bit-only", NULL))
+               if (of_get_property(np, "sdhci,1-bit-only", NULL) ||
+                   (of_property_read_u32(np, "bus-width", &bus_width) == 0 &&
+                   bus_width == 1))
                        host->quirks |= SDHCI_QUIRK_FORCE_1_BIT_DATA;
 
                if (sdhci_of_wp_inverted(np))