// SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause
/*
 * Copyright : STMicroelectronics 2018-2025
 */
#include <linux/stringify.h>

#ifdef CONFIG_SPL
&ddr {
	config-DDR_MEM_COMPATIBLE {
		bootph-all;

		compatible = __stringify(st,DDR_MEM_COMPATIBLE);

		st,mem-name = DDR_MEM_NAME;
		st,mem-speed = <DDR_MEM_SPEED>;
		st,mem-size = <DDR_MEM_SIZE>;

		st,ctl-reg = <
			DDR_MSTR
			DDR_MRCTRL0
			DDR_MRCTRL1
			DDR_DERATEEN
			DDR_DERATEINT
			DDR_PWRCTL
			DDR_PWRTMG
			DDR_HWLPCTL
			DDR_RFSHCTL0
			DDR_RFSHCTL3
			DDR_CRCPARCTL0
			DDR_ZQCTL0
			DDR_DFITMG0
			DDR_DFITMG1
			DDR_DFILPCFG0
			DDR_DFIUPD0
			DDR_DFIUPD1
			DDR_DFIUPD2
			DDR_DFIPHYMSTR
			DDR_ODTMAP
			DDR_DBG0
			DDR_DBG1
			DDR_DBGCMD
			DDR_POISONCFG
			DDR_PCCFG
		>;

		st,ctl-timing = <
			DDR_RFSHTMG
			DDR_DRAMTMG0
			DDR_DRAMTMG1
			DDR_DRAMTMG2
			DDR_DRAMTMG3
			DDR_DRAMTMG4
			DDR_DRAMTMG5
			DDR_DRAMTMG6
			DDR_DRAMTMG7
			DDR_DRAMTMG8
			DDR_DRAMTMG14
			DDR_ODTCFG
		>;

		st,ctl-map = <
			DDR_ADDRMAP1
			DDR_ADDRMAP2
			DDR_ADDRMAP3
			DDR_ADDRMAP4
			DDR_ADDRMAP5
			DDR_ADDRMAP6
			DDR_ADDRMAP9
			DDR_ADDRMAP10
			DDR_ADDRMAP11
		>;


		/*
		 * Both st,ctl-perf and st,phy-reg differ
		 * between STM32MP13xx and STM32MP15xx due
		 * to 16bit and 32bit DRAM bus respectively
		 * on these SoCs.
		 */

		st,phy-timing = <
			DDR_PTR0
			DDR_PTR1
			DDR_PTR2
			DDR_DTPR0
			DDR_DTPR1
			DDR_DTPR2
			DDR_MR0
			DDR_MR1
			DDR_MR2
			DDR_MR3
		>;

		status = "okay";
	};
};
#endif

#undef DDR_MEM_COMPATIBLE
#undef DDR_MEM_NAME
#undef DDR_MEM_SPEED
#undef DDR_MEM_SIZE

#undef DDR_MSTR
#undef DDR_MRCTRL0
#undef DDR_MRCTRL1
#undef DDR_DERATEEN
#undef DDR_DERATEINT
#undef DDR_PWRCTL
#undef DDR_PWRTMG
#undef DDR_HWLPCTL
#undef DDR_RFSHCTL0
#undef DDR_RFSHCTL3
#undef DDR_RFSHTMG
#undef DDR_CRCPARCTL0
#undef DDR_DRAMTMG0
#undef DDR_DRAMTMG1
#undef DDR_DRAMTMG2
#undef DDR_DRAMTMG3
#undef DDR_DRAMTMG4
#undef DDR_DRAMTMG5
#undef DDR_DRAMTMG6
#undef DDR_DRAMTMG7
#undef DDR_DRAMTMG8
#undef DDR_DRAMTMG14
#undef DDR_ZQCTL0
#undef DDR_DFITMG0
#undef DDR_DFITMG1
#undef DDR_DFILPCFG0
#undef DDR_DFIUPD0
#undef DDR_DFIUPD1
#undef DDR_DFIUPD2
#undef DDR_DFIPHYMSTR
#undef DDR_ADDRMAP1
#undef DDR_ADDRMAP2
#undef DDR_ADDRMAP3
#undef DDR_ADDRMAP4
#undef DDR_ADDRMAP5
#undef DDR_ADDRMAP6
#undef DDR_ADDRMAP9
#undef DDR_ADDRMAP10
#undef DDR_ADDRMAP11
#undef DDR_ODTCFG
#undef DDR_ODTMAP
#undef DDR_SCHED
#undef DDR_SCHED1
#undef DDR_PERFHPR1
#undef DDR_PERFLPR1
#undef DDR_PERFWR1
#undef DDR_DBG0
#undef DDR_DBG1
#undef DDR_DBGCMD
#undef DDR_POISONCFG
#undef DDR_PCCFG
#undef DDR_PCFGR_0
#undef DDR_PCFGW_0
#undef DDR_PCFGQOS0_0
#undef DDR_PCFGQOS1_0
#undef DDR_PCFGWQOS0_0
#undef DDR_PCFGWQOS1_0
#undef DDR_PCFGR_1
#undef DDR_PCFGW_1
#undef DDR_PCFGQOS0_1
#undef DDR_PCFGQOS1_1
#undef DDR_PCFGWQOS0_1
#undef DDR_PCFGWQOS1_1
#undef DDR_PGCR
#undef DDR_PTR0
#undef DDR_PTR1
#undef DDR_PTR2
#undef DDR_ACIOCR
#undef DDR_DXCCR
#undef DDR_DSGCR
#undef DDR_DCR
#undef DDR_DTPR0
#undef DDR_DTPR1
#undef DDR_DTPR2
#undef DDR_MR0
#undef DDR_MR1
#undef DDR_MR2
#undef DDR_MR3
#undef DDR_ODTCR
#undef DDR_ZQ0CR1
#undef DDR_DX0GCR
#undef DDR_DX1GCR
#undef DDR_DX2GCR
#undef DDR_DX3GCR
