[PATCH v2] ARM: imx: verdin-imx8mm: Set CAN oscillator frequency based on model

Francesco Dolcini francesco at dolcini.it
Wed May 22 08:39:48 CEST 2024


On Wed, May 22, 2024 at 02:21:14AM +0200, Marek Vasut wrote:
> The older i.MX8M Mini Verdin SoMs may came with 20 MHz SPI CAN controller
> oscillator, the newer SoMs always use 40 MHz oscillator. Handle both by
> overriding the oscillator frequency just before booting the kernel.
> 
> These are the known variants with 20 MHz oscillator:
> - 0055, V1.1A, V1.1B, V1.1C and V1.1D, use a 20MHz oscillator
> - 0059, V1.1A and V1.1B, use a 20MHz oscillator
> 
> Signed-off-by: Marek Vasut <marex at denx.de>
> ---
> Cc: "NXP i.MX U-Boot Team" <uboot-imx at nxp.com>
> Cc: Fabio Estevam <festevam at gmail.com>
> Cc: Francesco Dolcini <francesco.dolcini at toradex.com>
> Cc: Marcel Ziswiler <marcel.ziswiler at toradex.com>
> Cc: Martyn Welch <martyn.welch at collabora.com>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: u-boot at lists.denx.de
> ---
> V2: - Update the comment in conditional statement
>     - Update ver_assembly check for 0055 rev.A/B/C/D
> ---
>  board/toradex/verdin-imx8mm/verdin-imx8mm.c | 30 +++++++++++++++++++++
>  1 file changed, 30 insertions(+)
> 
> diff --git a/board/toradex/verdin-imx8mm/verdin-imx8mm.c b/board/toradex/verdin-imx8mm/verdin-imx8mm.c
> index 55c02653da6..ef632d95f0a 100644
> --- a/board/toradex/verdin-imx8mm/verdin-imx8mm.c
> +++ b/board/toradex/verdin-imx8mm/verdin-imx8mm.c
> @@ -125,6 +125,36 @@ int board_phys_sdram_size(phys_size_t *size)
>  #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
>  int ft_board_setup(void *blob, struct bd_info *bd)
>  {
> +	const char *canoscpath = "/oscillator";
> +	int freq = 40000000;	/* 40 MHz is used on most variants */
> +	int canoscoff, ret;
> +
> +	canoscoff = fdt_path_offset(blob, canoscpath);
> +	if (canoscoff < 0)	/* No CAN oscillator found. */
> +		goto exit;
> +
> +	/*
> +	 * The actual "prodid" (PID4 in Toradex naming) that have the CAN
> +	 * functionality are 0055 and 0059. Special case 20 MHz variant
> +	 * here:
> +	 * - 0055, V1.1A, V1.1B, V1.1C and V1.1D, use a 20MHz oscillator
> +	 * - 0059, V1.1A and V1.1B, use a 20MHz oscillator
> +	 */

Any reason why you ignored my suggestion here? The variants you list
here are the only one with a 20MHz oscillator, and this is correct.

What is not correct is that 0055/0059 are the only variant with CAN
functionality. We have other "prodid" with CAN functionality.

With that said, the code is correct, thanks. I appreciate you taking care
of this.

Francesco



More information about the U-Boot mailing list