[PATCH v1 0/5] board: toradex: Add new Verdin and Aquila SKUs

From: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Hi, This series adds support for 0090 PID4 Verdin iMX8M Mini Quad 4GB WB ET SKU. It also adds two new SKUs config block support: 0088 Aquila AM69 Octa 32GB WB IT and 0089 Verdin iMX95 Hexa 16GB WB IT.
Signed-off-by: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Emanuele Ghidoli (5): board: toradex: verdin-imx8mm: add 4 GB lpddr4 memory support board: toradex: verdin-imx8mm: increase maximum addressable ram to 4GB toradex: tdx-cfg-block: add aquila am69 sku 0088 pid4 toradex: tdx-cfg-block: add verdin imx95 sku 0089 pid4 toradex: tdx-cfg-block: add verdin i.mx8m mini 0090 pid4
board/toradex/common/tdx-cfg-block.c | 3 +++ board/toradex/common/tdx-cfg-block.h | 3 +++ board/toradex/verdin-imx8mm/lpddr4_timing.c | 14 +++++++------- board/toradex/verdin-imx8mm/verdin-imx8mm.c | 5 +++-- include/configs/verdin-imx8mm.h | 6 ++++-- 5 files changed, 20 insertions(+), 11 deletions(-)

From: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Add support for MT53E512M32D1ZW-046 IT:C memory. This 4 GB memory has 17 row bits instead of 16 and requires 380 ns of tRFC (tRFCab) instead of 280 ns due to increased channel density to 16 Gb. Both modifications are retro-compatible with previous memories.
Signed-off-by: Emanuele Ghidoli emanuele.ghidoli@toradex.com --- board/toradex/verdin-imx8mm/lpddr4_timing.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/board/toradex/verdin-imx8mm/lpddr4_timing.c b/board/toradex/verdin-imx8mm/lpddr4_timing.c index 4dfec679b116..eece226b5131 100644 --- a/board/toradex/verdin-imx8mm/lpddr4_timing.c +++ b/board/toradex/verdin-imx8mm/lpddr4_timing.c @@ -18,7 +18,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { {0x3d400000, 0xa1080020}, {0x3d400020, 0x202}, {0x3d400024, 0x3a980}, - {0x3d400064, 0x2d00d2}, + {0x3d400064, 0x2d011d}, {0x3d4000d0, 0xc00305ba}, {0x3d4000d4, 0x940000}, {0x3d4000dc, 0xd4002d}, @@ -34,7 +34,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { {0x3d40011c, 0x402}, {0x3d400130, 0x20600}, {0x3d400134, 0xc100002}, - {0x3d400138, 0xd8}, + {0x3d400138, 0x123}, {0x3d400144, 0x96004b}, {0x3d400180, 0x2ee0017}, {0x3d400184, 0x2605b8e}, @@ -56,7 +56,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { {0x3d400204, 0x80808}, {0x3d400214, 0x7070707}, {0x3d400218, 0x7070707}, - {0x3d40021c, 0xf0f}, + {0x3d40021c, 0xf07}, {0x3d400250, 0x29001701}, {0x3d400254, 0x2c}, {0x3d40025c, 0x4000030}, @@ -71,7 +71,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { {0x3d402020, 0x0}, {0x3d402024, 0x7d00}, {0x3d402050, 0x20d040}, - {0x3d402064, 0x6001c}, + {0x3d402064, 0x60026}, {0x3d4020dc, 0x840000}, {0x3d4020e0, 0x310000}, {0x3d4020e8, 0x66004d}, @@ -86,7 +86,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { {0x3d40211c, 0x302}, {0x3d402130, 0x20300}, {0x3d402134, 0xa100002}, - {0x3d402138, 0x1d}, + {0x3d402138, 0x27}, {0x3d402144, 0x14000a}, {0x3d402180, 0x640004}, {0x3d402190, 0x3818200}, @@ -96,7 +96,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { {0x3d403020, 0x0}, {0x3d403024, 0x1f40}, {0x3d403050, 0x20d040}, - {0x3d403064, 0x30007}, + {0x3d403064, 0x3000A}, {0x3d4030dc, 0x840000}, {0x3d4030e0, 0x310000}, {0x3d4030e8, 0x66004d}, @@ -111,7 +111,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { {0x3d40311c, 0x302}, {0x3d403130, 0x20300}, {0x3d403134, 0xa100002}, - {0x3d403138, 0x8}, + {0x3d403138, 0xA}, {0x3d403144, 0x50003}, {0x3d403180, 0x190004}, {0x3d403190, 0x3818200},

From: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Add support for SKUs with higher memory sizes. Actual memory size is auto-detected.
Signed-off-by: Emanuele Ghidoli emanuele.ghidoli@toradex.com --- board/toradex/verdin-imx8mm/verdin-imx8mm.c | 2 +- include/configs/verdin-imx8mm.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/board/toradex/verdin-imx8mm/verdin-imx8mm.c b/board/toradex/verdin-imx8mm/verdin-imx8mm.c index 55c02653da68..31e8d5fb04b5 100644 --- a/board/toradex/verdin-imx8mm/verdin-imx8mm.c +++ b/board/toradex/verdin-imx8mm/verdin-imx8mm.c @@ -117,7 +117,7 @@ int board_phys_sdram_size(phys_size_t *size) if (!size) return -EINVAL;
- *size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE); + *size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE + PHYS_SDRAM_2_SIZE);
return 0; } diff --git a/include/configs/verdin-imx8mm.h b/include/configs/verdin-imx8mm.h index 34238d3b505c..12d2b6823058 100644 --- a/include/configs/verdin-imx8mm.h +++ b/include/configs/verdin-imx8mm.h @@ -58,8 +58,10 @@ #define CFG_SYS_SDRAM_BASE 0x40000000
/* SDRAM configuration */ -#define PHYS_SDRAM 0x40000000 -#define PHYS_SDRAM_SIZE SZ_2G /* 2GB DDR */ +#define PHYS_SDRAM 0x40000000 +#define PHYS_SDRAM_SIZE (long)(SZ_2G + SZ_1G) +#define PHYS_SDRAM_2 0x100000000 +#define PHYS_SDRAM_2_SIZE (long)(SZ_1G)
/* USB Configs */ #define CFG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)

From: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Add new PID4 0088 Aquila AM69 Octa 32GB WB IT to config block handling.
Signed-off-by: Emanuele Ghidoli emanuele.ghidoli@toradex.com --- board/toradex/common/tdx-cfg-block.c | 1 + board/toradex/common/tdx-cfg-block.h | 1 + 2 files changed, 2 insertions(+)
diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c index dcf00d2b6325..f0d5a82b864c 100644 --- a/board/toradex/common/tdx-cfg-block.c +++ b/board/toradex/common/tdx-cfg-block.c @@ -158,6 +158,7 @@ const struct toradex_som toradex_modules[] = { [85] = { "Apalis iMX6Q 2GB IT", TARGET_IS_ENABLED(APALIS_IMX6) }, [86] = { "Verdin iMX8M Mini DualLite 2GB IT", TARGET_IS_ENABLED(VERDIN_IMX8MM) }, [87] = { "Verdin iMX8M Mini Quad 2GB IT", TARGET_IS_ENABLED(VERDIN_IMX8MM) }, + [88] = { "Aquila AM69 Octa 32GB WB IT", TARGET_IS_ENABLED(AQUILA_AM69_A72) }, };
struct pid4list { diff --git a/board/toradex/common/tdx-cfg-block.h b/board/toradex/common/tdx-cfg-block.h index 183ee0f2dc99..277f8bc6bb4c 100644 --- a/board/toradex/common/tdx-cfg-block.h +++ b/board/toradex/common/tdx-cfg-block.h @@ -113,6 +113,7 @@ enum { APALIS_IMX6Q_IT_NOWINCE, /* 85 */ VERDIN_IMX8MMDL_2G_IT, VERDIN_IMX8MMQ_2G_IT_NO_CAN, + AQUILA_AM69O_32G_WIFI_BT_IT, };
enum {

From: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Add new PID4 0089 Verdin iMX95 Hexa 16GB WB IT to config block handling.
Signed-off-by: Emanuele Ghidoli emanuele.ghidoli@toradex.com --- board/toradex/common/tdx-cfg-block.c | 1 + board/toradex/common/tdx-cfg-block.h | 1 + 2 files changed, 2 insertions(+)
diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c index f0d5a82b864c..ec41d4ea3c5b 100644 --- a/board/toradex/common/tdx-cfg-block.c +++ b/board/toradex/common/tdx-cfg-block.c @@ -159,6 +159,7 @@ const struct toradex_som toradex_modules[] = { [86] = { "Verdin iMX8M Mini DualLite 2GB IT", TARGET_IS_ENABLED(VERDIN_IMX8MM) }, [87] = { "Verdin iMX8M Mini Quad 2GB IT", TARGET_IS_ENABLED(VERDIN_IMX8MM) }, [88] = { "Aquila AM69 Octa 32GB WB IT", TARGET_IS_ENABLED(AQUILA_AM69_A72) }, + [89] = { "Verdin iMX95 Hexa 16GB WB IT", TARGET_IS_ENABLED(VERDIN_IMX95) }, };
struct pid4list { diff --git a/board/toradex/common/tdx-cfg-block.h b/board/toradex/common/tdx-cfg-block.h index 277f8bc6bb4c..122a7aceabd6 100644 --- a/board/toradex/common/tdx-cfg-block.h +++ b/board/toradex/common/tdx-cfg-block.h @@ -114,6 +114,7 @@ enum { VERDIN_IMX8MMDL_2G_IT, VERDIN_IMX8MMQ_2G_IT_NO_CAN, AQUILA_AM69O_32G_WIFI_BT_IT, + VERDIN_IMX95H_16G_WIFI_BT_IT, };
enum {

From: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Add new PID4 0090 Verdin iMX8M Mini Quad 4GB WB ET to support the new hardware variant.
Signed-off-by: Emanuele Ghidoli emanuele.ghidoli@toradex.com --- board/toradex/common/tdx-cfg-block.c | 1 + board/toradex/common/tdx-cfg-block.h | 1 + board/toradex/verdin-imx8mm/verdin-imx8mm.c | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c index ec41d4ea3c5b..ded619e92afa 100644 --- a/board/toradex/common/tdx-cfg-block.c +++ b/board/toradex/common/tdx-cfg-block.c @@ -160,6 +160,7 @@ const struct toradex_som toradex_modules[] = { [87] = { "Verdin iMX8M Mini Quad 2GB IT", TARGET_IS_ENABLED(VERDIN_IMX8MM) }, [88] = { "Aquila AM69 Octa 32GB WB IT", TARGET_IS_ENABLED(AQUILA_AM69_A72) }, [89] = { "Verdin iMX95 Hexa 16GB WB IT", TARGET_IS_ENABLED(VERDIN_IMX95) }, + [90] = { "Verdin iMX8M Mini Quad 4GB WB ET", TARGET_IS_ENABLED(VERDIN_IMX8MM) }, };
struct pid4list { diff --git a/board/toradex/common/tdx-cfg-block.h b/board/toradex/common/tdx-cfg-block.h index 122a7aceabd6..0d6dd1c3a721 100644 --- a/board/toradex/common/tdx-cfg-block.h +++ b/board/toradex/common/tdx-cfg-block.h @@ -115,6 +115,7 @@ enum { VERDIN_IMX8MMQ_2G_IT_NO_CAN, AQUILA_AM69O_32G_WIFI_BT_IT, VERDIN_IMX95H_16G_WIFI_BT_IT, + VERDIN_IMX8MMQ_4G_WIFI_BT_ET, /* 90 */ };
enum { diff --git a/board/toradex/verdin-imx8mm/verdin-imx8mm.c b/board/toradex/verdin-imx8mm/verdin-imx8mm.c index 31e8d5fb04b5..0b5a538ae2f1 100644 --- a/board/toradex/verdin-imx8mm/verdin-imx8mm.c +++ b/board/toradex/verdin-imx8mm/verdin-imx8mm.c @@ -84,7 +84,8 @@ static void select_dt_from_module_version(void) */ is_wifi = (tdx_hw_tag.prodid == VERDIN_IMX8MMQ_WIFI_BT_IT) || (tdx_hw_tag.prodid == VERDIN_IMX8MMDL_WIFI_BT_IT) || - (tdx_hw_tag.prodid == VERDIN_IMX8MMQ_WIFI_BT_IT_NO_CAN); + (tdx_hw_tag.prodid == VERDIN_IMX8MMQ_WIFI_BT_IT_NO_CAN) || + (tdx_hw_tag.prodid == VERDIN_IMX8MMQ_4G_WIFI_BT_ET); }
switch (get_pcb_revision()) {

Hi Emanuele,
On Tue, May 28, 2024 at 7:00 AM Emanuele Ghidoli ghidoliemanuele@gmail.com wrote:
From: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Hi, This series adds support for 0090 PID4 Verdin iMX8M Mini Quad 4GB WB ET SKU. It also adds two new SKUs config block support: 0088 Aquila AM69 Octa 32GB WB IT and 0089 Verdin iMX95 Hexa 16GB WB IT.
Signed-off-by: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Emanuele Ghidoli (5): board: toradex: verdin-imx8mm: add 4 GB lpddr4 memory support board: toradex: verdin-imx8mm: increase maximum addressable ram to 4GB toradex: tdx-cfg-block: add aquila am69 sku 0088 pid4 toradex: tdx-cfg-block: add verdin imx95 sku 0089 pid4 toradex: tdx-cfg-block: add verdin i.mx8m mini 0090 pid4
It would be better to split the series in two: one for the TI-SoC boards and another one for the NXP-SoC boards.

Hello Fabio,
On Tue, May 28, 2024 at 09:31:47AM -0300, Fabio Estevam wrote:
Hi Emanuele,
On Tue, May 28, 2024 at 7:00 AM Emanuele Ghidoli ghidoliemanuele@gmail.com wrote:
From: Emanuele Ghidoli emanuele.ghidoli@toradex.com This series adds support for 0090 PID4 Verdin iMX8M Mini Quad 4GB WB ET SKU. It also adds two new SKUs config block support: 0088 Aquila AM69 Octa 32GB WB IT and 0089 Verdin iMX95 Hexa 16GB WB IT.
Signed-off-by: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Emanuele Ghidoli (5): board: toradex: verdin-imx8mm: add 4 GB lpddr4 memory support board: toradex: verdin-imx8mm: increase maximum addressable ram to 4GB toradex: tdx-cfg-block: add aquila am69 sku 0088 pid4 toradex: tdx-cfg-block: add verdin imx95 sku 0089 pid4 toradex: tdx-cfg-block: add verdin i.mx8m mini 0090 pid4
It would be better to split the series in two: one for the TI-SoC boards and another one for the NXP-SoC boards.
I disagree on doing this on this specific series. The reason is that the changes on the tdx-cfg-block are depending one on each other and they have nothing nxp nor ti specific, they are toradex specific.
If I misunderstood your request, how would you do it? Patches 1,2,4 and 5 are for Toradex NXP board variant, patch 3 is for a Toradex TI board, patches 4 and 5 depend on patch 3.
Francesco

Hi Francesco,
On Tue, May 28, 2024 at 9:39 AM Francesco Dolcini francesco@dolcini.it wrote:
I disagree on doing this on this specific series. The reason is that the changes on the tdx-cfg-block are depending one on each other and they have nothing nxp nor ti specific, they are toradex specific.
If I misunderstood your request, how would you do it? Patches 1,2,4 and 5 are for Toradex NXP board variant, patch 3 is for a Toradex TI board, patches 4 and 5 depend on patch 3.
Thanks for the clarification. I will assign this series to me in patchwork then.

On Tue, May 28, 2024 at 7:00 AM Emanuele Ghidoli ghidoliemanuele@gmail.com wrote:
From: Emanuele Ghidoli emanuele.ghidoli@toradex.com
Hi, This series adds support for 0090 PID4 Verdin iMX8M Mini Quad 4GB WB ET SKU. It also adds two new SKUs config block support: 0088 Aquila AM69 Octa 32GB WB IT and 0089 Verdin iMX95 Hexa 16GB WB IT.
Applied all to u-boot-imx/next, thanks.
participants (3)
-
Emanuele Ghidoli
-
Fabio Estevam
-
Francesco Dolcini