From: Andy Yan Date: Mon, 12 May 2025 12:46:08 +0000 (+0800) Subject: drm/rockchip: inno_hdmi: switch i2c registration to devm functions X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=078bb17c7bbfe5bb119943fb7a9ef4f9a8c8c543;p=thirdparty%2Flinux.git drm/rockchip: inno_hdmi: switch i2c registration to devm functions Switch from i2c_add_adapter() to resource managed devm_i2c_add_adapter(), which will make the cleanup code more simpler. Signed-off-by: Andy Yan Signed-off-by: Heiko Stuebner Link: https://lore.kernel.org/r/20250512124615.2848731-8-andyshrk@163.com --- diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c index f362803060796..776a2aa74e49c 100644 --- a/drivers/gpu/drm/rockchip/inno_hdmi.c +++ b/drivers/gpu/drm/rockchip/inno_hdmi.c @@ -1230,10 +1230,9 @@ static struct i2c_adapter *inno_hdmi_i2c_adapter(struct inno_hdmi *hdmi) strscpy(adap->name, "Inno HDMI", sizeof(adap->name)); i2c_set_adapdata(adap, hdmi); - ret = i2c_add_adapter(adap); + ret = devm_i2c_add_adapter(hdmi->dev, adap); if (ret) { dev_warn(hdmi->dev, "cannot add %s I2C adapter\n", adap->name); - devm_kfree(hdmi->dev, i2c); return ERR_PTR(ret); } @@ -1316,7 +1315,7 @@ static int inno_hdmi_bind(struct device *dev, struct device *master, ret = inno_hdmi_register(drm, hdmi); if (ret) - goto err_put_adapter; + goto err_disable_clk; dev_set_drvdata(dev, hdmi); @@ -1330,8 +1329,6 @@ static int inno_hdmi_bind(struct device *dev, struct device *master, err_cleanup_hdmi: hdmi->connector.funcs->destroy(&hdmi->connector); hdmi->encoder.encoder.funcs->destroy(&hdmi->encoder.encoder); -err_put_adapter: - i2c_put_adapter(hdmi->ddc); err_disable_clk: clk_disable_unprepare(hdmi->refclk); err_disable_pclk: @@ -1347,7 +1344,6 @@ static void inno_hdmi_unbind(struct device *dev, struct device *master, hdmi->connector.funcs->destroy(&hdmi->connector); hdmi->encoder.encoder.funcs->destroy(&hdmi->encoder.encoder); - i2c_put_adapter(hdmi->ddc); clk_disable_unprepare(hdmi->refclk); clk_disable_unprepare(hdmi->pclk); }