]> git.karo-electronics.de Git - linux-beck.git/commitdiff
mmc: dt: Consolidate DT bindings
authorArnd Bergmann <arnd@arndb.de>
Sun, 13 May 2012 04:14:24 +0000 (00:14 -0400)
committerArnd Bergmann <arnd@arndb.de>
Tue, 15 May 2012 11:29:42 +0000 (13:29 +0200)
This patch unifies the current DT MMC bindings documentation and code,
adds generic MMC DT bindings documentation, and updates .dts files for
consistency.

[cjb: typo fixes, addition of max-frequency property]
Signed-off-by: Chris Ball <cjb@laptop.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
20 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/omap4-panda.dts
arch/arm/boot/dts/omap4-sdp.dts
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-ventana.dts
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 64bcb8be973c0574ee0b835b2698f7d7501d8ff3..0d93b4b0e0e3733f77d0b668f166f2a3ba983555 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 ab22fe6e73abf00da7bd362981ce2331db284f2b..c7e404b3ef0515b5527583cae877ab48c5d69595 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 89a0084df2f76e625a2cdfcccf4e6c0f4281bc12..d64aea5a42032414fa99d1fa43fb0dc20114c254 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 7e51154679a6f17d47ce198b77dd2eeade185dc6..f77c3031607fbea26a250e3f7fcdd6373089dfff 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 dbd4368ab8cc223bb3fc63147da349b25ed82db8..8a53958c9a9f50e71073daa1b8aa0650308ea13c 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 c7ee86c2dfb530a7c77a38fc2826632b110e2e9b..139138a556b043c25d842c3d5c08f5be7aeec907 100644 (file)
@@ -35,7 +35,7 @@
                                };
 
                                esdhc@50008000 { /* ESDHC2 */
-                                       fsl,card-wired;
+                                       non-removable;
                                        status = "okay";
                                };
 
@@ -76,7 +76,7 @@
                                };
 
                                esdhc@50020000 { /* ESDHC3 */
-                                       fsl,card-wired;
+                                       non-removable;
                                        status = "okay";
                                };
                        };
index ce1c8238c8975c6b84f72304f7ff8ae68dda8c88..d2eaf521c9fd7ae7f5faafcbce609a6254413e76 100644 (file)
@@ -41,7 +41,7 @@
                        };
 
                        usdhc@0219c000 { /* uSDHC4 */
-                               fsl,card-wired;
+                               non-removable;
                                vmmc-supply = <&reg_3p3v>;
                                status = "okay";
                        };
index 8c756be4d7adbf4b15bfc83ae6dcda1324f68453..5b4506c0a8c47d7e1ef506db75cbad9da303b3ec 100644 (file)
@@ -57,7 +57,7 @@
 &mmc1 {
        vmmc-supply = <&vmmc1>;
        vmmc_aux-supply = <&vsim>;
-       ti,bus-width = <8>;
+       bus-width = <8>;
 };
 
 &mmc2 {
index ea6f5bb8a1202ae110254b8167adee31e15a05f3..31fb4218d3aeeac63d95ec8b5de08fdcd91f5c34 100644 (file)
@@ -55,7 +55,7 @@
 
 &mmc1 {
        vmmc-supply = <&vmmc>;
-       ti,bus-width = <8>;
+       bus-width = <8>;
 };
 
 &mmc2 {
@@ -72,5 +72,5 @@
 
 &mmc5 {
        ti,non-removable;
-       ti,bus-width = <4>;
+       bus-width = <4>;
 };
index 67b2e98074c696e8d3631abc634e3735890923f1..a1dd873425fcbbd9ea8990b3abbec8da828afa73 100644 (file)
 
 &mmc1 {
        vmmc-supply = <&vmmc>;
-       ti,bus-width = <8>;
+       bus-width = <8>;
 };
 
 &mmc2 {
        vmmc-supply = <&vaux1>;
-       ti,bus-width = <8>;
+       bus-width = <8>;
        ti,non-removable;
 };
 
 };
 
 &mmc5 {
-       ti,bus-width = <4>;
+       bus-width = <4>;
        ti,non-removable;
 };
index ac3fb75584595803cc4e14ff77221f4d63df9456..67c6511f6372a8b8dee4f527e8e58b1dfc375f79 100644 (file)
@@ -54,6 +54,7 @@
                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@78000200 {
@@ -66,5 +67,6 @@
 
        sdhci@78000400 {
                support-8bit;
+               bus-width = <8>;
        };
 };
index 6e8447dc020203c537383caa219d6c23bf2e775c..e9cae68861deefb0a96e1340da5b389a57fdc1ab 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@c8000400 {
                wp-gpios = <&gpio 59 0>; /* gpio PH3 */
                power-gpios = <&gpio 70 0>; /* gpio PI6 */
                support-8bit;
+               bus-width = <8>;
        };
 };
index 6c02abb469d4ba971bde9c4fb5aede05a99d4783..03d3d7994da77a43eede865906ed26ecfc61d2b6 100644 (file)
@@ -97,6 +97,7 @@
                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@c8000200 {
 
        sdhci@c8000600 {
                support-8bit;
+               bus-width = <8>;
        };
 
        gpio-keys {
index dbf1c5a171c251625e9fc39f5cec8efd35668ee1..8decf722997339f7c9ed80e967bb02c4c26c02f0 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 {
                support-8bit;
+               bus-width = <8>;
        };
 
        usb@c5000000 {
index 2dcff8728e904a03dc5ba1200b633617e2c9b048..29e54c7a3657c8248229db9b75a92cfd62363d9c 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 {
                support-8bit;
+               bus-width = <8>;
        };
 };
index 7e283c891b7f8871eca5dc5a64a79d9bb4e56590..fe0d60935e9be10109d2ed0ee7c65b9e493d9777 100644 (file)
                sdhc@2e000 {
                        status = "disabled";
                        sdhci,1-bit-only;
+                       bus-width = <1>;
                };
 
                par_io@e0100 {
index 56d4499d43889e42a971fcfffb9bd0c334645294..33e81c24e1408734bf8b431bbb319926a362fa00 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 8abdaf6697a8db6e0bf0949e9c54900cb2ac0889..0d2b082f22466717fb974d7c1714db53217299d7 100644 (file)
@@ -402,7 +402,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 c5c2a48bdd943166bff4e15ddf59718f3fbffa9a..d9a4ef4f1ed0e8b65cc212ce44a014093f5bf8fd 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))