Here are the modifications i have done
added support in arch/arm/mach-imx/imx9/Kconfig
config TARGET_IMX93_11X11_EVK
bool "imx93_11x11_evk"
select OF_BOARD_FIXUP
select IMX93
config TARGET_IMX93_CALIXTO_VERSA_256
bool "imx93_calixto_versa"
select OF_BOARD_FIXUP
select IMX93
config TARGET_IMX93_CALIXTO_VERSA_512
bool "imx93_calixto_versa"
select OF_BOARD_FIXUP
select IMX93
config TARGET_IMX93_CALIXTO_VERSA_1024
bool "imx93_calixto_versa"
select OF_BOARD_FIXUP
select IMX93
config TARGET_IMX93_CALIXTO_VERSA_2048
bool "imx93_calixto_versa"
select OF_BOARD_FIXUP
select IMX93
Then i added a new vendor folder path to keep custom board related info.
inside it i modified the Kconfig, spl
if TARGET_IMX93_CALIXTO_VERSA_2048 || TARGET_IMX93_CALIXTO_VERSA_1024 || TARGET_IMX93_CALIXTO_VERSA_512 || TARGET_IMX93_CALIXTO_VERSA_256
config SYS_BOARD
default "imx93_calixto_versa"
config SYS_VENDOR
default "calixto"
config SYS_CONFIG_NAME
default "imx93_calixto_versa"
choice
prompt "Select DDR Type"
default IMX93_EVK_LPDDR4 if TARGET_IMX93_CALIXTO_VERSA_2048 || TARGET_IMX93_CALIXTO_VERSA_1024 || TARGET_IMX93_CALIXTO_VERSA_512 || TARGET_IMX93_CALIXTO_VERSA_256
help
Select the type of DDR to be used.
config IMX93_EVK_LPDDR4X
bool "Using LPDDR4X Timing and PMIC voltage"
select IMX9_LPDDR4X
help
Select the LPDDR4X timing and 0.6V VDDQ
config IMX93_EVK_LPDDR4
bool "Using LPDDR4 Timing and PMIC voltage"
select IMX9_LPDDR4X
help
Select the LPDDR4 timing and 1.1V VDDQ
endchoice
endif
For SPL
extern struct dram_timing_info dram_timing_1866mts;
extern struct dram_timing_info lpddr4_2GiB_micron_timing;
void spl_dram_init(void)
{
struct dram_timing_info *ptiming = &lpddr4_2GiB_micron_timing;
#if IS_ENABLED(CONFIG_IMX93_EVK_LPDDR4) && IS_ENABLED(CONFIG_TARGET_IMX93_CALIXTO_VERSA_2048)
if (is_voltage_mode(VOLT_LOW_DRIVE))
ptiming = &lpddr4_2GiB_micron_timing;
#elif IS_ENABLED(CONFIG_TARGET_IMX93_CALIXTO_VERSA_2048) && IS_ENABLED(CONFIG_IMX93_EVK_LPDDR4X)
ptiming = &lpddr4x_2GB_versa_timing;
#elif IS_ENABLED(CONFIG_TARGET_IMX93_CALIXTO_VERSA_1024) && IS_ENABLED(CONFIG_IMX93_EVK_LPDDR4X)
ptiming = &lpddr4x_1GB_versa_timing;
#elif IS_ENABLED(CONFIG_TARGET_IMX93_CALIXTO_VERSA_512) && IS_ENABLED(CONFIG_IMX93_EVK_LPDDR4X)
ptiming = &lpddr4x_512MB_versa_timing;
#elif IS_ENABLED(CONFIG_TARGET_IMX93_CALIXTO_VERSA_256) && IS_ENABLED(CONFIG_IMX93_EVK_LPDDR4X)
ptiming = &lpddr4x_256MB_versa_timing;
#endif
printf("DDR: %uMTS\n", ptiming->fsp_msg[0].drate);
ddr_init(ptiming);
}
and i have copied include file to the custom board name, created dts and defconfig from the reference board.
Do i need to modify anything apart from this??