xref: /linux/drivers/memory/renesas-rpc-if-regs.h (revision 5722a6cecfff3e381b96bbbd7e9b3911731e80d9)
1*228e72bfSBiju Das /* SPDX-License-Identifier: GPL-2.0 */
2*228e72bfSBiju Das /*
3*228e72bfSBiju Das  * R-Car RPC Interface Registers Definitions
4*228e72bfSBiju Das  *
5*228e72bfSBiju Das  * Copyright (C) 2025 Renesas Electronics Corporation
6*228e72bfSBiju Das  */
7*228e72bfSBiju Das 
8*228e72bfSBiju Das #ifndef __RENESAS_RPC_IF_REGS_H__
9*228e72bfSBiju Das #define __RENESAS_RPC_IF_REGS_H__
10*228e72bfSBiju Das 
11*228e72bfSBiju Das #include <linux/bits.h>
12*228e72bfSBiju Das 
13*228e72bfSBiju Das #define RPCIF_CMNCR		0x0000	/* R/W */
14*228e72bfSBiju Das #define RPCIF_CMNCR_MD		BIT(31)
15*228e72bfSBiju Das #define RPCIF_CMNCR_MOIIO3(val)	(((val) & 0x3) << 22)
16*228e72bfSBiju Das #define RPCIF_CMNCR_MOIIO2(val)	(((val) & 0x3) << 20)
17*228e72bfSBiju Das #define RPCIF_CMNCR_MOIIO1(val)	(((val) & 0x3) << 18)
18*228e72bfSBiju Das #define RPCIF_CMNCR_MOIIO0(val)	(((val) & 0x3) << 16)
19*228e72bfSBiju Das #define RPCIF_CMNCR_MOIIO(val)	(RPCIF_CMNCR_MOIIO0(val) | RPCIF_CMNCR_MOIIO1(val) | \
20*228e72bfSBiju Das 				 RPCIF_CMNCR_MOIIO2(val) | RPCIF_CMNCR_MOIIO3(val))
21*228e72bfSBiju Das #define RPCIF_CMNCR_IO3FV(val)	(((val) & 0x3) << 14) /* documented for RZ/G2L */
22*228e72bfSBiju Das #define RPCIF_CMNCR_IO2FV(val)	(((val) & 0x3) << 12) /* documented for RZ/G2L */
23*228e72bfSBiju Das #define RPCIF_CMNCR_IO0FV(val)	(((val) & 0x3) << 8)
24*228e72bfSBiju Das #define RPCIF_CMNCR_IOFV(val)	(RPCIF_CMNCR_IO0FV(val) | RPCIF_CMNCR_IO2FV(val) | \
25*228e72bfSBiju Das 				 RPCIF_CMNCR_IO3FV(val))
26*228e72bfSBiju Das #define RPCIF_CMNCR_BSZ(val)	(((val) & 0x3) << 0)
27*228e72bfSBiju Das 
28*228e72bfSBiju Das #define RPCIF_SSLDR		0x0004	/* R/W */
29*228e72bfSBiju Das #define RPCIF_SSLDR_SPNDL(d)	(((d) & 0x7) << 16)
30*228e72bfSBiju Das #define RPCIF_SSLDR_SLNDL(d)	(((d) & 0x7) << 8)
31*228e72bfSBiju Das #define RPCIF_SSLDR_SCKDL(d)	(((d) & 0x7) << 0)
32*228e72bfSBiju Das 
33*228e72bfSBiju Das #define RPCIF_DRCR		0x000C	/* R/W */
34*228e72bfSBiju Das #define RPCIF_DRCR_SSLN		BIT(24)
35*228e72bfSBiju Das #define RPCIF_DRCR_RBURST(v)	((((v) - 1) & 0x1F) << 16)
36*228e72bfSBiju Das #define RPCIF_DRCR_RCF		BIT(9)
37*228e72bfSBiju Das #define RPCIF_DRCR_RBE		BIT(8)
38*228e72bfSBiju Das #define RPCIF_DRCR_SSLE		BIT(0)
39*228e72bfSBiju Das 
40*228e72bfSBiju Das #define RPCIF_DRCMR		0x0010	/* R/W */
41*228e72bfSBiju Das #define RPCIF_DRCMR_CMD(c)	(((c) & 0xFF) << 16)
42*228e72bfSBiju Das #define RPCIF_DRCMR_OCMD(c)	(((c) & 0xFF) << 0)
43*228e72bfSBiju Das 
44*228e72bfSBiju Das #define RPCIF_DREAR		0x0014	/* R/W */
45*228e72bfSBiju Das #define RPCIF_DREAR_EAV(c)	(((c) & 0xF) << 16)
46*228e72bfSBiju Das #define RPCIF_DREAR_EAC(c)	(((c) & 0x7) << 0)
47*228e72bfSBiju Das 
48*228e72bfSBiju Das #define RPCIF_DROPR		0x0018	/* R/W */
49*228e72bfSBiju Das 
50*228e72bfSBiju Das #define RPCIF_DRENR		0x001C	/* R/W */
51*228e72bfSBiju Das #define RPCIF_DRENR_CDB(o)	(((u32)((o) & 0x3)) << 30)
52*228e72bfSBiju Das #define RPCIF_DRENR_OCDB(o)	(((o) & 0x3) << 28)
53*228e72bfSBiju Das #define RPCIF_DRENR_ADB(o)	(((o) & 0x3) << 24)
54*228e72bfSBiju Das #define RPCIF_DRENR_OPDB(o)	(((o) & 0x3) << 20)
55*228e72bfSBiju Das #define RPCIF_DRENR_DRDB(o)	(((o) & 0x3) << 16)
56*228e72bfSBiju Das #define RPCIF_DRENR_DME		BIT(15)
57*228e72bfSBiju Das #define RPCIF_DRENR_CDE		BIT(14)
58*228e72bfSBiju Das #define RPCIF_DRENR_OCDE	BIT(12)
59*228e72bfSBiju Das #define RPCIF_DRENR_ADE(v)	(((v) & 0xF) << 8)
60*228e72bfSBiju Das #define RPCIF_DRENR_OPDE(v)	(((v) & 0xF) << 4)
61*228e72bfSBiju Das 
62*228e72bfSBiju Das #define RPCIF_SMCR		0x0020	/* R/W */
63*228e72bfSBiju Das #define RPCIF_SMCR_SSLKP	BIT(8)
64*228e72bfSBiju Das #define RPCIF_SMCR_SPIRE	BIT(2)
65*228e72bfSBiju Das #define RPCIF_SMCR_SPIWE	BIT(1)
66*228e72bfSBiju Das #define RPCIF_SMCR_SPIE		BIT(0)
67*228e72bfSBiju Das 
68*228e72bfSBiju Das #define RPCIF_SMCMR		0x0024	/* R/W */
69*228e72bfSBiju Das #define RPCIF_SMCMR_CMD(c)	(((c) & 0xFF) << 16)
70*228e72bfSBiju Das #define RPCIF_SMCMR_OCMD(c)	(((c) & 0xFF) << 0)
71*228e72bfSBiju Das 
72*228e72bfSBiju Das #define RPCIF_SMADR		0x0028	/* R/W */
73*228e72bfSBiju Das 
74*228e72bfSBiju Das #define RPCIF_SMOPR		0x002C	/* R/W */
75*228e72bfSBiju Das #define RPCIF_SMOPR_OPD3(o)	(((o) & 0xFF) << 24)
76*228e72bfSBiju Das #define RPCIF_SMOPR_OPD2(o)	(((o) & 0xFF) << 16)
77*228e72bfSBiju Das #define RPCIF_SMOPR_OPD1(o)	(((o) & 0xFF) << 8)
78*228e72bfSBiju Das #define RPCIF_SMOPR_OPD0(o)	(((o) & 0xFF) << 0)
79*228e72bfSBiju Das 
80*228e72bfSBiju Das #define RPCIF_SMENR		0x0030	/* R/W */
81*228e72bfSBiju Das #define RPCIF_SMENR_CDB(o)	(((o) & 0x3) << 30)
82*228e72bfSBiju Das #define RPCIF_SMENR_OCDB(o)	(((o) & 0x3) << 28)
83*228e72bfSBiju Das #define RPCIF_SMENR_ADB(o)	(((o) & 0x3) << 24)
84*228e72bfSBiju Das #define RPCIF_SMENR_OPDB(o)	(((o) & 0x3) << 20)
85*228e72bfSBiju Das #define RPCIF_SMENR_SPIDB(o)	(((o) & 0x3) << 16)
86*228e72bfSBiju Das #define RPCIF_SMENR_DME		BIT(15)
87*228e72bfSBiju Das #define RPCIF_SMENR_CDE		BIT(14)
88*228e72bfSBiju Das #define RPCIF_SMENR_OCDE	BIT(12)
89*228e72bfSBiju Das #define RPCIF_SMENR_ADE(v)	(((v) & 0xF) << 8)
90*228e72bfSBiju Das #define RPCIF_SMENR_OPDE(v)	(((v) & 0xF) << 4)
91*228e72bfSBiju Das #define RPCIF_SMENR_SPIDE(v)	(((v) & 0xF) << 0)
92*228e72bfSBiju Das 
93*228e72bfSBiju Das #define RPCIF_SMRDR0		0x0038	/* R */
94*228e72bfSBiju Das #define RPCIF_SMRDR1		0x003C	/* R */
95*228e72bfSBiju Das #define RPCIF_SMWDR0		0x0040	/* W */
96*228e72bfSBiju Das #define RPCIF_SMWDR1		0x0044	/* W */
97*228e72bfSBiju Das 
98*228e72bfSBiju Das #define RPCIF_CMNSR		0x0048	/* R */
99*228e72bfSBiju Das #define RPCIF_CMNSR_SSLF	BIT(1)
100*228e72bfSBiju Das #define RPCIF_CMNSR_TEND	BIT(0)
101*228e72bfSBiju Das 
102*228e72bfSBiju Das #define RPCIF_DRDMCR		0x0058	/* R/W */
103*228e72bfSBiju Das #define RPCIF_DMDMCR_DMCYC(v)	((((v) - 1) & 0x1F) << 0)
104*228e72bfSBiju Das 
105*228e72bfSBiju Das #define RPCIF_DRDRENR		0x005C	/* R/W */
106*228e72bfSBiju Das #define RPCIF_DRDRENR_HYPE(v)	(((v) & 0x7) << 12)
107*228e72bfSBiju Das #define RPCIF_DRDRENR_ADDRE	BIT(8)
108*228e72bfSBiju Das #define RPCIF_DRDRENR_OPDRE	BIT(4)
109*228e72bfSBiju Das #define RPCIF_DRDRENR_DRDRE	BIT(0)
110*228e72bfSBiju Das 
111*228e72bfSBiju Das #define RPCIF_SMDMCR		0x0060	/* R/W */
112*228e72bfSBiju Das #define RPCIF_SMDMCR_DMCYC(v)	((((v) - 1) & 0x1F) << 0)
113*228e72bfSBiju Das 
114*228e72bfSBiju Das #define RPCIF_SMDRENR		0x0064	/* R/W */
115*228e72bfSBiju Das #define RPCIF_SMDRENR_HYPE(v)	(((v) & 0x7) << 12)
116*228e72bfSBiju Das #define RPCIF_SMDRENR_ADDRE	BIT(8)
117*228e72bfSBiju Das #define RPCIF_SMDRENR_OPDRE	BIT(4)
118*228e72bfSBiju Das #define RPCIF_SMDRENR_SPIDRE	BIT(0)
119*228e72bfSBiju Das 
120*228e72bfSBiju Das #define RPCIF_PHYADD		0x0070	/* R/W available on R-Car E3/D3/V3M and RZ/G2{E,L} */
121*228e72bfSBiju Das #define RPCIF_PHYWR		0x0074	/* R/W available on R-Car E3/D3/V3M and RZ/G2{E,L} */
122*228e72bfSBiju Das 
123*228e72bfSBiju Das #define RPCIF_PHYCNT		0x007C	/* R/W */
124*228e72bfSBiju Das #define RPCIF_PHYCNT_CAL	BIT(31)
125*228e72bfSBiju Das #define RPCIF_PHYCNT_OCTA(v)	(((v) & 0x3) << 22)
126*228e72bfSBiju Das #define RPCIF_PHYCNT_EXDS	BIT(21)
127*228e72bfSBiju Das #define RPCIF_PHYCNT_OCT	BIT(20)
128*228e72bfSBiju Das #define RPCIF_PHYCNT_DDRCAL	BIT(19)
129*228e72bfSBiju Das #define RPCIF_PHYCNT_HS		BIT(18)
130*228e72bfSBiju Das #define RPCIF_PHYCNT_CKSEL(v)	(((v) & 0x3) << 16) /* valid only for RZ/G2L */
131*228e72bfSBiju Das #define RPCIF_PHYCNT_STRTIM(v)	(((v) & 0x7) << 15 | ((v) & 0x8) << 24) /* valid for R-Car and RZ/G2{E,H,M,N} */
132*228e72bfSBiju Das 
133*228e72bfSBiju Das #define RPCIF_PHYCNT_WBUF2	BIT(4)
134*228e72bfSBiju Das #define RPCIF_PHYCNT_WBUF	BIT(2)
135*228e72bfSBiju Das #define RPCIF_PHYCNT_PHYMEM(v)	(((v) & 0x3) << 0)
136*228e72bfSBiju Das #define RPCIF_PHYCNT_PHYMEM_MASK GENMASK(1, 0)
137*228e72bfSBiju Das 
138*228e72bfSBiju Das #define RPCIF_PHYOFFSET1	0x0080	/* R/W */
139*228e72bfSBiju Das #define RPCIF_PHYOFFSET1_DDRTMG(v) (((v) & 0x3) << 28)
140*228e72bfSBiju Das 
141*228e72bfSBiju Das #define RPCIF_PHYOFFSET2	0x0084	/* R/W */
142*228e72bfSBiju Das #define RPCIF_PHYOFFSET2_OCTTMG(v) (((v) & 0x7) << 8)
143*228e72bfSBiju Das 
144*228e72bfSBiju Das #define RPCIF_PHYINT		0x0088	/* R/W */
145*228e72bfSBiju Das #define RPCIF_PHYINT_WPVAL	BIT(1)
146*228e72bfSBiju Das 
147*228e72bfSBiju Das #endif /* __RENESAS_RPC_IF_REGS_H__ */
148