Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 943c2ace authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'mmc-merge-for-3.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc

Pull MMC updates from Chris Ball:
 "Core:
   - Add DT properties for card detection (broken-cd, cd-gpios,
     non-removable)
   - Don't poll non-removable devices
   - Fixup/rework eMMC sleep mode/"power off notify" feature
   - Support eMMC background operations (BKOPS).  To set the one-time
     programmable fuse that enables bkops on an eMMC that doesn't
     already have it set, you can use the "mmc bkops enable" command in:

       git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git

  Drivers:
   - atmel-mci, dw_mmc, pxa-mci, dove, s3c, spear: Add device tree
     support
   - bfin_sdh: Add support for the controller in bf60x
   - dw_mmc: Support Samsung Exynos SoCs
   - eSDHC: Add ADMA support
   - sdhci: Support testing a cd-gpio (from slot-gpio) instead of
     presence bit
   - sdhci-pltfm: Support broken-cd DT property
   - tegra: Convert to only supporting DT (mach-tegra has gone DT-only)"

* tag 'mmc-merge-for-3.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (67 commits)
  mmc: core: Fixup broken suspend and eMMC4.5 power off notify
  mmc: sdhci-spear: Add clk_{un}prepare() support
  mmc: sdhci-spear: add device tree bindings
  mmc: sdhci-s3c: Add clk_(enable/disable) in runtime suspend/resume
  mmc: core: Replace MMC_CAP2_BROKEN_VOLTAGE with test for fixed regulator
  mmc: sdhci-pxav3: Use sdhci_get_of_property for parsing DT quirks
  mmc: dt: Support "broken-cd" property in sdhci-pltfm
  mmc: sdhci-s3c: fix the wrong number of max bus clocks
  mmc: sh-mmcif: avoid oops on spurious interrupts
  mmc: sh-mmcif: properly handle MMC_WRITE_MULTIPLE_BLOCK completion IRQ
  mmc: sdhci-s3c: Fix crash on module insertion for second time
  mmc: sdhci-s3c: Enable only required bus clock
  mmc: Revert "mmc: dw_mmc: Add check for IDMAC configuration"
  mmc: mxcmmc: fix bug that may block a data transfer forever
  mmc: omap_hsmmc: Pass on the suspend failure to the PM core
  mmc: atmel-mci: AP700x PDC is not connected to MCI
  mmc: atmel-mci: DMA can be used with other controllers
  mmc: mmci: use clk_prepare_enable and clk_disable_unprepare
  mmc: sdhci-s3c: Add device tree support
  mmc: dw_mmc: add support for exynos specific implementation of dw-mshc
  ...
parents 10f39f04 e6c08586
Loading
Loading
Loading
Loading
+68 −0
Original line number Diff line number Diff line
* Atmel High Speed MultiMedia Card Interface

This controller on atmel products provides an interface for MMC, SD and SDIO
types of memory cards.

This file documents differences between the core properties described
by mmc.txt and the properties used by the atmel-mci driver.

1) MCI node

Required properties:
- compatible: should be "atmel,hsmci"
- #address-cells: should be one. The cell is the slot id.
- #size-cells: should be zero.
- at least one slot node

The node contains child nodes for each slot that the platform uses

Example MCI node:

mmc0: mmc@f0008000 {
	compatible = "atmel,hsmci";
	reg = <0xf0008000 0x600>;
	interrupts = <12 4>;
	#address-cells = <1>;
	#size-cells = <0>;

	[ child node definitions...]
};

2) slot nodes

Required properties:
- reg: should contain the slot id.
- bus-width: number of data lines connected to the controller

Optional properties:
- cd-gpios: specify GPIOs for card detection
- cd-inverted: invert the value of external card detect gpio line
- wp-gpios: specify GPIOs for write protection

Example slot node:

slot@0 {
	reg = <0>;
	bus-width = <4>;
	cd-gpios = <&pioD 15 0>
	cd-inverted;
};

Example full MCI node:
mmc0: mmc@f0008000 {
	compatible = "atmel,hsmci";
	reg = <0xf0008000 0x600>;
	interrupts = <12 4>;
	#address-cells = <1>;
	#size-cells = <0>;
	slot@0 {
		reg = <0>;
		bus-width = <4>;
		cd-gpios = <&pioD 15 0>
		cd-inverted;
	};
	slot@1 {
		reg = <1>;
		bus-width = <4>;
	};
};
+87 −0
Original line number Diff line number Diff line
* Samsung Exynos specific extensions to the Synopsis Designware Mobile
  Storage Host Controller

The Synopsis designware mobile storage host controller is used to interface
a SoC with storage medium such as eMMC or SD/MMC cards. This file documents
differences between the core Synopsis dw mshc controller properties described
by synposis-dw-mshc.txt and the properties used by the Samsung Exynos specific
extensions to the Synopsis Designware Mobile Storage Host Controller.

Required Properties:

* compatible: should be
	- "samsung,exynos4210-dw-mshc": for controllers with Samsung Exynos4210
	  specific extentions.
	- "samsung,exynos4412-dw-mshc": for controllers with Samsung Exynos4412
	  specific extentions.
	- "samsung,exynos5250-dw-mshc": for controllers with Samsung Exynos5250
	  specific extentions.

* samsung,dw-mshc-ciu-div: Specifies the divider value for the card interface
  unit (ciu) clock. This property is applicable only for Exynos5 SoC's and
  ignored for Exynos4 SoC's. The valid range of divider value is 0 to 7.

* samsung,dw-mshc-sdr-timing: Specifies the value of CIU clock phase shift value
  in transmit mode and CIU clock phase shift value in receive mode for single
  data rate mode operation. Refer notes below for the order of the cells and the
  valid values.

