GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
+299
@@ -0,0 +1,299 @@
|
||||
ST,stm32mp1 DDR3/LPDDR2/LPDDR3 Controller (DDRCTRL and DDRPHYC)
|
||||
|
||||
--------------------
|
||||
Required properties:
|
||||
--------------------
|
||||
- compatible : Should be "st,stm32mp1-ddr"
|
||||
- reg : controleur (DDRCTRL) and phy (DDRPHYC) base address
|
||||
- clocks : controller clocks handle
|
||||
- clock-names : associated controller clock names
|
||||
the "ddrphyc" clock is used to check the DDR frequency
|
||||
at phy level according the expected value in "mem-speed" field
|
||||
|
||||
the next attributes are DDR parameters, they are generated by DDR tools
|
||||
included in STM32 Cube tool
|
||||
|
||||
info attributes:
|
||||
----------------
|
||||
- st,mem-name : name for DDR configuration, simple string for information
|
||||
- st,mem-speed : DDR expected speed for the setting in kHz
|
||||
- st,mem-size : DDR mem size in byte
|
||||
|
||||
|
||||
controlleur attributes:
|
||||
-----------------------
|
||||
- st,ctl-reg : controleur values depending of the DDR type
|
||||
(DDR3/LPDDR2/LPDDR3)
|
||||
for STM32MP15x: 25 values are requested in this order
|
||||
MSTR
|
||||
MRCTRL0
|
||||
MRCTRL1
|
||||
DERATEEN
|
||||
DERATEINT
|
||||
PWRCTL
|
||||
PWRTMG
|
||||
HWLPCTL
|
||||
RFSHCTL0
|
||||
RFSHCTL3
|
||||
CRCPARCTL0
|
||||
ZQCTL0
|
||||
DFITMG0
|
||||
DFITMG1
|
||||
DFILPCFG0
|
||||
DFIUPD0
|
||||
DFIUPD1
|
||||
DFIUPD2
|
||||
DFIPHYMSTR
|
||||
ODTMAP
|
||||
DBG0
|
||||
DBG1
|
||||
DBGCMD
|
||||
POISONCFG
|
||||
PCCFG
|
||||
|
||||
- st,ctl-timing : controleur values depending of frequency and timing parameter
|
||||
of DDR
|
||||
for STM32MP15x: 12 values are requested in this order
|
||||
RFSHTMG
|
||||
DRAMTMG0
|
||||
DRAMTMG1
|
||||
DRAMTMG2
|
||||
DRAMTMG3
|
||||
DRAMTMG4
|
||||
DRAMTMG5
|
||||
DRAMTMG6
|
||||
DRAMTMG7
|
||||
DRAMTMG8
|
||||
DRAMTMG14
|
||||
ODTCFG
|
||||
|
||||
- st,ctl-map : controleur values depending of address mapping
|
||||
for STM32MP15x: 9 values are requested in this order
|
||||
ADDRMAP1
|
||||
ADDRMAP2
|
||||
ADDRMAP3
|
||||
ADDRMAP4
|
||||
ADDRMAP5
|
||||
ADDRMAP6
|
||||
ADDRMAP9
|
||||
ADDRMAP10
|
||||
ADDRMAP11
|
||||
|
||||
- st,ctl-perf : controleur values depending of performance and scheduling
|
||||
for STM32MP15x: 17 values are requested in this order
|
||||
SCHED
|
||||
SCHED1
|
||||
PERFHPR1
|
||||
PERFLPR1
|
||||
PERFWR1
|
||||
PCFGR_0
|
||||
PCFGW_0
|
||||
PCFGQOS0_0
|
||||
PCFGQOS1_0
|
||||
PCFGWQOS0_0
|
||||
PCFGWQOS1_0
|
||||
PCFGR_1
|
||||
PCFGW_1
|
||||
PCFGQOS0_1
|
||||
PCFGQOS1_1
|
||||
PCFGWQOS0_1
|
||||
PCFGWQOS1_1
|
||||
|
||||
phyc attributes:
|
||||
----------------
|
||||
- st,phy-reg : phy values depending of the DDR type (DDR3/LPDDR2/LPDDR3)
|
||||
for STM32MP15x: 11 values are requested in this order
|
||||
PGCR
|
||||
ACIOCR
|
||||
DXCCR
|
||||
DSGCR
|
||||
DCR
|
||||
ODTCR
|
||||
ZQ0CR1
|
||||
DX0GCR
|
||||
DX1GCR
|
||||
DX2GCR
|
||||
DX3GCR
|
||||
|
||||
- st,phy-timing : phy values depending of frequency and timing parameter of DDR
|
||||
for STM32MP15x: 10 values are requested in this order
|
||||
PTR0
|
||||
PTR1
|
||||
PTR2
|
||||
DTPR0
|
||||
DTPR1
|
||||
DTPR2
|
||||
MR0
|
||||
MR1
|
||||
MR2
|
||||
MR3
|
||||
|
||||
- st,phy-cal : phy cal depending of calibration or tuning of DDR
|
||||
for STM32MP15x: 12 values are requested in this order
|
||||
DX0DLLCR
|
||||
DX0DQTR
|
||||
DX0DQSTR
|
||||
DX1DLLCR
|
||||
DX1DQTR
|
||||
DX1DQSTR
|
||||
DX2DLLCR
|
||||
DX2DQTR
|
||||
DX2DQSTR
|
||||
DX3DLLCR
|
||||
DX3DQTR
|
||||
DX3DQSTR
|
||||
|
||||
Example:
|
||||
|
||||
/ {
|
||||
soc {
|
||||
u-boot,dm-spl;
|
||||
|
||||
ddr: ddr@0x5A003000{
|
||||
u-boot,dm-spl;
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
compatible = "st,stm32mp1-ddr";
|
||||
|
||||
reg = <0x5A003000 0x550
|
||||
0x5A004000 0x234>;
|
||||
|
||||
clocks = <&rcc_clk AXIDCG>,
|
||||
<&rcc_clk DDRC1>,
|
||||
<&rcc_clk DDRC2>,
|
||||
<&rcc_clk DDRPHYC>,
|
||||
<&rcc_clk DDRCAPB>,
|
||||
<&rcc_clk DDRPHYCAPB>;
|
||||
|
||||
clock-names = "axidcg",
|
||||
"ddrc1",
|
||||
"ddrc2",
|
||||
"ddrphyc",
|
||||
"ddrcapb",
|
||||
"ddrphycapb";
|
||||
|
||||
st,mem-name = "DDR3 2x4Gb 533MHz";
|
||||
st,mem-speed = <533000>;
|
||||
st,mem-size = <0x40000000>;
|
||||
|
||||
st,ctl-reg = <
|
||||
0x00040401 /*MSTR*/
|
||||
0x00000010 /*MRCTRL0*/
|
||||
0x00000000 /*MRCTRL1*/
|
||||
0x00000000 /*DERATEEN*/
|
||||
0x00800000 /*DERATEINT*/
|
||||
0x00000000 /*PWRCTL*/
|
||||
0x00400010 /*PWRTMG*/
|
||||
0x00000000 /*HWLPCTL*/
|
||||
0x00210000 /*RFSHCTL0*/
|
||||
0x00000000 /*RFSHCTL3*/
|
||||
0x00000000 /*CRCPARCTL0*/
|
||||
0xC2000040 /*ZQCTL0*/
|
||||
0x02050105 /*DFITMG0*/
|
||||
0x00000202 /*DFITMG1*/
|
||||
0x07000000 /*DFILPCFG0*/
|
||||
0xC0400003 /*DFIUPD0*/
|
||||
0x00000000 /*DFIUPD1*/
|
||||
0x00000000 /*DFIUPD2*/
|
||||
0x00000000 /*DFIPHYMSTR*/
|
||||
0x00000001 /*ODTMAP*/
|
||||
0x00000000 /*DBG0*/
|
||||
0x00000000 /*DBG1*/
|
||||
0x00000000 /*DBGCMD*/
|
||||
0x00000000 /*POISONCFG*/
|
||||
0x00000010 /*PCCFG*/
|
||||
>;
|
||||
|
||||
st,ctl-timing = <
|
||||
0x0080008A /*RFSHTMG*/
|
||||
0x121B2414 /*DRAMTMG0*/
|
||||
0x000D041B /*DRAMTMG1*/
|
||||
0x0607080E /*DRAMTMG2*/
|
||||
0x0050400C /*DRAMTMG3*/
|
||||
0x07040407 /*DRAMTMG4*/
|
||||
0x06060303 /*DRAMTMG5*/
|
||||
0x02020002 /*DRAMTMG6*/
|
||||
0x00000202 /*DRAMTMG7*/
|
||||
0x00001005 /*DRAMTMG8*/
|
||||
0x000D041B /*DRAMTMG1*/4
|
||||
0x06000600 /*ODTCFG*/
|
||||
>;
|
||||
|
||||
st,ctl-map = <
|
||||
0x00080808 /*ADDRMAP1*/
|
||||
0x00000000 /*ADDRMAP2*/
|
||||
0x00000000 /*ADDRMAP3*/
|
||||
0x00001F1F /*ADDRMAP4*/
|
||||
0x07070707 /*ADDRMAP5*/
|
||||
0x0F070707 /*ADDRMAP6*/
|
||||
0x00000000 /*ADDRMAP9*/
|
||||
0x00000000 /*ADDRMAP10*/
|
||||
0x00000000 /*ADDRMAP11*/
|
||||
>;
|
||||
|
||||
st,ctl-perf = <
|
||||
0x00001201 /*SCHED*/
|
||||
0x00001201 /*SCHED*/1
|
||||
0x01000001 /*PERFHPR1*/
|
||||
0x08000200 /*PERFLPR1*/
|
||||
0x08000400 /*PERFWR1*/
|
||||
0x00010000 /*PCFGR_0*/
|
||||
0x00000000 /*PCFGW_0*/
|
||||
0x02100B03 /*PCFGQOS0_0*/
|
||||
0x00800100 /*PCFGQOS1_0*/
|
||||
0x01100B03 /*PCFGWQOS0_0*/
|
||||
0x01000200 /*PCFGWQOS1_0*/
|
||||
0x00010000 /*PCFGR_1*/
|
||||
0x00000000 /*PCFGW_1*/
|
||||
0x02100B03 /*PCFGQOS0_1*/
|
||||
0x00800000 /*PCFGQOS1_1*/
|
||||
0x01100B03 /*PCFGWQOS0_1*/
|
||||
0x01000200 /*PCFGWQOS1_1*/
|
||||
>;
|
||||
|
||||
st,phy-reg = <
|
||||
0x01442E02 /*PGCR*/
|
||||
0x10400812 /*ACIOCR*/
|
||||
0x00000C40 /*DXCCR*/
|
||||
0xF200001F /*DSGCR*/
|
||||
0x0000000B /*DCR*/
|
||||
0x00010000 /*ODTCR*/
|
||||
0x0000007B /*ZQ0CR1*/
|
||||
0x0000CE81 /*DX0GCR*/
|
||||
0x0000CE81 /*DX1GCR*/
|
||||
0x0000CE81 /*DX2GCR*/
|
||||
0x0000CE81 /*DX3GCR*/
|
||||
>;
|
||||
|
||||
st,phy-timing = <
|
||||
0x0022A41B /*PTR0*/
|
||||
0x047C0740 /*PTR1*/
|
||||
0x042D9C80 /*PTR2*/
|
||||
0x369477D0 /*DTPR0*/
|
||||
0x098A00D8 /*DTPR1*/
|
||||
0x10023600 /*DTPR2*/
|
||||
0x00000830 /*MR0*/
|
||||
0x00000000 /*MR1*/
|
||||
0x00000208 /*MR2*/
|
||||
0x00000000 /*MR3*/
|
||||
>;
|
||||
|
||||
st,phy-cal = <
|
||||
0x40000000 /*DX0DLLCR*/
|
||||
0xFFFFFFFF /*DX0DQTR*/
|
||||
0x3DB02000 /*DX0DQSTR*/
|
||||
0x40000000 /*DX1DLLCR*/
|
||||
0xFFFFFFFF /*DX1DQTR*/
|
||||
0x3DB02000 /*DX1DQSTR*/
|
||||
0x40000000 /*DX2DLLCR*/
|
||||
0xFFFFFFFF /*DX2DQTR*/
|
||||
0x3DB02000 /*DX2DQSTR*/
|
||||
0x40000000 /*DX3DLLCR*/
|
||||
0xFFFFFFFF /*DX3DQTR*/
|
||||
0x3DB02000 /*DX3DQSTR*/
|
||||
>;
|
||||
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user