
On Thu, Feb 29, 2024 at 02:21:08PM +0000, Volodymyr Babchuk wrote:
@@ -223,7 +229,7 @@ U_BOOT_DRIVER(qcom_clk) = { int qcom_cc_bind(struct udevice *parent) { struct msm_clk_data *data = (struct msm_clk_data *)dev_get_driver_data(parent);
- struct udevice *clkdev, *rstdev;
- struct udevice *clkdev, *rstdev, *pwrdev; struct driver *drv; int ret;
@@ -253,6 +259,20 @@ int qcom_cc_bind(struct udevice *parent) if (ret) device_unbind(clkdev);
Change this to:
if (ret) goto unbind_clkdev;
- if (!data->power_domains)
return ret;
Then this becomes:
if (!data->power_domains) return 0;
- /* Get a handle to the common power domain handler */
- drv = lists_driver_lookup_name("qcom_power");
- if (!drv)
return -ENOENT;
if (!drv) { ret = -ENOENT; goto unbind_rstdev; }
- /* Register the power domain controller */
- ret = device_bind_with_driver_data(parent, drv, "qcom_power", (ulong)data,
dev_ofnode(parent), &pwrdev);
- if (ret)
device_unbind(pwrdev);
pwrdev wasn't bound. Free the last *successful* allocation which was still rstdev.
if (ret) goto unbind_rstdev;
return 0;
unbind_rstdev: device_unbind(rstdev); unbind_clkdev: device_unbind(clkdev);
return ret;
- return ret;
}
regards, dan carpenter