diff --git a/docs/plat/marvell/armada/build.rst b/docs/plat/marvell/armada/build.rst index 1b60fc5..6f28721 100644 --- a/docs/plat/marvell/armada/build.rst +++ b/docs/plat/marvell/armada/build.rst @@ -194,6 +194,10 @@ can interrupt UART recovery process). This MACRO definition is set in ``plat/marvell/armada/a8k/common/include/platform_def.h`` file. +- DDR32 + In order to work in 32bit DDR, instead of the default 64bit ECC DDR, + this flag should be set to 1. + For more information about build options, please refer to the :ref:`Build Options` document. diff --git a/plat/marvell/armada/a8k/a80x0/board/dram_port.c b/plat/marvell/armada/a8k/a80x0/board/dram_port.c index 02f4ffb..7abd343 100644 --- a/plat/marvell/armada/a8k/a80x0/board/dram_port.c +++ b/plat/marvell/armada/a8k/a80x0/board/dram_port.c @@ -52,8 +52,13 @@ MV_DDR_FREQ_SAR, /* frequency */ 0, 0, /* cas_l, cas_wl */ MV_DDR_TEMP_LOW} }, /* temperature */ +#if DDR32 + MV_DDR_32BIT_ECC_PUP8_BUS_MASK, /* subphys mask */ + MV_DDR_CFG_DEFAULT, /* ddr configuration data source */ +#else MV_DDR_64BIT_ECC_PUP8_BUS_MASK, /* subphys mask */ MV_DDR_CFG_SPD, /* ddr configuration data source */ +#endif { {0} }, /* raw spd data */ {0}, /* timing parameters */ { /* electrical configuration */ diff --git a/plat/marvell/marvell.mk b/plat/marvell/marvell.mk index d8be0dd..8245753 100644 --- a/plat/marvell/marvell.mk +++ b/plat/marvell/marvell.mk @@ -16,6 +16,10 @@ PALLADIUM := 0 $(eval $(call add_define,PALLADIUM)) +# Set board to work with DDR 32bit +DDR32 := 0 +$(eval $(call add_define,DDR32)) + ifeq (${MARVELL_SECURE_BOOT},1) DOIMAGE_SEC_FLAGS := -c $(DOIMAGE_SEC) DOIMAGE_LIBS_CHECK = \