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

Commit ccc039d6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull MMC updates from Chris Ball:
 "MMC highlights for 3.14:

  Core:
   - Avoid get_cd() on cards marked nonremovable

  Drivers:
   - arasan: New driver for controllers found in e.g. Xilinx Zynq SoC
   - dwmmc: Support Hisilicon K3 SoC controllers
   - esdhc-imx: Support for HS200 mode, DDR modes on MX6, runtime PM
   - sdhci-pci: Support O2Micro/BayHubTech controllers used in laptops
     like Lenovo ThinkPad W540, Dell Latitude E5440, Dell Latitude E6540
   - tegra: Support Tegra124 SoCs"

* tag 'mmc-updates-for-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (55 commits)
  mmc: sdhci-pci: Fix possibility of chip->fixes being null
  mmc: sdhci-pci: Fix BYT sd card getting stuck in runtime suspend
  mmc: sdhci: Allow for long command timeouts
  mmc: sdio: add a quirk for broken SDIO_CCCR_INTx polling
  mmc: sdhci: fix lockdep error in tuning routine
  mmc: dw_mmc: k3: remove clk_table
  mmc: dw_mmc: fix dw_mci_get_cd
  mmc: dw_mmc: fix sparse non static symbol warning
  mmc: sdhci-esdhc-imx: fix warning during module remove function
  mmc: sdhci-esdhc-imx: fix access hardirq-unsafe lock in atomic context
  mmc: core: sd: implement proper support for sd3.0 au sizes
  mmc: atmel-mci: add vmmc-supply support
  mmc: sdhci-pci: add broken HS200 quirk for Intel Merrifield
  mmc: sdhci: add quirk for broken HS200 support
  mmc: arasan: Add driver for Arasan SDHCI
  mmc: dw_mmc: add dw_mmc-k3 for k3 platform
  mmc: dw_mmc: use slot-gpio to handle cd pin
  mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts
  mmc: sdhci-pci: break out definitions to header file
  mmc: tmio: fixup compile error
  ...

Conflicts:
	MAINTAINERS
parents 1c294838 945be38c
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
Device Tree Bindings for the Arasan SDHCI Controller

  The bindings follow the mmc[1], clock[2] and interrupt[3] bindings. Only
  deviations are documented here.

  [1] Documentation/devicetree/bindings/mmc/mmc.txt
  [2] Documentation/devicetree/bindings/clock/clock-bindings.txt
  [3] Documentation/devicetree/bindings/interrupt-controller/interrupts.txt

Required Properties:
  - compatible: Compatibility string. Must be 'arasan,sdhci-8.9a'
  - reg: From mmc bindings: Register location and length.
  - clocks: From clock bindings: Handles to clock inputs.
  - clock-names: From clock bindings: Tuple including "clk_xin" and "clk_ahb"
  - interrupts: Interrupt specifier
  - interrupt-parent: Phandle for the interrupt controller that services
		      interrupts for this device.

Example:
	sdhci@e0100000 {
		compatible = "arasan,sdhci-8.9a";
		reg = <0xe0100000 0x1000>;
		clock-names = "clk_xin", "clk_ahb";
		clocks = <&clkc 21>, <&clkc 32>;
		interrupt-parent = <&gic>;
		interrupts = <0 24 4>;
	} ;
+46 −0
Original line number Diff line number Diff line
* Hisilicon specific extensions to the Synopsys Designware Mobile
  Storage Host Controller

Read synopsys-dw-mshc.txt for more details

The Synopsys 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 Synopsys dw mshc controller properties described
by synopsys-dw-mshc.txt and the properties used by the Hisilicon specific
extensions to the Synopsys Designware Mobile Storage Host Controller.

Required Properties:

* compatible: should be one of the following.
  - "hisilicon,hi4511-dw-mshc": for controllers with hi4511 specific extentions.

