
On 1/15/24 16:44, Francesco Dolcini wrote:
On Sat, Jan 13, 2024 at 07:33:17PM +0100, Marek Vasut wrote:
The older i.MX8M Mini Verdin SoMs before rev. 1.1C came with 20 MHz SPI CAN controller oscillator, the newer SoMs use 40 MHz oscillator. Handle both by overriding the oscillator frequency just before booting the kernel.
Signed-off-by: Marek Vasut marex@denx.de
Cc: "NXP i.MX U-Boot Team" uboot-imx@nxp.com Cc: Fabio Estevam festevam@gmail.com Cc: Francesco Dolcini francesco.dolcini@toradex.com Cc: Marcel Ziswiler marcel.ziswiler@toradex.com Cc: Philippe Schenker philippe.schenker@toradex.com
Philippe is no longer in toradex, removed from cc list.
Cc: Stefano Babic sbabic@denx.de
board/toradex/verdin-imx8mm/verdin-imx8mm.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/board/toradex/verdin-imx8mm/verdin-imx8mm.c b/board/toradex/verdin-imx8mm/verdin-imx8mm.c index b2781b51d6a..8bc1a51eeb1 100644 --- a/board/toradex/verdin-imx8mm/verdin-imx8mm.c +++ b/board/toradex/verdin-imx8mm/verdin-imx8mm.c @@ -142,6 +142,25 @@ 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 canoscoff, freq, ret;
- canoscoff = fdt_path_offset(blob, canoscpath);
- if (canoscoff < 0) /* No CAN oscillator found. */
goto exit;
- if (tdx_hw_tag.ver_assembly < 2) /* rev. A or B */
freq = 20000000;
- else /* rev. C or newer */
freq = 40000000;
So, the situation is more complex than what I thought initially.
The actual frequency of the oscillator depends on the whole `struct toradex_hw`, you would need to check prodid, ver_major, ver_minor and ver_assembly.
In addition to that code should not expect `ver_assembly` to be an increasing number, this is just a number that is matching the BOM.
The actual `prodid` (PID4 in Toradex naming) that have the CAN functionality are 0055 and 0059.
0059, V1.1A and V1.1B, use a 20MHz oscillator 0055, V1.1A, V1.1B, V1.1C and V1.1D, use a 20Mhz oscillator
Do you happen to have a table of what was populated with which oscillator, so I can fill all the 20 MHz parts in right away ?