From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [RFC 10/10] mmc: sdhci-tegra: Add IOMMU support Date: Thu, 26 Jun 2014 22:49:50 +0200 Message-ID: <1403815790-8548-11-git-send-email-thierry.reding@gmail.com> References: <1403815790-8548-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1403815790-8548-1-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , Stephen Warren , Arnd Bergmann , Will Deacon , Joerg Roedel Cc: Olav Haugan , devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Grant Grundler , Rhyland Klein , iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Marc Zyngier , Allen Martin , Paul Walmsley , linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Cho KyongHo , Dave Martin , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: devicetree@vger.kernel.org From: Thierry Reding Attach to the device's master interface of the IOMMU at .probe() time. IOMMU support becomes available via the DMA mapping API interoperation code, but this explicit attachment is necessary to ensure proper probe order. Signed-off-by: Thierry Reding --- drivers/mmc/host/sdhci-tegra.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index 33100d10d176..b884614fa4e6 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -237,6 +238,11 @@ static int sdhci_tegra_probe(struct platform_device *pdev) match = of_match_device(sdhci_tegra_dt_match, &pdev->dev); if (!match) return -EINVAL; + + rc = iommu_attach(&pdev->dev); + if (rc < 0) + return rc; + soc_data = match->data; host = sdhci_pltfm_init(pdev, soc_data->pdata, 0); @@ -310,6 +316,8 @@ static int sdhci_tegra_remove(struct platform_device *pdev) clk_disable_unprepare(pltfm_host->clk); clk_put(pltfm_host->clk); + iommu_detach(&pdev->dev); + sdhci_pltfm_free(pdev); return 0; -- 2.0.0