Re: [PATCH v3 1/2] can: mcp251xfd: mcp251xfd_probe(): try to get crystal clock rate from property

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux