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