From patchwork Thu Feb 18 14:12:56 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Szyprowski X-Patchwork-Id: 8350291 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id C8885C0553 for ; Thu, 18 Feb 2016 14:22:10 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 0B5CD2024D for ; Thu, 18 Feb 2016 14:22:10 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 33B6020145 for ; Thu, 18 Feb 2016 14:22:09 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aWPRQ-0007YL-3L; Thu, 18 Feb 2016 14:20:24 +0000 Received: from mailout1.w1.samsung.com ([210.118.77.11]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aWPLR-0008HX-1m for linux-arm-kernel@lists.infradead.org; Thu, 18 Feb 2016 14:14:14 +0000 Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0O2Q00HQPY6C76A0@mailout1.w1.samsung.com> for linux-arm-kernel@lists.infradead.org; Thu, 18 Feb 2016 14:13:25 +0000 (GMT) X-AuditID: cbfec7f5-f79b16d000005389-5f-56c5d1843b47 Received: from eusync4.samsung.com ( [203.254.199.214]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id 12.20.21385.481D5C65; Thu, 18 Feb 2016 14:13:24 +0000 (GMT) Received: from amdc1339.digital.local ([106.116.147.30]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0O2Q00576Y5X95B0@eusync4.samsung.com>; Thu, 18 Feb 2016 14:13:24 +0000 (GMT) From: Marek Szyprowski To: iommu@lists.linux-foundation.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 09/13] iommu: exynos: add support for SYSMMU controller with bogus version reg Date: Thu, 18 Feb 2016 15:12:56 +0100 Message-id: <1455804780-9616-10-git-send-email-m.szyprowski@samsung.com> X-Mailer: git-send-email 1.9.2 In-reply-to: <1455804780-9616-1-git-send-email-m.szyprowski@samsung.com> References: <1455804780-9616-1-git-send-email-m.szyprowski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrILMWRmVeSWpSXmKPExsVy+t/xa7otF4+GGUzts7TYOGM9q8Wk+xNY LBbst7bonL2B3eL1C0OL/sevmS02Pb7GajHj/D4mi7VH7rI7cHo8OTiPyWPTqk42j81L6j0m 31jO6NG3ZRWjx+dNcgFsUVw2Kak5mWWpRfp2CVwZa9f3sRcs5K/4t7iTtYHxGU8XIyeHhICJ xJqutawQtpjEhXvr2boYuTiEBJYySux71cQE4TQxSZx79YwZpIpNwFCi620XG4gtIpAv8WLv XxaQImaBX4wS5zrbmUASwgLJEtNnPmcEsVkEVCWmPZ4CFucV8JA4en4tO8Q6OYn/L1eAxTmB 4ptPbQCrFxJwl/jzcCbTBEbeBYwMqxhFU0uTC4qT0nON9IoTc4tL89L1kvNzNzFCAu7rDsal x6wOMQpwMCrx8G54cSRMiDWxrLgy9xCjBAezkgjv7r1Hw4R4UxIrq1KL8uOLSnNSiw8xSnOw KInzztz1PkRIID2xJDU7NbUgtQgmy8TBKdXAeJB/UY6Ae3B7rbDHVuFmfdtKp0W9U/lua8c8 XffyY8PalfNlyvdW29u3hBl4P5uy+sB9360e4v8lU3W14iZ8vmtXudylKHrvZpFZq7V+rb2W dlGN0fMQQ7nXXOtrlyPKpzQv/qX8hHFSlc9thf06cwOzElKYm1yevM++Wm/Vx1R1u+ak0f88 JZbijERDLeai4kQA6S7wEDQCAAA= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160218_061413_481261_E32C709E X-CRM114-Status: GOOD ( 16.66 ) X-Spam-Score: -6.9 (------) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , Joerg Roedel , Inki Dae , Kukjin Kim , Marek Szyprowski MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP SYSMMU on some SoCs reports bogus values in VERSION register. Force hardware version to 1.0 for such controllers. This patch also moves reading version register to driver's probe() function. Signed-off-by: Marek Szyprowski --- drivers/iommu/exynos-iommu.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index e42a76cc9674..8e289e2a05fb 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -284,6 +284,28 @@ static void __sysmmu_set_ptbase(struct sysmmu_drvdata *data, phys_addr_t pgd) __sysmmu_tlb_invalidate(data); } +static void __sysmmu_get_version(struct sysmmu_drvdata *data) +{ + u32 ver; + + clk_enable(data->clk_master); + clk_enable(data->clk); + + ver = __raw_readl(data->sfrbase + REG_MMU_VERSION); + + /* controllers on some SoCs don't report proper version */ + if (ver == 0x80000001u) + data->version = MAKE_MMU_VER(1, 0); + else + data->version = MMU_RAW_VER(ver); + + dev_dbg(data->sysmmu, "hardware version: %d.%d\n", + MMU_MAJ_VER(data->version), MMU_MIN_VER(data->version)); + + clk_disable(data->clk); + clk_disable(data->clk_master); +} + static void show_fault_information(struct sysmmu_drvdata *data, const struct sysmmu_fault_info *finfo, sysmmu_iova_t fault_addr) @@ -385,7 +407,6 @@ static void __sysmmu_init_config(struct sysmmu_drvdata *data) { unsigned int cfg; - data->version = MMU_RAW_VER(__raw_readl(data->sfrbase + REG_MMU_VERSION)); if (data->version <= MAKE_MMU_VER(3, 1)) cfg = CFG_LRU | CFG_QOS(15); else if (data->version <= MAKE_MMU_VER(3, 2)) @@ -551,6 +572,7 @@ static int __init exynos_sysmmu_probe(struct platform_device *pdev) platform_set_drvdata(pdev, data); + __sysmmu_get_version(data); pm_runtime_enable(dev); return 0;