* samsung,dw-mshc-ddr-timing: Specifies the value of CUI clock phase shift value
  in transmit mode and CIU clock phase shift value in receive mode for double
  data rate mode operation. Refer notes below for the order of the cells and the
  valid values.

  Notes for the sdr-timing and ddr-timing values:

    The order of the cells should be
      - First Cell: CIU clock phase shift value for tx mode.
      - Second Cell: CIU clock phase shift value for rx mode.

    Valid values for SDR and DDR CIU clock timing for Exynos5250:
      - valid value for tx phase shift and rx phase shift is 0 to 7.
      - when CIU clock divider value is set to 3, all possible 8 phase shift
        values can be used.
      - if CIU clock divider value is 0 (that is divide by 1), both tx and rx
        phase shift clocks should be 0.

Required properties for a slot:

* gpios: specifies a list of gpios used for command, clock and data bus. The
  first gpio is the command line and the second gpio is the clock line. The
  rest of the gpios (depending on the bus-width property) are the data lines in
  no particular order. The format of the gpio specifier depends on the gpio
  controller.

Example:

  The MSHC controller node can be split into two portions, SoC specific and
  board specific portions as listed below.

	dwmmc0@12200000 {
		compatible = "samsung,exynos5250-dw-mshc";
		reg = <0x12200000 0x1000>;
		interrupts = <0 75 0>;
		#address-cells = <1>;
		#size-cells = <0>;
	};

	dwmmc0@12200000 {
		num-slots = <1>;
		supports-highspeed;
		broken-cd;
		fifo-depth = <0x80>;
		card-detect-delay = <200>;
		samsung,dw-mshc-ciu-div = <3>;
		samsung,dw-mshc-sdr-timing = <2 3>;
		samsung,dw-mshc-ddr-timing = <1 2>;

		slot@0 {
			reg = <0>;
			bus-width = <8>;
			gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>,
				<&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>,
				<&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>,
				<&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>,
				<&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>;
		};
	};
+7 −2
Original line number Diff line number Diff line
@@ -9,12 +9,17 @@ Interpreted by the OF core:
Required properties:
- bus-width: Number of data lines, can be <1>, <4>, or <8>

Optional properties:
Card detection:
If no property below is supplied, standard SDHCI card detect is used.
Only one of the properties in this section should be supplied:
  - broken-cd: There is no card detection available; polling must be used.
  - cd-gpios: Specify GPIOs for card detection, see gpio binding
  - non-removable: non-removable slot (like eMMC); assume always present.

Optional properties:
- wp-gpios: Specify GPIOs for write protection, see gpio binding
- cd-inverted: when present, polarity on the cd 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:
+25 −0
Original line number Diff line number Diff line
* PXA MMC drivers

Driver bindings for the PXA MCI (MMC/SDIO) interfaces

Required properties:
- compatible: Should be "marvell,pxa-mmc".
- vmmc-supply: A regulator for VMMC

Optional properties:
- marvell,detect-delay-ms: sets the detection delay timeout in ms.
- marvell,gpio-power: GPIO spec for the card power enable pin

This file documents differences between the core properties in mmc.txt
and the properties used by the pxa-mmc driver.

Examples:

mmc0: mmc@41100000 {
	compatible = "marvell,pxa-mmc";
	reg = <0x41100000 0x1000>;
	interrupts = <23>;
	cd-gpios = <&gpio 23 0>;
	wp-gpios = <&gpio 24 0>;
};
+53 −0
Original line number Diff line number Diff line
* Samsung's SDHCI Controller device tree bindings

Samsung's SDHCI controller is used as a connectivity interface with external
MMC, SD and eMMC storage mediums. This file documents differences between the
core mmc properties described by mmc.txt and the properties used by the
Samsung implmentation of the SDHCI controller.

Note: The mmc core bindings documentation states that if none of the core
card-detect bindings are used, then the standard sdhci card detect mechanism
is used. The Samsung's SDHCI controller bindings extends this as listed below.

[A] The property "samsung,cd-pinmux-gpio" can be used as stated in the
    "Optional Board Specific Properties" section below.

[B] If core card-detect bindings and "samsung,cd-pinmux-gpio" property
    is not specified, it is assumed that there is no card detection
    mechanism used.

Required SoC Specific Properties:
- compatible: should be one of the following
  - "samsung,s3c6410-sdhci": For controllers compatible with s3c6410 sdhci
    controller.
  - "samsung,exynos4210-sdhci": For controllers compatible with Exynos4 sdhci
    controller.

Required Board Specific Properties:
- gpios: Should specify the gpios used for clock, command and data lines. The
  gpio specifier format depends on the gpio controller.

Optional Board Specific Properties:
- samsung,cd-pinmux-gpio: Specifies the card detect line that is routed
  through a pinmux to the card-detect pin of the card slot. This property
  should be used only if none of the mmc core card-detect properties are
  used.

Example:
	sdhci@12530000 {
		compatible = "samsung,exynos4210-sdhci";
		reg = <0x12530000 0x100>;
		interrupts = <0 75 0>;
		bus-width = <4>;
		cd-gpios = <&gpk2 2 2 3 3>;
		gpios = <&gpk2 0 2 0 3>,  /* clock line */
			<&gpk2 1 2 0 3>,  /* command line */
			<&gpk2 3 2 3 3>,  /* data line 0 */
			<&gpk2 4 2 3 3>,  /* data line 1 */
			<&gpk2 5 2 3 3>,  /* data line 2 */
			<&gpk2 6 2 3 3>;  /* data line 3 */
	};

	Note: This example shows both SoC specific and board specific properties
	in a single device node. The properties can be actually be seperated
	into SoC specific node and board specific node.
Loading