[PATCH 6/6] arm: imx8mp: add karo electronics qsxp imx8mp som support
Stefan Kerkmann
s.kerkmann at pengutronix.de
Mon Mar 11 06:32:21 PDT 2024
Hello Ahmad,
On 11.03.24 11:13, Ahmad Fatoum wrote:
> 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.
>
See reply to patch 5/6, the full manufacturer part number is `QSXP-ML81`
therefore I vote to keep the `ml81` part.
>> +
>> + /*
>> + * 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/
>
Ack.
>> +/* 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.
>
Ack.
>> +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.
>
I'm unfamiliar with dynamic frequency scaling, so I'm not sure if we
need/want more for a first support of this SOM?
>> +config MACH_KARO_QSXP_ML81
>
> Please enable this in imx_v8_defconfig and multi_v8_defconfig for CI coverage.
>
Ack.
>
> Cheers,
> Ahmad
>
Cheers,
Stefan
--
Pengutronix e.K. | Stefan Kerkmann |
Steuerwalder Str. 21 | https://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-128 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
More information about the barebox
mailing list