123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- From 3bf827929a44c17bfb1bf1000b143c02ce26a929 Mon Sep 17 00:00:00 2001
- From: Daniel Golle <[email protected]>
- Date: Sat, 26 Aug 2023 21:56:51 +0100
- Subject: [PATCH] i2c: mt65xx: allow optional pmic clock
- Using the I2C host controller on the MT7981 SoC requires 4 clocks to
- be enabled. One of them, the pmic clk, is only enabled in case
- 'mediatek,have-pmic' is also set which has other consequences which
- are not desired in this case.
- Allow defining a pmic clk even in case the 'mediatek,have-pmic' propterty
- is not present and the bus is not used to connect to a pmic, but may
- still require to enable the pmic clock.
- Signed-off-by: Daniel Golle <[email protected]>
- ---
- drivers/i2c/busses/i2c-mt65xx.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
- --- a/drivers/i2c/busses/i2c-mt65xx.c
- +++ b/drivers/i2c/busses/i2c-mt65xx.c
- @@ -1444,15 +1444,19 @@ static int mtk_i2c_probe(struct platform
- if (IS_ERR(i2c->clocks[I2C_MT65XX_CLK_ARB].clk))
- return PTR_ERR(i2c->clocks[I2C_MT65XX_CLK_ARB].clk);
-
- + i2c->clocks[I2C_MT65XX_CLK_PMIC].clk = devm_clk_get_optional(&pdev->dev, "pmic");
- + if (IS_ERR(i2c->clocks[I2C_MT65XX_CLK_PMIC].clk)) {
- + dev_err(&pdev->dev, "cannot get pmic clock\n");
- + return PTR_ERR(i2c->clocks[I2C_MT65XX_CLK_PMIC].clk);
- + }
- +
- if (i2c->have_pmic) {
- - i2c->clocks[I2C_MT65XX_CLK_PMIC].clk = devm_clk_get(&pdev->dev, "pmic");
- - if (IS_ERR(i2c->clocks[I2C_MT65XX_CLK_PMIC].clk)) {
- + if (!i2c->clocks[I2C_MT65XX_CLK_PMIC].clk) {
- dev_err(&pdev->dev, "cannot get pmic clock\n");
- - return PTR_ERR(i2c->clocks[I2C_MT65XX_CLK_PMIC].clk);
- + return -ENODEV;
- }
- speed_clk = I2C_MT65XX_CLK_PMIC;
- } else {
- - i2c->clocks[I2C_MT65XX_CLK_PMIC].clk = NULL;
- speed_clk = I2C_MT65XX_CLK_MAIN;
- }
-
|