xref: /arm-trusted-firmware/drivers/nxp/flexspi/nor/fspi.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright 2021 NXP
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  *
6*91f16700Schasinglulu  * FlexSpi Registers & Bits definition.
7*91f16700Schasinglulu  *
8*91f16700Schasinglulu  */
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #ifndef FSPI_H
11*91f16700Schasinglulu #define FSPI_H
12*91f16700Schasinglulu 
13*91f16700Schasinglulu #ifndef __ASSEMBLER__
14*91f16700Schasinglulu #include <lib/mmio.h>
15*91f16700Schasinglulu 
16*91f16700Schasinglulu #ifdef NXP_FSPI_BE
17*91f16700Schasinglulu #define fspi_in32(a)		bswap32(mmio_read_32((uintptr_t)(a)))
18*91f16700Schasinglulu #define fspi_out32(a, v)	mmio_write_32((uintptr_t)(a), bswap32(v))
19*91f16700Schasinglulu #elif defined(NXP_FSPI_LE)
20*91f16700Schasinglulu #define fspi_in32(a)		mmio_read_32((uintptr_t)(a))
21*91f16700Schasinglulu #define fspi_out32(a, v)	mmio_write_32((uintptr_t)(a), v)
22*91f16700Schasinglulu #else
23*91f16700Schasinglulu #error Please define FSPI register endianness
24*91f16700Schasinglulu #endif
25*91f16700Schasinglulu 
26*91f16700Schasinglulu #endif
27*91f16700Schasinglulu 
28*91f16700Schasinglulu /* All LE so not swap needed */
29*91f16700Schasinglulu #define FSPI_IPDATA_SWAP		0U
30*91f16700Schasinglulu #define FSPI_AHBDATA_SWAP		0U
31*91f16700Schasinglulu 
32*91f16700Schasinglulu #define CONFIG_FSPI_FASTREAD		1U
33*91f16700Schasinglulu 
34*91f16700Schasinglulu #define FSPI_BYTES_PER_KBYTES		0x400U
35*91f16700Schasinglulu #define FLASH_NUM			1U
36*91f16700Schasinglulu 
37*91f16700Schasinglulu #define FSPI_READ_SEQ_ID		0U
38*91f16700Schasinglulu #define FSPI_WREN_SEQ_ID		1U
39*91f16700Schasinglulu #define FSPI_WRITE_SEQ_ID		2U
40*91f16700Schasinglulu #define FSPI_SE_SEQ_ID			3U
41*91f16700Schasinglulu #define FSPI_RDSR_SEQ_ID		4U
42*91f16700Schasinglulu #define FSPI_BE_SEQ_ID			5U
43*91f16700Schasinglulu #define FSPI_FASTREAD_SEQ_ID		6U
44*91f16700Schasinglulu #define FSPI_4K_SEQ_ID			7U
45*91f16700Schasinglulu 
46*91f16700Schasinglulu /*
47*91f16700Schasinglulu  * LUT register layout:
48*91f16700Schasinglulu  *
49*91f16700Schasinglulu  *  ---------------------------------------------------
50*91f16700Schasinglulu  *  | INSTR1 | PAD1 | OPRND1 | INSTR0 | PAD0 | OPRND0 |
51*91f16700Schasinglulu  *  ---------------------------------------------------
52*91f16700Schasinglulu  *
53*91f16700Schasinglulu  *    INSTR_SHIFT- 10, PAD_SHIFT - 8, OPRND_SHIFT -0
54*91f16700Schasinglulu  */
55*91f16700Schasinglulu #define FSPI_INSTR_OPRND0_SHIFT		0
56*91f16700Schasinglulu #define FSPI_INSTR_OPRND0(x)		(x << FSPI_INSTR_OPRND0_SHIFT)
57*91f16700Schasinglulu #define FSPI_INSTR_PAD0_SHIFT		8
58*91f16700Schasinglulu #define FSPI_INSTR_PAD0(x)		((x) << FSPI_INSTR_PAD0_SHIFT)
59*91f16700Schasinglulu #define FSPI_INSTR_OPCODE0_SHIFT	10
60*91f16700Schasinglulu #define FSPI_INSTR_OPCODE0(x)		((x) << FSPI_INSTR_OPCODE0_SHIFT)
61*91f16700Schasinglulu #define FSPI_INSTR_OPRND1_SHIFT		16
62*91f16700Schasinglulu #define FSPI_INSTR_OPRND1(x)		((x) << FSPI_INSTR_OPRND1_SHIFT)
63*91f16700Schasinglulu #define FSPI_INSTR_PAD1_SHIFT		24
64*91f16700Schasinglulu #define FSPI_INSTR_PAD1(x)		((x) << FSPI_INSTR_PAD1_SHIFT)
65*91f16700Schasinglulu #define FSPI_INSTR_OPCODE1_SHIFT	26
66*91f16700Schasinglulu #define FSPI_INSTR_OPCODE1(x)		((x) << FSPI_INSTR_OPCODE1_SHIFT)
67*91f16700Schasinglulu 
68*91f16700Schasinglulu /* Instruction set for the LUT register. */
69*91f16700Schasinglulu #define LUT_STOP			0x00
70*91f16700Schasinglulu #define LUT_CMD				0x01
71*91f16700Schasinglulu #define LUT_ADDR			0x02
72*91f16700Schasinglulu #define LUT_CADDR_SDR			0x03
73*91f16700Schasinglulu #define LUT_MODE			0x04
74*91f16700Schasinglulu #define LUT_MODE2			0x05
75*91f16700Schasinglulu #define LUT_MODE4			0x06
76*91f16700Schasinglulu #define LUT_MODE8			0x07
77*91f16700Schasinglulu #define LUT_NXP_WRITE			0x08
78*91f16700Schasinglulu #define LUT_NXP_READ			0x09
79*91f16700Schasinglulu 
80*91f16700Schasinglulu #define LUT_LEARN_SDR			0x0A
81*91f16700Schasinglulu #define LUT_DATSZ_SDR			0x0B
82*91f16700Schasinglulu #define LUT_DUMMY			0x0C
83*91f16700Schasinglulu #define LUT_DUMMY_RWDS_SDR		0x0D
84*91f16700Schasinglulu #define LUT_JMP_ON_CS			0x1F
85*91f16700Schasinglulu #define LUT_CMD_DDR			0x21
86*91f16700Schasinglulu #define LUT_ADDR_DDR			0x22
87*91f16700Schasinglulu #define LUT_CADDR_DDR			0x23
88*91f16700Schasinglulu #define LUT_MODE_DDR			0x24
89*91f16700Schasinglulu #define LUT_MODE2_DDR			0x25
90*91f16700Schasinglulu #define LUT_MODE4_DDR			0x26
91*91f16700Schasinglulu #define LUT_MODE8_DDR			0x27
92*91f16700Schasinglulu #define LUT_WRITE_DDR			0x28
93*91f16700Schasinglulu #define LUT_READ_DDR			0x29
94*91f16700Schasinglulu #define LUT_LEARN_DDR			0x2A
95*91f16700Schasinglulu #define LUT_DATSZ_DDR			0x2B
96*91f16700Schasinglulu #define LUT_DUMMY_DDR			0x2C
97*91f16700Schasinglulu #define LUT_DUMMY_RWDS_DDR		0x2D
98*91f16700Schasinglulu 
99*91f16700Schasinglulu #define FSPI_NOR_CMD_READ		0x03
100*91f16700Schasinglulu #define FSPI_NOR_CMD_READ_4B		0x13
101*91f16700Schasinglulu #define FSPI_NOR_CMD_FASTREAD		0x0b
102*91f16700Schasinglulu #define FSPI_NOR_CMD_FASTREAD_4B	0x0c
103*91f16700Schasinglulu #define FSPI_NOR_CMD_PP			0x02
104*91f16700Schasinglulu #define FSPI_NOR_CMD_PP_4B		0x12
105*91f16700Schasinglulu #define FSPI_NOR_CMD_WREN		0x06
106*91f16700Schasinglulu #define FSPI_NOR_CMD_SE_64K		0xd8
107*91f16700Schasinglulu #define FSPI_NOR_CMD_SE_64K_4B		0xdc
108*91f16700Schasinglulu #define FSPI_NOR_CMD_SE_4K		0x20
109*91f16700Schasinglulu #define FSPI_NOR_CMD_SE_4K_4B		0x21
110*91f16700Schasinglulu #define FSPI_NOR_CMD_BE			0x60
111*91f16700Schasinglulu #define FSPI_NOR_CMD_RDSR		0x05
112*91f16700Schasinglulu #define FSPI_NOR_CMD_WREN_STOP		0x04
113*91f16700Schasinglulu 
114*91f16700Schasinglulu #define FSPI_LUT_STOP			0x00
115*91f16700Schasinglulu #define FSPI_LUT_CMD			0x01
116*91f16700Schasinglulu #define FSPI_LUT_ADDR			0x02
117*91f16700Schasinglulu 
118*91f16700Schasinglulu #define FSPI_LUT_PAD1			0
119*91f16700Schasinglulu #define FSPI_LUT_PAD2			1
120*91f16700Schasinglulu #define FSPI_LUT_PAD4			2
121*91f16700Schasinglulu #define FSPI_LUT_PAD8			3
122*91f16700Schasinglulu 
123*91f16700Schasinglulu #define FSPI_LUT_ADDR24BIT		0x18
124*91f16700Schasinglulu #define FSPI_LUT_ADDR32BIT		0x20
125*91f16700Schasinglulu 
126*91f16700Schasinglulu #define FSPI_LUT_WRITE			0x08
127*91f16700Schasinglulu #define FSPI_LUT_READ			0x09
128*91f16700Schasinglulu #define FSPI_DUMMY_SDR			0x0c
129*91f16700Schasinglulu 
130*91f16700Schasinglulu /* TODO Check size if functional*/
131*91f16700Schasinglulu #define FSPI_RX_IPBUF_SIZE		0x200	/*  64*64 bits  */
132*91f16700Schasinglulu #define FSPI_TX_IPBUF_SIZE		0x400	/* 128*64 bits */
133*91f16700Schasinglulu 
134*91f16700Schasinglulu #define FSPI_RX_MAX_AHBBUF_SIZE		0x800 /* 256 * 64bits */
135*91f16700Schasinglulu #define FSPI_TX_MAX_AHBBUF_SIZE		0x40  /* 8 * 64bits   */
136*91f16700Schasinglulu 
137*91f16700Schasinglulu #define FSPI_LUTREG_OFFSET			0x200ul
138*91f16700Schasinglulu 
139*91f16700Schasinglulu #define FSPI_MAX_TIMEOUT_AHBCMD		0xFFU
140*91f16700Schasinglulu #define FSPI_MAX_TIMEOUT_IPCMD		0xFF
141*91f16700Schasinglulu #define FSPI_SER_CLK_DIV		0x04
142*91f16700Schasinglulu #define FSPI_HSEN			0
143*91f16700Schasinglulu #define FSPI_ENDCFG_BE64		0x01
144*91f16700Schasinglulu #define FSPI_ENDCFG_BE32		0x03
145*91f16700Schasinglulu #define FSPI_ENDCFG_LE32		0x02
146*91f16700Schasinglulu #define FSPI_ENDCFG_LE64		0x0
147*91f16700Schasinglulu 
148*91f16700Schasinglulu #define MASK_24BIT_ADDRESS		0x00ffffff
149*91f16700Schasinglulu #define MASK_32BIT_ADDRESS		0xffffffff
150*91f16700Schasinglulu 
151*91f16700Schasinglulu /* Registers used by the driver */
152*91f16700Schasinglulu #define FSPI_MCR0			0x0ul
153*91f16700Schasinglulu #define FSPI_MCR0_AHB_TIMEOUT(x)	((x) << 24)
154*91f16700Schasinglulu #define FSPI_MCR0_IP_TIMEOUT(x)		((x) << 16)
155*91f16700Schasinglulu #define FSPI_MCR0_LEARN_EN		BIT(15)
156*91f16700Schasinglulu #define FSPI_MCR0_SCRFRUN_EN		BIT(14)
157*91f16700Schasinglulu #define FSPI_MCR0_OCTCOMB_EN		BIT(13)
158*91f16700Schasinglulu #define FSPI_MCR0_DOZE_EN		BIT(12)
159*91f16700Schasinglulu #define FSPI_MCR0_HSEN			BIT(11)
160*91f16700Schasinglulu #define FSPI_MCR0_SERCLKDIV		BIT(8)
161*91f16700Schasinglulu #define FSPI_MCR0_ATDF_EN		BIT(7)
162*91f16700Schasinglulu #define FSPI_MCR0_ARDF_EN		BIT(6)
163*91f16700Schasinglulu #define FSPI_MCR0_RXCLKSRC(x)		((x) << 4)
164*91f16700Schasinglulu #define FSPI_MCR0_END_CFG(x)		((x) << 2)
165*91f16700Schasinglulu #define FSPI_MCR0_MDIS			BIT(1)
166*91f16700Schasinglulu #define FSPI_MCR0_SWRST			BIT(0)
167*91f16700Schasinglulu 
168*91f16700Schasinglulu #define FSPI_MCR0_AHBGRANTWAIT_SHIFT	24
169*91f16700Schasinglulu #define FSPI_MCR0_AHBGRANTWAIT_MASK	(0xFFU << FSPI_MCR0_AHBGRANTWAIT_SHIFT)
170*91f16700Schasinglulu #define FSPI_MCR0_IPGRANTWAIT_SHIFT	16
171*91f16700Schasinglulu #define FSPI_MCR0_IPGRANTWAIT_MASK	(0xFF << FSPI_MCR0_IPGRANTWAIT_SHIFT)
172*91f16700Schasinglulu #define FSPI_MCR0_HSEN_SHIFT		11
173*91f16700Schasinglulu #define FSPI_MCR0_HSEN_MASK		(1 << FSPI_MCR0_HSEN_SHIFT)
174*91f16700Schasinglulu #define FSPI_MCR0_SERCLKDIV_SHIFT	8
175*91f16700Schasinglulu #define FSPI_MCR0_SERCLKDIV_MASK	(7 << FSPI_MCR0_SERCLKDIV_SHIFT)
176*91f16700Schasinglulu #define FSPI_MCR0_ENDCFG_SHIFT		2
177*91f16700Schasinglulu #define FSPI_MCR0_ENDCFG_MASK		(3 << FSPI_MCR0_ENDCFG_SHIFT)
178*91f16700Schasinglulu #define FSPI_MCR0_RXCLKSRC_SHIFT	4
179*91f16700Schasinglulu #define FSPI_MCR0_RXCLKSRC_MASK		(3 << FSPI_MCR0_RXCLKSRC_SHIFT)
180*91f16700Schasinglulu 
181*91f16700Schasinglulu #define FSPI_MCR1			0x04
182*91f16700Schasinglulu #define FSPI_MCR1_SEQ_TIMEOUT(x)	((x) << 16)
183*91f16700Schasinglulu #define FSPI_MCR1_AHB_TIMEOUT(x)	(x)
184*91f16700Schasinglulu 
185*91f16700Schasinglulu #define FSPI_MCR2			0x08
186*91f16700Schasinglulu #define FSPI_MCR2_IDLE_WAIT(x)		((x) << 24)
187*91f16700Schasinglulu #define FSPI_MCR2_SAMEDEVICEEN		BIT(15)
188*91f16700Schasinglulu #define FSPI_MCR2_CLRLRPHS		BIT(14)
189*91f16700Schasinglulu #define FSPI_MCR2_ABRDATSZ		BIT(8)
190*91f16700Schasinglulu #define FSPI_MCR2_ABRLEARN		BIT(7)
191*91f16700Schasinglulu #define FSPI_MCR2_ABR_READ		BIT(6)
192*91f16700Schasinglulu #define FSPI_MCR2_ABRWRITE		BIT(5)
193*91f16700Schasinglulu #define FSPI_MCR2_ABRDUMMY		BIT(4)
194*91f16700Schasinglulu #define FSPI_MCR2_ABR_MODE		BIT(3)
195*91f16700Schasinglulu #define FSPI_MCR2_ABRCADDR		BIT(2)
196*91f16700Schasinglulu #define FSPI_MCR2_ABRRADDR		BIT(1)
197*91f16700Schasinglulu #define FSPI_MCR2_ABR_CMD		BIT(0)
198*91f16700Schasinglulu 
199*91f16700Schasinglulu #define FSPI_AHBCR			0x0c
200*91f16700Schasinglulu #define FSPI_AHBCR_RDADDROPT		BIT(6)
201*91f16700Schasinglulu #define FSPI_AHBCR_PREF_EN		BIT(5)
202*91f16700Schasinglulu #define FSPI_AHBCR_BUFF_EN		BIT(4)
203*91f16700Schasinglulu #define FSPI_AHBCR_CACH_EN		BIT(3)
204*91f16700Schasinglulu #define FSPI_AHBCR_CLRTXBUF		BIT(2)
205*91f16700Schasinglulu #define FSPI_AHBCR_CLRRXBUF		BIT(1)
206*91f16700Schasinglulu #define FSPI_AHBCR_PAR_EN		BIT(0)
207*91f16700Schasinglulu 
208*91f16700Schasinglulu #define FSPI_INTEN			0x10
209*91f16700Schasinglulu #define FSPI_INTEN_SCLKSBWR		BIT(9)
210*91f16700Schasinglulu #define FSPI_INTEN_SCLKSBRD		BIT(8)
211*91f16700Schasinglulu #define FSPI_INTEN_DATALRNFL		BIT(7)
212*91f16700Schasinglulu #define FSPI_INTEN_IPTXWE		BIT(6)
213*91f16700Schasinglulu #define FSPI_INTEN_IPRXWA		BIT(5)
214*91f16700Schasinglulu #define FSPI_INTEN_AHBCMDERR		BIT(4)
215*91f16700Schasinglulu #define FSPI_INTEN_IPCMDERR		BIT(3)
216*91f16700Schasinglulu #define FSPI_INTEN_AHBCMDGE		BIT(2)
217*91f16700Schasinglulu #define FSPI_INTEN_IPCMDGE		BIT(1)
218*91f16700Schasinglulu #define FSPI_INTEN_IPCMDDONE		BIT(0)
219*91f16700Schasinglulu 
220*91f16700Schasinglulu #define FSPI_INTR			0x14
221*91f16700Schasinglulu #define FSPI_INTR_SCLKSBWR		BIT(9)
222*91f16700Schasinglulu #define FSPI_INTR_SCLKSBRD		BIT(8)
223*91f16700Schasinglulu #define FSPI_INTR_DATALRNFL		BIT(7)
224*91f16700Schasinglulu #define FSPI_INTR_IPTXWE		BIT(6)
225*91f16700Schasinglulu #define FSPI_INTR_IPRXWA		BIT(5)
226*91f16700Schasinglulu #define FSPI_INTR_AHBCMDERR		BIT(4)
227*91f16700Schasinglulu #define FSPI_INTR_IPCMDERR		BIT(3)
228*91f16700Schasinglulu #define FSPI_INTR_AHBCMDGE		BIT(2)
229*91f16700Schasinglulu #define FSPI_INTR_IPCMDGE		BIT(1)
230*91f16700Schasinglulu #define FSPI_INTR_IPCMDDONE		BIT(0)
231*91f16700Schasinglulu 
232*91f16700Schasinglulu #define FSPI_LUTKEY			0x18
233*91f16700Schasinglulu #define FSPI_LUTKEY_VALUE		0x5AF05AF0
234*91f16700Schasinglulu 
235*91f16700Schasinglulu #define FSPI_LCKCR			0x1C
236*91f16700Schasinglulu 
237*91f16700Schasinglulu #define FSPI_LCKER_LOCK			0x1
238*91f16700Schasinglulu #define FSPI_LCKER_UNLOCK		0x2
239*91f16700Schasinglulu 
240*91f16700Schasinglulu #define FSPI_BUFXCR_INVALID_MSTRID	0xE
241*91f16700Schasinglulu #define FSPI_AHBRX_BUF0CR0		0x20
242*91f16700Schasinglulu #define FSPI_AHBRX_BUF1CR0		0x24
243*91f16700Schasinglulu #define FSPI_AHBRX_BUF2CR0		0x28
244*91f16700Schasinglulu #define FSPI_AHBRX_BUF3CR0		0x2C
245*91f16700Schasinglulu #define FSPI_AHBRX_BUF4CR0		0x30
246*91f16700Schasinglulu #define FSPI_AHBRX_BUF5CR0		0x34
247*91f16700Schasinglulu #define FSPI_AHBRX_BUF6CR0		0x38
248*91f16700Schasinglulu #define FSPI_AHBRX_BUF7CR0		0x3C
249*91f16700Schasinglulu 
250*91f16700Schasinglulu #define FSPI_AHBRXBUF0CR7_PREF		BIT(31)
251*91f16700Schasinglulu 
252*91f16700Schasinglulu #define FSPI_AHBRX_BUF0CR1		0x40
253*91f16700Schasinglulu #define FSPI_AHBRX_BUF1CR1		0x44
254*91f16700Schasinglulu #define FSPI_AHBRX_BUF2CR1		0x48
255*91f16700Schasinglulu #define FSPI_AHBRX_BUF3CR1		0x4C
256*91f16700Schasinglulu #define FSPI_AHBRX_BUF4CR1		0x50
257*91f16700Schasinglulu #define FSPI_AHBRX_BUF5CR1		0x54
258*91f16700Schasinglulu #define FSPI_AHBRX_BUF6CR1		0x58
259*91f16700Schasinglulu #define FSPI_AHBRX_BUF7CR1		0x5C
260*91f16700Schasinglulu 
261*91f16700Schasinglulu #define FSPI_FLSHA1CR0			0x60
262*91f16700Schasinglulu #define FSPI_FLSHA2CR0			0x64
263*91f16700Schasinglulu #define FSPI_FLSHB1CR0			0x68
264*91f16700Schasinglulu #define FSPI_FLSHB2CR0			0x6C
265*91f16700Schasinglulu #define FSPI_FLSHXCR0_SZ_KB		10
266*91f16700Schasinglulu #define FSPI_FLSHXCR0_SZ(x)		((x) >> FSPI_FLSHXCR0_SZ_KB)
267*91f16700Schasinglulu 
268*91f16700Schasinglulu #define FSPI_FLSHA1CR1			0x70
269*91f16700Schasinglulu #define FSPI_FLSHA2CR1			0x74
270*91f16700Schasinglulu #define FSPI_FLSHB1CR1			0x78
271*91f16700Schasinglulu #define FSPI_FLSHB2CR1			0x7C
272*91f16700Schasinglulu #define FSPI_FLSHXCR1_CSINTR(x)		((x) << 16)
273*91f16700Schasinglulu #define FSPI_FLSHXCR1_CAS(x)		((x) << 11)
274*91f16700Schasinglulu #define FSPI_FLSHXCR1_WA		BIT(10)
275*91f16700Schasinglulu #define FSPI_FLSHXCR1_TCSH(x)		((x) << 5)
276*91f16700Schasinglulu #define FSPI_FLSHXCR1_TCSS(x)		(x)
277*91f16700Schasinglulu 
278*91f16700Schasinglulu #define FSPI_FLSHXCR1_TCSH_SHIFT	5
279*91f16700Schasinglulu #define FSPI_FLSHXCR1_TCSH_MASK		(0x1F << FSPI_FLSHXCR1_TCSH_SHIFT)
280*91f16700Schasinglulu #define FSPI_FLSHXCR1_TCSS_SHIFT	0
281*91f16700Schasinglulu #define FSPI_FLSHXCR1_TCSS_MASK		(0x1F << FSPI_FLSHXCR1_TCSS_SHIFT)
282*91f16700Schasinglulu 
283*91f16700Schasinglulu #define FSPI_FLSHA1CR2			0x80
284*91f16700Schasinglulu #define FSPI_FLSHA2CR2			0x84
285*91f16700Schasinglulu #define FSPI_FLSHB1CR2			0x88
286*91f16700Schasinglulu #define FSPI_FLSHB2CR2			0x8C
287*91f16700Schasinglulu #define FSPI_FLSHXCR2_CLRINSP		BIT(24)
288*91f16700Schasinglulu #define FSPI_FLSHXCR2_AWRWAIT		BIT(16)
289*91f16700Schasinglulu #define FSPI_FLSHXCR2_AWRSEQN_SHIFT	13
290*91f16700Schasinglulu #define FSPI_FLSHXCR2_AWRSEQI_SHIFT	8
291*91f16700Schasinglulu #define FSPI_FLSHXCR2_ARDSEQN_SHIFT	5
292*91f16700Schasinglulu #define FSPI_FLSHXCR2_ARDSEQI_SHIFT	0
293*91f16700Schasinglulu 
294*91f16700Schasinglulu #define FSPI_IPCR0			0xA0
295*91f16700Schasinglulu 
296*91f16700Schasinglulu #define FSPI_IPCR1			0xA4
297*91f16700Schasinglulu #define FSPI_IPCR1_IPAREN		BIT(31)
298*91f16700Schasinglulu #define FSPI_IPCR1_SEQNUM_SHIFT		24
299*91f16700Schasinglulu #define FSPI_IPCR1_SEQID_SHIFT		16
300*91f16700Schasinglulu #define FSPI_IPCR1_IDATSZ(x)		(x)
301*91f16700Schasinglulu 
302*91f16700Schasinglulu #define FSPI_IPCMD			0xB0
303*91f16700Schasinglulu #define FSPI_IPCMD_TRG			BIT(0)
304*91f16700Schasinglulu 
305*91f16700Schasinglulu 
306*91f16700Schasinglulu /* IP Command Register */
307*91f16700Schasinglulu #define FSPI_IPCMD_TRG_SHIFT		0
308*91f16700Schasinglulu #define FSPI_IPCMD_TRG_MASK		(1 << FSPI_IPCMD_TRG_SHIFT)
309*91f16700Schasinglulu 
310*91f16700Schasinglulu #define FSPI_INTR_IPRXWA_SHIFT		5
311*91f16700Schasinglulu #define FSPI_INTR_IPRXWA_MASK		(1 << FSPI_INTR_IPRXWA_SHIFT)
312*91f16700Schasinglulu 
313*91f16700Schasinglulu #define FSPI_INTR_IPCMDDONE_SHIFT	0
314*91f16700Schasinglulu #define FSPI_INTR_IPCMDDONE_MASK	(1 << FSPI_INTR_IPCMDDONE_SHIFT)
315*91f16700Schasinglulu 
316*91f16700Schasinglulu #define FSPI_INTR_IPTXWE_SHIFT		6
317*91f16700Schasinglulu #define FSPI_INTR_IPTXWE_MASK		(1 << FSPI_INTR_IPTXWE_SHIFT)
318*91f16700Schasinglulu 
319*91f16700Schasinglulu #define FSPI_IPTXFSTS_FILL_SHIFT	0
320*91f16700Schasinglulu #define FSPI_IPTXFSTS_FILL_MASK		(0xFF << FSPI_IPTXFSTS_FILL_SHIFT)
321*91f16700Schasinglulu 
322*91f16700Schasinglulu #define FSPI_IPCR1_ISEQID_SHIFT		16
323*91f16700Schasinglulu #define FSPI_IPCR1_ISEQID_MASK		(0x1F << FSPI_IPCR1_ISEQID_SHIFT)
324*91f16700Schasinglulu 
325*91f16700Schasinglulu #define FSPI_IPRXFSTS_FILL_SHIFT	0
326*91f16700Schasinglulu #define FSPI_IPRXFSTS_FILL_MASK		(0xFF << FSPI_IPRXFSTS_FILL_SHIFT)
327*91f16700Schasinglulu 
328*91f16700Schasinglulu #define FSPI_DLPR			0xB4
329*91f16700Schasinglulu 
330*91f16700Schasinglulu #define FSPI_IPRXFCR			0xB8
331*91f16700Schasinglulu #define FSPI_IPRXFCR_CLR		BIT(0)
332*91f16700Schasinglulu #define FSPI_IPRXFCR_DMA_EN		BIT(1)
333*91f16700Schasinglulu #define FSPI_IPRXFCR_WMRK(x)		((x) << 2)
334*91f16700Schasinglulu 
335*91f16700Schasinglulu #define FSPI_IPTXFCR			0xBC
336*91f16700Schasinglulu #define FSPI_IPTXFCR_CLR		BIT(0)
337*91f16700Schasinglulu #define FSPI_IPTXFCR_DMA_EN		BIT(1)
338*91f16700Schasinglulu #define FSPI_IPTXFCR_WMRK(x)		((x) << 2)
339*91f16700Schasinglulu 
340*91f16700Schasinglulu #define FSPI_DLLACR			0xC0
341*91f16700Schasinglulu #define FSPI_DLLACR_OVRDEN		BIT(8)
342*91f16700Schasinglulu 
343*91f16700Schasinglulu #define FSPI_DLLBCR			0xC4
344*91f16700Schasinglulu #define FSPI_DLLBCR_OVRDEN		BIT(8)
345*91f16700Schasinglulu 
346*91f16700Schasinglulu #define FSPI_STS0			0xE0
347*91f16700Schasinglulu #define FSPI_STS0_DLPHB(x)		((x) << 8)
348*91f16700Schasinglulu #define FSPI_STS0_DLPHA(x)		((x) << 4)
349*91f16700Schasinglulu #define FSPI_STS0_CMD_SRC(x)		((x) << 2)
350*91f16700Schasinglulu #define FSPI_STS0_ARB_IDLE		BIT(1)
351*91f16700Schasinglulu #define FSPI_STS0_SEQ_IDLE		BIT(0)
352*91f16700Schasinglulu 
353*91f16700Schasinglulu #define FSPI_STS1			0xE4
354*91f16700Schasinglulu #define FSPI_STS1_IP_ERRCD(x)		((x) << 24)
355*91f16700Schasinglulu #define FSPI_STS1_IP_ERRID(x)		((x) << 16)
356*91f16700Schasinglulu #define FSPI_STS1_AHB_ERRCD(x)		((x) << 8)
357*91f16700Schasinglulu #define FSPI_STS1_AHB_ERRID(x)		(x)
358*91f16700Schasinglulu 
359*91f16700Schasinglulu #define FSPI_AHBSPNST			0xEC
360*91f16700Schasinglulu #define FSPI_AHBSPNST_DATLFT(x)		((x) << 16)
361*91f16700Schasinglulu #define FSPI_AHBSPNST_BUFID(x)		((x) << 1)
362*91f16700Schasinglulu #define FSPI_AHBSPNST_ACTIVE		BIT(0)
363*91f16700Schasinglulu 
364*91f16700Schasinglulu #define FSPI_IPRXFSTS			0xF0
365*91f16700Schasinglulu #define FSPI_IPRXFSTS_RDCNTR(x)		((x) << 16)
366*91f16700Schasinglulu #define FSPI_IPRXFSTS_FILL(x)		(x)
367*91f16700Schasinglulu 
368*91f16700Schasinglulu #define FSPI_IPTXFSTS			0xF4
369*91f16700Schasinglulu #define FSPI_IPTXFSTS_WRCNTR(x)		((x) << 16)
370*91f16700Schasinglulu #define FSPI_IPTXFSTS_FILL(x)		(x)
371*91f16700Schasinglulu 
372*91f16700Schasinglulu #define FSPI_NOR_SR_WIP_SHIFT		(0)
373*91f16700Schasinglulu #define FSPI_NOR_SR_WIP_MASK		(1 << FSPI_NOR_SR_WIP_SHIFT)
374*91f16700Schasinglulu 
375*91f16700Schasinglulu #define FSPI_RFDR			0x100
376*91f16700Schasinglulu #define FSPI_TFDR			0x180
377*91f16700Schasinglulu 
378*91f16700Schasinglulu #define FSPI_LUT_BASE			0x200
379*91f16700Schasinglulu #define FSPI_LUT_OFFSET			(SEQID_LUT * 4 * 4)
380*91f16700Schasinglulu #define FSPI_LUT_REG(idx) \
381*91f16700Schasinglulu 	(FSPI_LUT_BASE + FSPI_LUT_OFFSET + (idx) * 4)
382*91f16700Schasinglulu 
383*91f16700Schasinglulu /* register map end */
384*91f16700Schasinglulu 
385*91f16700Schasinglulu #endif
386