Skip to content

Commit 5fcd03f

Browse files
Yang Yinglianggregkh
authored andcommitted
i2c: qcom-geni: fix missing clk_disable_unprepare() and geni_se_resources_off()
[ Upstream commit 043465b ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent fb0f25c commit 5fcd03f

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
@@ -857,6 +857,7 @@ static int geni_i2c_probe(struct platform_device *pdev)
857857
ret = geni_se_resources_on(&gi2c->se);
858858
if (ret) {
859859
dev_err(dev, "Error turning on resources %d\n", ret);
860+
clk_disable_unprepare(gi2c->core_clk);
860861
return ret;
861862
}
862863
proto = geni_se_read_proto(&gi2c->se);
@@ -876,8 +877,11 @@ static int geni_i2c_probe(struct platform_device *pdev)
876877
/* FIFO is disabled, so we can only use GPI DMA */
877878
gi2c->gpi_mode = true;
878879
ret = setup_gpi_dma(gi2c);
879-
if (ret)
880+
if (ret) {
881+
geni_se_resources_off(&gi2c->se);
882+
clk_disable_unprepare(gi2c->core_clk);
880883
return dev_err_probe(dev, ret, "Failed to setup GPI DMA mode\n");
884+
}
881885

882886
dev_dbg(dev, "Using GPI DMA mode for I2C\n");
883887
} else {
@@ -890,6 +894,8 @@ static int geni_i2c_probe(struct platform_device *pdev)
890894

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

0 commit comments

Comments
 (0)