Commit bcfaaa97 authored by Daniel Golle's avatar Daniel Golle Committed by Wolfram Sang
Browse files

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: default avatarDaniel Golle <daniel@makrotopia.org>
Reviewed-by: default avatarAndi Shyti <andi.shyti@kernel.org>
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
parent 19b6ffd5
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1442,15 +1442,19 @@ static int mtk_i2c_probe(struct platform_device *pdev)
	if (IS_ERR(i2c->clocks[I2C_MT65XX_CLK_ARB].clk))
		return PTR_ERR(i2c->clocks[I2C_MT65XX_CLK_ARB].clk);

	if (i2c->have_pmic) {
		i2c->clocks[I2C_MT65XX_CLK_PMIC].clk = devm_clk_get(&pdev->dev, "pmic");
	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) {
		if (!i2c->clocks[I2C_MT65XX_CLK_PMIC].clk) {
			dev_err(&pdev->dev, "cannot get pmic clock\n");
			return -ENODEV;
		}
		speed_clk = I2C_MT65XX_CLK_PMIC;
	} else {
		i2c->clocks[I2C_MT65XX_CLK_PMIC].clk = NULL;
		speed_clk = I2C_MT65XX_CLK_MAIN;
	}