Commit 125b42e1 authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Wentao Guan
Browse files

i2c: synquacer: Deal with optional PCLK correctly

stable inclusion
from stable-v6.6.55
commit c7e0da7449326a0766ff9d651944dcf127c56a5d
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IB0MX4

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c7e0da7449326a0766ff9d651944dcf127c56a5d



--------------------------------

[ Upstream commit f2990f8630531a99cad4dc5c44cb2a11ded42492 ]

ACPI boot does not provide clocks and regulators, but instead, provides
the PCLK rate directly, and enables the clock in firmware. So deal
gracefully with this.

Fixes: 55750148e559 ("i2c: synquacer: Fix an error handling path in synquacer_i2c_probe()")
Cc: stable@vger.kernel.org # v6.10+
Cc: Andi Shyti <andi.shyti@kernel.org>
Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
Signed-off-by: default avatarAndi Shyti <andi.shyti@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
(cherry picked from commit c7e0da7449326a0766ff9d651944dcf127c56a5d)
Signed-off-by: default avatarWentao Guan <guanwentao@uniontech.com>
parent 345468ff
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -550,11 +550,12 @@ static int synquacer_i2c_probe(struct platform_device *pdev)
	device_property_read_u32(&pdev->dev, "socionext,pclk-rate",
				 &i2c->pclkrate);

	pclk = devm_clk_get_enabled(&pdev->dev, "pclk");
	pclk = devm_clk_get_optional_enabled(&pdev->dev, "pclk");
	if (IS_ERR(pclk))
		return dev_err_probe(&pdev->dev, PTR_ERR(pclk),
				     "failed to get and enable clock\n");

	if (pclk)
		i2c->pclkrate = clk_get_rate(pclk);

	if (i2c->pclkrate < SYNQUACER_I2C_MIN_CLK_RATE ||