Skip to content

Commit 043465b

Browse files
Yang Yingliangwsakernel
authored andcommitted
i2c: qcom-geni: fix missing clk_disable_unprepare() and geni_se_resources_off()
Add missing clk_disable_unprepare() and geni_se_resources_off() in the error path in geni_i2c_probe(). Fixes: 14d02fb ("i2c: qcom-geni: add desc struct to prepare support for I2C Master Hub variant") Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Reviewed-by: Andi Shyti <andi.shyti@kernel.org> Signed-off-by: Wolfram Sang <wsa@kernel.org>
1 parent ceb6a6f commit 043465b

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

drivers/i2c/busses/i2c-qcom-geni.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,7 @@ static int geni_i2c_probe(struct platform_device *pdev)
858858
ret = geni_se_resources_on(&gi2c->se);
859859
if (ret) {
860860
dev_err(dev, "Error turning on resources %d\n", ret);
861+
clk_disable_unprepare(gi2c->core_clk);
861862
return ret;
862863
}
863864
proto = geni_se_read_proto(&gi2c->se);
@@ -877,8 +878,11 @@ static int geni_i2c_probe(struct platform_device *pdev)
877878
/* FIFO is disabled, so we can only use GPI DMA */
878879
gi2c->gpi_mode = true;
879880
ret = setup_gpi_dma(gi2c);
880-
if (ret)
881+
if (ret) {
882+
geni_se_resources_off(&gi2c->se);
883+
clk_disable_unprepare(gi2c->core_clk);
881884
return dev_err_probe(dev, ret, "Failed to setup GPI DMA mode\n");
885+
}
882886

883887
dev_dbg(dev, "Using GPI DMA mode for I2C\n");
884888
} else {
@@ -891,6 +895,8 @@ static int geni_i2c_probe(struct platform_device *pdev)
891895

892896
if (!tx_depth) {
893897
dev_err(dev, "Invalid TX FIFO depth\n");
898+
geni_se_resources_off(&gi2c->se);
899+
clk_disable_unprepare(gi2c->core_clk);
894900
return -EINVAL;
895901
}
896902

0 commit comments

Comments
 (0)