[PATCH 6/6] arm: imx8mp: add karo electronics qsxp imx8mp som support

Ahmad Fatoum a.fatoum at pengutronix.de
Mon Mar 11 03:13:30 PDT 2024


Hello Stefan,

On 11.03.24 10:10, Stefan Kerkmann wrote:
> From: Marc Kleine-Budde <mkl at pengutronix.de>
> 
> The Ka-Ro QSXP is a i.MX8M Plus solder down system on module. This
> commit adds support for the SOM on the QSBASE4 RDK.
> 
> [1]: https://www.karo-electronics.de/qsxp
> 
> Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
> Signed-off-by: Stefan Kerkmann <s.kerkmann at pengutronix.de>
> ---
>  arch/arm/boards/Makefile                           |    1 +
>  arch/arm/boards/karo-qsxp-ml81/Makefile            |    4 +
>  arch/arm/boards/karo-qsxp-ml81/board.c             |   35 +
>  .../flash-header-karo-qsxp-ml81.imxcfg             |    9 +
>  arch/arm/boards/karo-qsxp-ml81/lowlevel.c          |  102 ++
>  arch/arm/boards/karo-qsxp-ml81/lowlevel.h          |    8 +
>  arch/arm/boards/karo-qsxp-ml81/lpddr4-timing.c     | 1597 ++++++++++++++++++++

If QSXP is the SoM name, rename the folder name to drop ml81.

> +
> +	/*
> +	 * If we are in EL3 we are running for the first time out of OCRAM,
> +	 * we'll need to initialize the DRAM and run TF-A (BL31). The TF-A
> +	 * will then jump to DRAM in EL2
> +	 */
> +	if (current_el() == 3) {
> +		imx8mp_early_clock_init();
> +
> +		power_init_board();
> +
> +		imx8mp_ddr_init(&karo_qsxp_ml81_dram_timing, DRAM_TYPE_LPDDR4);
> +
> +		imx8mp_load_and_start_image_via_tfa();
> +	}
> +
> +	/* Standard entry we hit once we initialized both DDR and ATF */
> +	imx8mm_barebox_entry(__dtb_z_imx8mp_karo_qsxp_ml81_qsbase4_start);

s/imx8mm/imx8mp/

> +/* ddr phy trained csr */
> +static struct dram_cfg_param ddr_ddrphy_trained_csr[] = {

This is unused. See commit
975acf1bafba ("ARM: i.MX8M: delete unused per-board ddr_ddrphy_trained_csr array")

Unless your value differ from the default, just drop this from here.

> +static struct dram_fsp_msg ddr_dram_fsp_msg[] = {
> +	{
> +		/* P0 3200mts 1D */
> +		.drate = 3200,
> +		.fw_type = FW_1D_IMAGE,
> +		.fsp_cfg = ddr_fsp0_cfg,
> +		.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg),
> +	},
> +	{
> +		/* P0 3200mts 2D */
> +		.drate = 3200,
> +		.fw_type = FW_2D_IMAGE,
> +		.fsp_cfg = ddr_fsp0_2d_cfg,
> +		.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg),
> +	},

JFYI, if you want to dynamic frequency scaling for DDR, you'll need some
more entries here.

> +config MACH_KARO_QSXP_ML81

Please enable this in imx_v8_defconfig and multi_v8_defconfig for CI coverage.


Cheers,
Ahmad

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




More information about the barebox mailing list