Example:

	/* for Hi3620 */

	/* SoC portion */
	dwmmc_0: dwmmc0@fcd03000 {
		compatible = "hisilicon,hi4511-dw-mshc";
		reg = <0xfcd03000 0x1000>;
		interrupts = <0 16 4>;
		#address-cells = <1>;
		#size-cells = <0>;
		clocks = <&mmc_clock HI3620_SD_CIUCLK>, <&clock HI3620_DDRC_PER_CLK>;
		clock-names = "ciu", "biu";
	};

	/* Board portion */
	dwmmc0@fcd03000 {
		num-slots = <1>;
		vmmc-supply = <&ldo12>;
		fifo-depth = <0x100>;
		supports-highspeed;
		pinctrl-names = "default";
		pinctrl-0 = <&sd_pmx_pins &sd_cfg_func1 &sd_cfg_func2>;
		slot@0 {
			reg = <0>;
			bus-width = <4>;
			disable-wp;
			cd-gpios = <&gpio10 3 0>;
		};
	};
+3 −3
Original line number Diff line number Diff line
@@ -1409,6 +1409,7 @@ F: drivers/cpuidle/cpuidle-zynq.c
N:	zynq
N:	xilinx
F:	drivers/clocksource/cadence_ttc_timer.c
F:	drivers/mmc/host/sdhci-of-arasan.c

ARM SMMU DRIVER
M:	Will Deacon <will.deacon@arm.com>
@@ -5782,7 +5783,7 @@ F: drivers/mfd/
F:	include/linux/mfd/

MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
M:	Chris Ball <cjb@laptop.org>
M:	Chris Ball <chris@printf.net>
L:	linux-mmc@vger.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
S:	Maintained
@@ -7609,7 +7610,7 @@ S: Maintained
F:	drivers/mmc/host/sdricoh_cs.c

SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
M:	Chris Ball <cjb@laptop.org>
M:	Chris Ball <chris@printf.net>
L:	linux-mmc@vger.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
S:	Maintained
@@ -8768,7 +8769,6 @@ F: include/linux/toshiba.h
F:	include/uapi/linux/toshiba.h

TMIO MMC DRIVER
M:	Guennadi Liakhovetski <g.liakhovetski@gmx.de>
M:	Ian Molton <ian@mnementh.co.uk>
L:	linux-mmc@vger.kernel.org
S:	Maintained
+4 −3
Original line number Diff line number Diff line
@@ -1959,6 +1959,7 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
	struct mmc_card *card = md->queue.card;
	struct mmc_host *host = card->host;
	unsigned long flags;
	unsigned int cmd_flags = req ? req->cmd_flags : 0;

	if (req && !mq->mqrq_prev->req)
		/* claim host only for the first request */
@@ -1974,7 +1975,7 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
	}

	mq->flags &= ~MMC_QUEUE_NEW_REQUEST;
	if (req && req->cmd_flags & REQ_DISCARD) {
	if (cmd_flags & REQ_DISCARD) {
		/* complete ongoing async transfer before issuing discard */
		if (card->host->areq)
			mmc_blk_issue_rw_rq(mq, NULL);
@@ -1983,7 +1984,7 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
			ret = mmc_blk_issue_secdiscard_rq(mq, req);
		else
			ret = mmc_blk_issue_discard_rq(mq, req);
	} else if (req && req->cmd_flags & REQ_FLUSH) {
	} else if (cmd_flags & REQ_FLUSH) {
		/* complete ongoing async transfer before issuing flush */
		if (card->host->areq)
			mmc_blk_issue_rw_rq(mq, NULL);
@@ -1999,7 +2000,7 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)

out:
	if ((!req && !(mq->flags & MMC_QUEUE_NEW_REQUEST)) ||
	     (req && (req->cmd_flags & MMC_REQ_SPECIAL_MASK)))
	     (cmd_flags & MMC_REQ_SPECIAL_MASK))
		/*
		 * Release host when there are no more requests
		 * and after special request(discard, flush) is done.
+2 −1
Original line number Diff line number Diff line
@@ -2460,7 +2460,8 @@ void mmc_rescan(struct work_struct *work)
	 */
	mmc_bus_put(host);

	if (host->ops->get_cd && host->ops->get_cd(host) == 0) {
	if (!(host->caps & MMC_CAP_NONREMOVABLE) && host->ops->get_cd &&
			host->ops->get_cd(host) == 0) {
		mmc_claim_host(host);
		mmc_power_off(host);
		mmc_release_host(host);
Loading