183d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
214e4b149Smaxims@google.com /*
314e4b149Smaxims@google.com  * Copyright (c) 2016 Google, Inc
414e4b149Smaxims@google.com  */
514e4b149Smaxims@google.com #ifndef _ASM_ARCH_SDRAM_AST2500_H
614e4b149Smaxims@google.com #define _ASM_ARCH_SDRAM_AST2500_H
714e4b149Smaxims@google.com 
814e4b149Smaxims@google.com #define SDRAM_UNLOCK_KEY		0xfc600309
914e4b149Smaxims@google.com #define SDRAM_VIDEO_UNLOCK_KEY		0x2003000f
1014e4b149Smaxims@google.com 
1114e4b149Smaxims@google.com #define SDRAM_PCR_CKE_EN		(1 << 0)
1214e4b149Smaxims@google.com #define SDRAM_PCR_AUTOPWRDN_EN		(1 << 1)
1314e4b149Smaxims@google.com #define SDRAM_PCR_CKE_DELAY_SHIFT	4
1414e4b149Smaxims@google.com #define SDRAM_PCR_CKE_DELAY_MASK	7
1514e4b149Smaxims@google.com #define SDRAM_PCR_RESETN_DIS		(1 << 7)
1614e4b149Smaxims@google.com #define SDRAM_PCR_ODT_EN		(1 << 8)
1714e4b149Smaxims@google.com #define SDRAM_PCR_ODT_AUTO_ON		(1 << 10)
1814e4b149Smaxims@google.com #define SDRAM_PCR_ODT_EXT_EN		(1 << 11)
1914e4b149Smaxims@google.com #define SDRAM_PCR_TCKE_PW_SHIFT		12
2014e4b149Smaxims@google.com #define SDRAM_PCR_TCKE_PW_MASK		7
2114e4b149Smaxims@google.com #define SDRAM_PCR_RGAP_CTRL_EN		(1 << 15)
2214e4b149Smaxims@google.com #define SDRAM_PCR_MREQI_DIS		(1 << 17)
2314e4b149Smaxims@google.com 
2414e4b149Smaxims@google.com /* Fixed priority DRAM Requests mask */
2514e4b149Smaxims@google.com #define SDRAM_REQ_VGA_HW_CURSOR		(1 << 0)
2614e4b149Smaxims@google.com #define SDRAM_REQ_VGA_TEXT_CG_FONT	(1 << 1)
2714e4b149Smaxims@google.com #define SDRAM_REQ_VGA_TEXT_ASCII	(1 << 2)
2814e4b149Smaxims@google.com #define SDRAM_REQ_VGA_CRT		(1 << 3)
2914e4b149Smaxims@google.com #define SDRAM_REQ_SOC_DC_CURSOR		(1 << 4)
3014e4b149Smaxims@google.com #define SDRAM_REQ_SOC_DC_OCD		(1 << 5)
3114e4b149Smaxims@google.com #define SDRAM_REQ_SOC_DC_CRT		(1 << 6)
3214e4b149Smaxims@google.com #define SDRAM_REQ_VIDEO_HIPRI_WRITE	(1 << 7)
3314e4b149Smaxims@google.com #define SDRAM_REQ_USB20_EHCI1		(1 << 8)
3414e4b149Smaxims@google.com #define SDRAM_REQ_USB20_EHCI2		(1 << 9)
3514e4b149Smaxims@google.com #define SDRAM_REQ_CPU			(1 << 10)
3614e4b149Smaxims@google.com #define SDRAM_REQ_AHB2			(1 << 11)
3714e4b149Smaxims@google.com #define SDRAM_REQ_AHB			(1 << 12)
3814e4b149Smaxims@google.com #define SDRAM_REQ_MAC0			(1 << 13)
3914e4b149Smaxims@google.com #define SDRAM_REQ_MAC1			(1 << 14)
4014e4b149Smaxims@google.com #define SDRAM_REQ_PCIE			(1 << 16)
4114e4b149Smaxims@google.com #define SDRAM_REQ_XDMA			(1 << 17)
4214e4b149Smaxims@google.com #define SDRAM_REQ_ENCRYPTION		(1 << 18)
4314e4b149Smaxims@google.com #define SDRAM_REQ_VIDEO_FLAG		(1 << 21)
4414e4b149Smaxims@google.com #define SDRAM_REQ_VIDEO_LOW_PRI_WRITE	(1 << 28)
4514e4b149Smaxims@google.com #define SDRAM_REQ_2D_RW			(1 << 29)
4614e4b149Smaxims@google.com #define SDRAM_REQ_MEMCHECK		(1 << 30)
4714e4b149Smaxims@google.com 
4814e4b149Smaxims@google.com #define SDRAM_ICR_RESET_ALL		(1 << 31)
4914e4b149Smaxims@google.com 
5014e4b149Smaxims@google.com #define SDRAM_CONF_CAP_SHIFT		0
5114e4b149Smaxims@google.com #define SDRAM_CONF_CAP_MASK		3
5214e4b149Smaxims@google.com #define SDRAM_CONF_DDR4			(1 << 4)
5314e4b149Smaxims@google.com #define SDRAM_CONF_SCRAMBLE		(1 << 8)
54*203518aeSDylan Hung #define SDRAM_CONF_ECC_EN		(1 << 7)
5514e4b149Smaxims@google.com #define SDRAM_CONF_SCRAMBLE_PAT2	(1 << 9)
5614e4b149Smaxims@google.com #define SDRAM_CONF_CACHE_EN		(1 << 10)
57*203518aeSDylan Hung #define SDRAM_CONF_CACHE_ADDR_CTRL	(1 << 11)
5814e4b149Smaxims@google.com #define SDRAM_CONF_CACHE_INIT_EN	(1 << 12)
5914e4b149Smaxims@google.com #define SDRAM_CONF_DUALX8		(1 << 13)
6014e4b149Smaxims@google.com #define SDRAM_CONF_CACHE_INIT_DONE	(1 << 19)
6114e4b149Smaxims@google.com 
6214e4b149Smaxims@google.com #define SDRAM_CONF_CAP_128M		0
6314e4b149Smaxims@google.com #define SDRAM_CONF_CAP_256M		1
6414e4b149Smaxims@google.com #define SDRAM_CONF_CAP_512M		2
6514e4b149Smaxims@google.com #define SDRAM_CONF_CAP_1024M		3
6614e4b149Smaxims@google.com 
6714e4b149Smaxims@google.com #define SDRAM_MISC_DDR4_TREFRESH	(1 << 3)
6814e4b149Smaxims@google.com 
6914e4b149Smaxims@google.com #define SDRAM_PHYCTRL0_INIT		(1 << 0)
7014e4b149Smaxims@google.com #define SDRAM_PHYCTRL0_AUTO_UPDATE	(1 << 1)
7114e4b149Smaxims@google.com #define SDRAM_PHYCTRL0_NRST		(1 << 2)
7214e4b149Smaxims@google.com 
7314e4b149Smaxims@google.com #define SDRAM_REFRESH_CYCLES_SHIFT	0
7414e4b149Smaxims@google.com #define SDRAM_REFRESH_CYCLES_MASK	0xf
7514e4b149Smaxims@google.com #define SDRAM_REFRESH_ZQCS_EN		(1 << 7)
7614e4b149Smaxims@google.com #define SDRAM_REFRESH_PERIOD_SHIFT	8
7714e4b149Smaxims@google.com #define SDRAM_REFRESH_PERIOD_MASK	0xf
7814e4b149Smaxims@google.com 
7914e4b149Smaxims@google.com #define SDRAM_TEST_LEN_SHIFT		4
8014e4b149Smaxims@google.com #define SDRAM_TEST_LEN_MASK		0xfffff
8114e4b149Smaxims@google.com #define SDRAM_TEST_START_ADDR_SHIFT	24
8214e4b149Smaxims@google.com #define SDRAM_TEST_START_ADDR_MASK	0x3f
8314e4b149Smaxims@google.com 
8414e4b149Smaxims@google.com #define SDRAM_TEST_EN			(1 << 0)
8514e4b149Smaxims@google.com #define SDRAM_TEST_MODE_SHIFT		1
8614e4b149Smaxims@google.com #define SDRAM_TEST_MODE_MASK		3
8714e4b149Smaxims@google.com #define SDRAM_TEST_MODE_WO		0
8814e4b149Smaxims@google.com #define SDRAM_TEST_MODE_RB		1
8914e4b149Smaxims@google.com #define SDRAM_TEST_MODE_RW		2
9014e4b149Smaxims@google.com #define SDRAM_TEST_GEN_MODE_SHIFT	3
9114e4b149Smaxims@google.com #define SDRAM_TEST_GEN_MODE_MASK	7
9214e4b149Smaxims@google.com #define SDRAM_TEST_TWO_MODES		(1 << 6)
9314e4b149Smaxims@google.com #define SDRAM_TEST_ERRSTOP		(1 << 7)
9414e4b149Smaxims@google.com #define SDRAM_TEST_DONE			(1 << 12)
9514e4b149Smaxims@google.com #define SDRAM_TEST_FAIL			(1 << 13)
9614e4b149Smaxims@google.com 
9714e4b149Smaxims@google.com #define SDRAM_AC_TRFC_SHIFT		0
9814e4b149Smaxims@google.com #define SDRAM_AC_TRFC_MASK		0xff
9914e4b149Smaxims@google.com 
10014e4b149Smaxims@google.com #ifndef __ASSEMBLY__
10114e4b149Smaxims@google.com 
10214e4b149Smaxims@google.com struct ast2500_sdrammc_regs {
103*203518aeSDylan Hung 	u32 protection_key;		/* offset 0x00 */
104*203518aeSDylan Hung 	u32 config;			/* offset 0x04 */
105*203518aeSDylan Hung 	u32 gm_protection_key;		/* offset 0x08 */
106*203518aeSDylan Hung 	u32 refresh_timing;		/* offset 0x0C */
107*203518aeSDylan Hung 	u32 ac_timing[3];		/* offset 0x10 ~ 0x18 */
108*203518aeSDylan Hung 	u32 misc_control;		/* offset 0x0C */
109*203518aeSDylan Hung 	u32 mr46_mode_setting;		/* offset 0x20 */
110*203518aeSDylan Hung 	u32 mr5_mode_setting;		/* offset 0x24 */
111*203518aeSDylan Hung 	u32 mode_setting_control;	/* offset 0x28 */
112*203518aeSDylan Hung 	u32 mr02_mode_setting;		/* offset 0x2C */
113*203518aeSDylan Hung 	u32 mr13_mode_setting;		/* offset 0x30 */
114*203518aeSDylan Hung 	u32 power_control;		/* offset 0x34 */
115*203518aeSDylan Hung 	u32 req_limit_mask;		/* offset 0x38 */
116*203518aeSDylan Hung 	u32 pri_group_setting;		/* offset 0x3C */
117*203518aeSDylan Hung 	u32 max_grant_len[4];		/* offset 0x40 ~ 0x4C */
118*203518aeSDylan Hung 	u32 intr_ctrl;			/* offset 0x50 */
119*203518aeSDylan Hung 	u32 ecc_range_ctrl;		/* offset 0x54 */
120*203518aeSDylan Hung 	u32 first_ecc_err_addr;		/* offset 0x58 */
121*203518aeSDylan Hung 	u32 last_ecc_err_addr;		/* offset 0x5C */
122*203518aeSDylan Hung 	u32 phy_ctrl[4];		/* offset 0x60 ~ 0x6C */
123*203518aeSDylan Hung 	u32 ecc_test_ctrl;		/* offset 0x70 */
124*203518aeSDylan Hung 	u32 test_addr;			/* offset 0x74 */
125*203518aeSDylan Hung 	u32 test_fail_dq_bit;		/* offset 0x78 */
126*203518aeSDylan Hung 	u32 test_init_val;		/* offset 0x7C */
12714e4b149Smaxims@google.com 	u32 phy_debug_ctrl;
12814e4b149Smaxims@google.com 	u32 phy_debug_data;
12914e4b149Smaxims@google.com 	u32 reserved1[30];
13014e4b149Smaxims@google.com 	u32 scu_passwd;
13114e4b149Smaxims@google.com 	u32 reserved2[7];
13214e4b149Smaxims@google.com 	u32 scu_mpll;
13314e4b149Smaxims@google.com 	u32 reserved3[19];
13414e4b149Smaxims@google.com 	u32 scu_hwstrap;
13514e4b149Smaxims@google.com };
13614e4b149Smaxims@google.com 
13714e4b149Smaxims@google.com #endif  /* __ASSEMBLY__ */
13814e4b149Smaxims@google.com 
13914e4b149Smaxims@google.com #endif  /* _ASM_ARCH_SDRAM_AST2500_H */
140