mtu3_setbits(ssusb->ippc_base, U3D_SSUSB_IP_PW_CTRL2, SSUSB_IP_DEV_PDN);
 }
 
-/* ignore the error if the clock does not exist */
-static struct clk *get_optional_clk(struct device *dev, const char *id)
-{
-       struct clk *opt_clk;
-
-       opt_clk = devm_clk_get(dev, id);
-       /* ignore error number except EPROBE_DEFER */
-       if (IS_ERR(opt_clk) && (PTR_ERR(opt_clk) != -EPROBE_DEFER))
-               opt_clk = NULL;
-
-       return opt_clk;
-}
-
 static int get_ssusb_rscs(struct platform_device *pdev, struct ssusb_mtk *ssusb)
 {
        struct device_node *node = pdev->dev.of_node;
                return PTR_ERR(ssusb->sys_clk);
        }
 
-       ssusb->ref_clk = get_optional_clk(dev, "ref_ck");
+       ssusb->ref_clk = devm_clk_get_optional(dev, "ref_ck");
        if (IS_ERR(ssusb->ref_clk))
                return PTR_ERR(ssusb->ref_clk);
 
-       ssusb->mcu_clk = get_optional_clk(dev, "mcu_ck");
+       ssusb->mcu_clk = devm_clk_get_optional(dev, "mcu_ck");
        if (IS_ERR(ssusb->mcu_clk))
                return PTR_ERR(ssusb->mcu_clk);
 
-       ssusb->dma_clk = get_optional_clk(dev, "dma_ck");
+       ssusb->dma_clk = devm_clk_get_optional(dev, "dma_ck");
        if (IS_ERR(ssusb->dma_clk))
                return PTR_ERR(ssusb->dma_clk);