On Mon, May 31, 2021 at 10:44:43AM +0200, Marc Kleine-Budde wrote: > From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > In some configurations, mainly ACPI-based, the clock frequency of the > device is supplied by very well established 'clock-frequency' > property. Hence, try to get it from the property at last if no other > providers are available. Oops, I have answered to v2 before looking for new version from you, > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> > v3: - only read clock-frequency property if no clk is found > - add error handling to device_property_read_u32() > v2: new patch > > drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c > index 47c3f408a799..c8f8bdfc1bfb 100644 > --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c > +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c > @@ -2883,11 +2883,19 @@ static int mcp251xfd_probe(struct spi_device *spi) > return dev_err_probe(&spi->dev, PTR_ERR(reg_xceiver), > "Failed to get Transceiver regulator!\n"); > > - clk = devm_clk_get(&spi->dev, NULL); > + clk = devm_clk_get_optional(&spi->dev, NULL); > if (IS_ERR(clk)) > return dev_err_probe(&spi->dev, PTR_ERR(clk), > "Failed to get Oscillator (clock)!\n"); > - freq = clk_get_rate(clk); > + if (clk) { This check basically only for property case, clk_get_rate() has it. That's why I have different flow, but this one also will work, thanks! > + freq = clk_get_rate(clk); > + } else { > + err = device_property_read_u32(&spi->dev, "clock-frequency", > + &freq); > + if (err) > + return dev_err_probe(&spi->dev, err, > + "Failed to get clock-frequency!\n"); > + } > > /* Sanity check */ > if (freq < MCP251XFD_SYSCLOCK_HZ_MIN || > -- > 2.30.2 > > -- With Best Regards, Andy Shevchenko