i2c: synquacer: Deal with optional PCLK correctly
commit f2990f8630531a99cad4dc5c44cb2a11ded42492 upstream.
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: 55750148e5
("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: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
476ecb9a7b
commit
406c275efb
1 changed files with 3 additions and 2 deletions
|
@ -550,12 +550,13 @@ 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");
|
||||
|
||||
i2c->pclkrate = clk_get_rate(pclk);
|
||||
if (pclk)
|
||||
i2c->pclkrate = clk_get_rate(pclk);
|
||||
|
||||
if (i2c->pclkrate < SYNQUACER_I2C_MIN_CLK_RATE ||
|
||||
i2c->pclkrate > SYNQUACER_I2C_MAX_CLK_RATE)
|
||||
|
|
Loading…
Reference in a new issue