Skip to content

Commit

Permalink
mmc: dt: Consolidate DT bindings
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Arnd Bergmann committed May 15, 2012
1 parent e6511df commit 7f21779
Show file tree
Hide file tree
Showing 20 changed files with 66 additions and 21 deletions.
6 changes: 4 additions & 2 deletions Documentation/devicetree/bindings/mmc/fsl-esdhc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion Documentation/devicetree/bindings/mmc/mmc-spi-slot.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
27 changes: 27 additions & 0 deletions Documentation/devicetree/bindings/mmc/mmc.txt
Original file line number Diff line number Diff line change
@@ -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>;
}
4 changes: 2 additions & 2 deletions Documentation/devicetree/bindings/mmc/nvidia-sdhci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand All @@ -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>;
};
4 changes: 2 additions & 2 deletions Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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;
};
4 changes: 2 additions & 2 deletions arch/arm/boot/dts/imx53-smd.dts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
};

esdhc@50008000 { /* ESDHC2 */
fsl,card-wired;
non-removable;
status = "okay";
};

Expand Down Expand Up @@ -76,7 +76,7 @@
};

esdhc@50020000 { /* ESDHC3 */
fsl,card-wired;
non-removable;
status = "okay";
};
};
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/boot/dts/imx6q-arm2.dts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
};

usdhc@0219c000 { /* uSDHC4 */
fsl,card-wired;
non-removable;
vmmc-supply = <&reg_3p3v>;
status = "okay";
};
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/boot/dts/omap3-beagle.dts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
&mmc1 {
vmmc-supply = <&vmmc1>;
vmmc_aux-supply = <&vsim>;
ti,bus-width = <8>;
bus-width = <8>;
};

&mmc2 {
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/boot/dts/omap4-panda.dts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@

&mmc1 {
vmmc-supply = <&vmmc>;
ti,bus-width = <8>;
bus-width = <8>;
};

&mmc2 {
Expand All @@ -72,5 +72,5 @@

&mmc5 {
ti,non-removable;
ti,bus-width = <4>;
bus-width = <4>;
};
6 changes: 3 additions & 3 deletions arch/arm/boot/dts/omap4-sdp.dts
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,12 @@

&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;
};

Expand All @@ -112,6 +112,6 @@
};

&mmc5 {
ti,bus-width = <4>;
bus-width = <4>;
ti,non-removable;
};
2 changes: 2 additions & 0 deletions arch/arm/boot/dts/tegra-cardhu.dts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -66,5 +67,6 @@

sdhci@78000400 {
support-8bit;
bus-width = <8>;
};
};
2 changes: 2 additions & 0 deletions arch/arm/boot/dts/tegra-harmony.dts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@
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 {
Expand All @@ -111,5 +112,6 @@
wp-gpios = <&gpio 59 0>; /* gpio PH3 */
power-gpios = <&gpio 70 0>; /* gpio PI6 */
support-8bit;
bus-width = <8>;
};
};
2 changes: 2 additions & 0 deletions arch/arm/boot/dts/tegra-paz00.dts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -109,6 +110,7 @@

sdhci@c8000600 {
support-8bit;
bus-width = <8>;
};

gpio-keys {
Expand Down
2 changes: 2 additions & 0 deletions arch/arm/boot/dts/tegra-seaboard.dts
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,12 @@
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 {
Expand Down
2 changes: 2 additions & 0 deletions arch/arm/boot/dts/tegra-ventana.dts
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,11 @@
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>;
};
};
1 change: 1 addition & 0 deletions arch/powerpc/boot/dts/mpc8569mds.dts
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
sdhc@2e000 {
status = "disabled";
sdhci,1-bit-only;
bus-width = <1>;
};

par_io@e0100 {
Expand Down
2 changes: 1 addition & 1 deletion drivers/mmc/host/omap_hsmmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion drivers/mmc/host/sdhci-esdhc-imx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
8 changes: 6 additions & 2 deletions drivers/mmc/host/sdhci-pltfm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand All @@ -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))
Expand Down

0 comments on commit 7f21779

Please sign in to comment.