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

&ddr {
	config-DDR_MEM_COMPATIBLE {
		u-boot,dm-pre-reloc;

		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
		>;

		st,ctl-perf = <
			DDR_SCHED
			DDR_SCHED1
			DDR_PERFHPR1
			DDR_PERFLPR1
			DDR_PERFWR1
			DDR_PCFGR_0
			DDR_PCFGW_0
			DDR_PCFGQOS0_0
			DDR_PCFGQOS1_0
			DDR_PCFGWQOS0_0
			DDR_PCFGWQOS1_0
			DDR_PCFGR_1
			DDR_PCFGW_1
			DDR_PCFGQOS0_1
			DDR_PCFGQOS1_1
			DDR_PCFGWQOS0_1
			DDR_PCFGWQOS1_1
		>;

		st,phy-reg = <
			DDR_PGCR
			DDR_ACIOCR
			DDR_DXCCR
			DDR_DSGCR
			DDR_DCR
			DDR_ODTCR
			DDR_ZQ0CR1
			DDR_DX0GCR
			DDR_DX1GCR
			DDR_DX2GCR
			DDR_DX3GCR
		>;

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

#ifdef DDR_PHY_CAL_SKIP
		st,phy-cal = <
			DDR_DX0DLLCR
			DDR_DX0DQTR
			DDR_DX0DQSTR
			DDR_DX1DLLCR
			DDR_DX1DQTR
			DDR_DX1DQSTR
			DDR_DX2DLLCR
			DDR_DX2DQTR
			DDR_DX2DQSTR
			DDR_DX3DLLCR
			DDR_DX3DQTR
			DDR_DX3DQSTR
		>;

#endif

		status = "okay";
	};
};

#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_DX0DLLCR
#undef DDR_DX0DQTR
#undef DDR_DX0DQSTR
#undef DDR_DX1GCR
#undef DDR_DX1DLLCR
#undef DDR_DX1DQTR
#undef DDR_DX1DQSTR
#undef DDR_DX2GCR
#undef DDR_DX2DLLCR
#undef DDR_DX2DQTR
#undef DDR_DX2DQSTR
#undef DDR_DX3GCR
#undef DDR_DX3DLLCR
#undef DDR_DX3DQTR
#undef DDR_DX3DQSTR
