From d9cf59816246bdd7dc14db04920d892c72be204d Mon Sep 17 00:00:00 2001 From: Simon Xue Date: Tue, 6 Apr 2021 16:47:54 +0800 Subject: [PATCH] iommu/rockchip: make compatible to extra sclk Change-Id: Ia9821eb74effd0b61a42c5cb19ca12f9cf036b78 Signed-off-by: Simon Xue --- drivers/iommu/rockchip-iommu.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c index 9fe799efdca5..ddd43e5667d1 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c @@ -1221,16 +1221,26 @@ static int rk_iommu_probe(struct platform_device *pdev) if (!iommu->clocks) return -ENOMEM; + /* RK1808 isp iommu has an extra sclk */ + err = of_property_match_string(dev->of_node, "clock-names", "sclk"); + if (err >= 0) + iommu->num_clocks++; + for (i = 0; i < iommu->num_clocks; ++i) { - err = of_property_match_string(dev->of_node, "clock-names", - rk_iommu_clocks[i]); - if (err < 0) { - if (!strcmp(rk_iommu_clocks[i], "iface")) { - iommu->clocks[i].id = "hclk"; - dev_warn(dev, "iommu hclk need to update to iface\n"); - } + if (i == 2) { + iommu->clocks[i].id = "sclk"; } else { - iommu->clocks[i].id = rk_iommu_clocks[i]; + err = of_property_match_string(dev->of_node, + "clock-names", + rk_iommu_clocks[i]); + if (err < 0) { + if (!strcmp(rk_iommu_clocks[i], "iface")) { + iommu->clocks[i].id = "hclk"; + dev_warn(dev, "iommu hclk need to update to iface\n"); + } + } else { + iommu->clocks[i].id = rk_iommu_clocks[i]; + } } }