iommu/rockchip: make clock handling optional

A patch from »iommu/rockchip: make clock handling optional« in state Mainline for linux-kernel

From: Heiko Stuebner <heiko@...> Date: Mon, 9 Apr 2018 23:01:35 +0200


iommu clocks are optional, so the driver should not fail if they are not present. Instead just set the number of clocks to 0, which the clk-blk APIs can handle just fine. Fixes: f2e3a5f557ad ("iommu/rockchip: Control clocks needed to access the IOMMU") Signed-off-by: Heiko Stuebner <heiko@...> Reviewed-by: Robin Murphy <robin.murphy@...>


changes in v2: - keep it required in the binding for future variants but optional in the code for backwards compatiblity - follow Robin Murphy's beautification suggestion As the original changes breaks a lot of display support in 4.17-rc1, this should abviously go in as fix into 4.17. drivers/iommu/rockchip-iommu.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)


  • 8 lines added
  • 1 lines removed


------------------------ drivers/iommu/rockchip-iommu.c ------------------------
index 5fc8656c60f9..422d22990289 100644
@@ -1175,8 +1175,15 @@ static int rk_iommu_probe(struct platform_device *pdev)
for (i = 0; i < iommu->num_clocks; ++i)
iommu->clocks[i].id = rk_iommu_clocks[i];
+ /*
+ * iommu clocks should be present for all new devices and devicetrees
+ * but there are older devicetrees without clocks out in the wild.
+ * So clocks as optional for the time being.
+ */
err = devm_clk_bulk_get(iommu->dev, iommu->num_clocks, iommu->clocks);
- if (err)
+ if (err == -ENOENT)
+ iommu->num_clocks = 0;
+ else if (err)
return err;
err = clk_bulk_prepare(iommu->num_clocks, iommu->clocks);

Recent Patches

About Us

Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer.