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

Commit e539649f authored by Sahitya Tummala's avatar Sahitya Tummala
Browse files

mmc: sdhci-msm: parse and configure TLMM iomem resource



Some host controllers may need additional TLMM registers to be
configured to enable the IO lines connected to it.

Change-Id: Ic334ce653bf13fef5969f08e19f6202377b8fd2e
Signed-off-by: default avatarSahitya Tummala <stummala@codeaurora.org>
parent 049b7256
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ Required properties:
  - reg : should contain SDHC, SD Core register map.
  - reg-names : indicates various resources passed to driver (via reg proptery) by name.
		Required "reg-names" are "hc_mem" and "core_mem"
		optional ones are "tlmm_mem"
  - interrupts : should contain SDHC interrupts.
  - interrupt-names : indicates interrupts passed to driver (via interrupts property) by name.
		      Required "interrupt-names" are "hc_irq" and "pwr_irq".
+18 −0
Original line number Diff line number Diff line
@@ -3804,6 +3804,8 @@ static int sdhci_msm_probe(struct platform_device *pdev)
	int ret = 0, dead = 0;
	u16 host_version;
	u32 irq_status, irq_ctl;
	struct resource *tlmm_memres = NULL;
	void __iomem *tlmm_mem;

	pr_debug("%s: Enter %s\n", dev_name(&pdev->dev), __func__);
	msm_host = devm_kzalloc(&pdev->dev, sizeof(struct sdhci_msm_host),
@@ -4001,6 +4003,22 @@ static int sdhci_msm_probe(struct platform_device *pdev)
		goto vreg_deinit;
	}

	tlmm_memres = platform_get_resource_byname(pdev,
				IORESOURCE_MEM, "tlmm_mem");
	if (tlmm_memres) {
		tlmm_mem = devm_ioremap(&pdev->dev, tlmm_memres->start,
						resource_size(tlmm_memres));

		if (!tlmm_mem) {
			dev_err(&pdev->dev, "Failed to remap tlmm registers\n");
			ret = -ENOMEM;
			goto vreg_deinit;
		}
		writel_relaxed(readl_relaxed(tlmm_mem) | 0x2, tlmm_mem);
		dev_dbg(&pdev->dev, "tlmm reg %pa value 0x%08x\n",
				&tlmm_memres->start, readl_relaxed(tlmm_mem));
	}

	/*
	 * Reset the vendor spec register to power on reset state.
	 */