xref: /rk3399_rockchip-uboot/arch/sh/include/asm/cpu_sh7757.h (revision 8e9c897b2120ccf4e1177bf3662010f6d073aa64)
1*8e9c897bSYoshihiro Shimoda /*
2*8e9c897bSYoshihiro Shimoda  * Copyright (C) 2011  Renesas Solutions Corp.
3*8e9c897bSYoshihiro Shimoda  *
4*8e9c897bSYoshihiro Shimoda  * This program is free software; you can redistribute it and/or
5*8e9c897bSYoshihiro Shimoda  * modify it under the terms of the GNU General Public License as
6*8e9c897bSYoshihiro Shimoda  * published by the Free Software Foundation; either version 2 of
7*8e9c897bSYoshihiro Shimoda  * the License, or (at your option) any later version.
8*8e9c897bSYoshihiro Shimoda  *
9*8e9c897bSYoshihiro Shimoda  * This program is distributed in the hope that it will be useful,
10*8e9c897bSYoshihiro Shimoda  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11*8e9c897bSYoshihiro Shimoda  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12*8e9c897bSYoshihiro Shimoda  * GNU General Public License for more details.
13*8e9c897bSYoshihiro Shimoda  *
14*8e9c897bSYoshihiro Shimoda  * You should have received a copy of the GNU General Public License
15*8e9c897bSYoshihiro Shimoda  * along with this program; if not, write to the Free Software
16*8e9c897bSYoshihiro Shimoda  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
17*8e9c897bSYoshihiro Shimoda  * MA 02111-1307 USA
18*8e9c897bSYoshihiro Shimoda  *
19*8e9c897bSYoshihiro Shimoda  */
20*8e9c897bSYoshihiro Shimoda 
21*8e9c897bSYoshihiro Shimoda #ifndef _ASM_CPU_SH7757_H_
22*8e9c897bSYoshihiro Shimoda #define _ASM_CPU_SH7757_H_
23*8e9c897bSYoshihiro Shimoda 
24*8e9c897bSYoshihiro Shimoda #define CCR		0xFF00001C
25*8e9c897bSYoshihiro Shimoda #define WTCNT		0xFFCC0000
26*8e9c897bSYoshihiro Shimoda #define CCR_CACHE_INIT	0x0000090b
27*8e9c897bSYoshihiro Shimoda #define CACHE_OC_NUM_WAYS	1
28*8e9c897bSYoshihiro Shimoda 
29*8e9c897bSYoshihiro Shimoda #ifndef __ASSEMBLY__		/* put C only stuff in this section */
30*8e9c897bSYoshihiro Shimoda /* MMU */
31*8e9c897bSYoshihiro Shimoda struct mmu_regs {
32*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved[4];
33*8e9c897bSYoshihiro Shimoda 	unsigned int	mmucr;
34*8e9c897bSYoshihiro Shimoda };
35*8e9c897bSYoshihiro Shimoda #define MMU_BASE	((struct mmu_regs *)0xff000000)
36*8e9c897bSYoshihiro Shimoda 
37*8e9c897bSYoshihiro Shimoda /* Watchdog */
38*8e9c897bSYoshihiro Shimoda #define WTCSR0		0xffcc0002
39*8e9c897bSYoshihiro Shimoda #define WRSTCSR_R	0xffcc0003
40*8e9c897bSYoshihiro Shimoda #define WRSTCSR_W	0xffcc0002
41*8e9c897bSYoshihiro Shimoda #define WTCSR_PREFIX		0xa500
42*8e9c897bSYoshihiro Shimoda #define WRSTCSR_PREFIX		0x6900
43*8e9c897bSYoshihiro Shimoda #define WRSTCSR_WOVF_PREFIX	0x9600
44*8e9c897bSYoshihiro Shimoda 
45*8e9c897bSYoshihiro Shimoda /* SCIF */
46*8e9c897bSYoshihiro Shimoda #define SCIF0_BASE	0xfe4b0000	/* The real name is SCIF2 */
47*8e9c897bSYoshihiro Shimoda #define SCIF1_BASE	0xfe4c0000	/* The real name is SCIF3 */
48*8e9c897bSYoshihiro Shimoda #define SCIF2_BASE	0xfe4d0000	/* The real name is SCIF4 */
49*8e9c897bSYoshihiro Shimoda 
50*8e9c897bSYoshihiro Shimoda /* SerMux */
51*8e9c897bSYoshihiro Shimoda #define SMR0		0xfe470000
52*8e9c897bSYoshihiro Shimoda 
53*8e9c897bSYoshihiro Shimoda /* TMU0 */
54*8e9c897bSYoshihiro Shimoda #define TSTR		0xFE430004
55*8e9c897bSYoshihiro Shimoda #define TOCR		0xFE430000
56*8e9c897bSYoshihiro Shimoda #define TSTR0		0xFE430004
57*8e9c897bSYoshihiro Shimoda #define TCOR0		0xFE430008
58*8e9c897bSYoshihiro Shimoda #define TCNT0		0xFE43000C
59*8e9c897bSYoshihiro Shimoda #define TCR0		0xFE430010
60*8e9c897bSYoshihiro Shimoda #define TCOR1		0xFE430014
61*8e9c897bSYoshihiro Shimoda #define TCNT1		0xFE430018
62*8e9c897bSYoshihiro Shimoda #define TCR1		0xFE43001C
63*8e9c897bSYoshihiro Shimoda #define TCOR2		0xFE430020
64*8e9c897bSYoshihiro Shimoda #define TCNT2		0xFE430024
65*8e9c897bSYoshihiro Shimoda #define TCR2		0xFE430028
66*8e9c897bSYoshihiro Shimoda #define TCPR2		0xFE43002C
67*8e9c897bSYoshihiro Shimoda 
68*8e9c897bSYoshihiro Shimoda /* ETHER, GETHER MAC address */
69*8e9c897bSYoshihiro Shimoda struct ether_mac_regs {
70*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved[114];
71*8e9c897bSYoshihiro Shimoda 	unsigned int	mahr;
72*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved2;
73*8e9c897bSYoshihiro Shimoda 	unsigned int	malr;
74*8e9c897bSYoshihiro Shimoda };
75*8e9c897bSYoshihiro Shimoda #define GETHER0_MAC_BASE	((struct ether_mac_regs *)0xfee0400)
76*8e9c897bSYoshihiro Shimoda #define GETHER1_MAC_BASE	((struct ether_mac_regs *)0xfee0c00)
77*8e9c897bSYoshihiro Shimoda #define ETHER0_MAC_BASE		((struct ether_mac_regs *)0xfef0000)
78*8e9c897bSYoshihiro Shimoda #define ETHER1_MAC_BASE		((struct ether_mac_regs *)0xfef0800)
79*8e9c897bSYoshihiro Shimoda 
80*8e9c897bSYoshihiro Shimoda /* GETHER */
81*8e9c897bSYoshihiro Shimoda struct gether_control_regs {
82*8e9c897bSYoshihiro Shimoda 	unsigned int	gbecont;
83*8e9c897bSYoshihiro Shimoda };
84*8e9c897bSYoshihiro Shimoda #define GETHER_CONTROL_BASE	((struct gether_control_regs *)0xffc10100)
85*8e9c897bSYoshihiro Shimoda #define GBECONT_RMII1		0x00020000
86*8e9c897bSYoshihiro Shimoda #define GBECONT_RMII0		0x00010000
87*8e9c897bSYoshihiro Shimoda 
88*8e9c897bSYoshihiro Shimoda /* USB0/1 */
89*8e9c897bSYoshihiro Shimoda struct usb_common_regs {
90*8e9c897bSYoshihiro Shimoda 	unsigned short	reserved[129];
91*8e9c897bSYoshihiro Shimoda 	unsigned short	suspmode;
92*8e9c897bSYoshihiro Shimoda };
93*8e9c897bSYoshihiro Shimoda #define USB0_COMMON_BASE	((struct usb_common_regs *)0xfe450000)
94*8e9c897bSYoshihiro Shimoda #define USB1_COMMON_BASE	((struct usb_common_regs *)0xfe4f0000)
95*8e9c897bSYoshihiro Shimoda 
96*8e9c897bSYoshihiro Shimoda struct usb0_phy_regs {
97*8e9c897bSYoshihiro Shimoda 	unsigned short	reset;
98*8e9c897bSYoshihiro Shimoda 	unsigned short	reserved[4];
99*8e9c897bSYoshihiro Shimoda 	unsigned short	portsel;
100*8e9c897bSYoshihiro Shimoda };
101*8e9c897bSYoshihiro Shimoda #define USB0_PHY_BASE		((struct usb0_phy_regs *)0xfe5f0000)
102*8e9c897bSYoshihiro Shimoda 
103*8e9c897bSYoshihiro Shimoda struct usb1_port_regs {
104*8e9c897bSYoshihiro Shimoda 	unsigned int	port1sel;
105*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved;
106*8e9c897bSYoshihiro Shimoda 	unsigned int	usb1intsts;
107*8e9c897bSYoshihiro Shimoda };
108*8e9c897bSYoshihiro Shimoda #define USB1_PORT_BASE		((struct usb1_port_regs *)0xfe4f2000)
109*8e9c897bSYoshihiro Shimoda 
110*8e9c897bSYoshihiro Shimoda struct usb1_alignment_regs {
111*8e9c897bSYoshihiro Shimoda 	unsigned int	ehcidatac;	/* 0xfe4fe018 */
112*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved[63];
113*8e9c897bSYoshihiro Shimoda 	unsigned int	ohcidatac;
114*8e9c897bSYoshihiro Shimoda };
115*8e9c897bSYoshihiro Shimoda #define USB1_ALIGNMENT_BASE	((struct usb1_alignment_regs *)0xfe4fe018)
116*8e9c897bSYoshihiro Shimoda 
117*8e9c897bSYoshihiro Shimoda /* GCTRL, GRA */
118*8e9c897bSYoshihiro Shimoda struct gctrl_regs {
119*8e9c897bSYoshihiro Shimoda 	unsigned int	wprotect;
120*8e9c897bSYoshihiro Shimoda 	unsigned int	gplldiv;
121*8e9c897bSYoshihiro Shimoda 	unsigned int	gracr2;		/* GRA */
122*8e9c897bSYoshihiro Shimoda 	unsigned int	gracr3;		/* GRA */
123*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved[4];
124*8e9c897bSYoshihiro Shimoda 	unsigned int	fcntcr1;
125*8e9c897bSYoshihiro Shimoda 	unsigned int	fcntcr2;
126*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved2[2];
127*8e9c897bSYoshihiro Shimoda 	unsigned int	gpll1div;
128*8e9c897bSYoshihiro Shimoda 	unsigned int	vcompsel;
129*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved3[62];
130*8e9c897bSYoshihiro Shimoda 	unsigned int	fdlmon;
131*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved4[2];
132*8e9c897bSYoshihiro Shimoda 	unsigned int	flcrmon;
133*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved5[944];
134*8e9c897bSYoshihiro Shimoda 	unsigned int	spibootcan;
135*8e9c897bSYoshihiro Shimoda };
136*8e9c897bSYoshihiro Shimoda #define GCTRL_BASE		((struct gctrl_regs *)0xffc10000)
137*8e9c897bSYoshihiro Shimoda 
138*8e9c897bSYoshihiro Shimoda /* PCIe setup */
139*8e9c897bSYoshihiro Shimoda struct pcie_setup_regs {
140*8e9c897bSYoshihiro Shimoda 	unsigned int	pbictl0;
141*8e9c897bSYoshihiro Shimoda 	unsigned int	gradevctl;
142*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved[2];
143*8e9c897bSYoshihiro Shimoda 	unsigned int	bmcinf[6];
144*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved2[118];
145*8e9c897bSYoshihiro Shimoda 	unsigned int	idset[2];
146*8e9c897bSYoshihiro Shimoda 	unsigned int	subidset;
147*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved3[2];
148*8e9c897bSYoshihiro Shimoda 	unsigned int	linkconfset[4];
149*8e9c897bSYoshihiro Shimoda 	unsigned int	trsid;
150*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved4[6];
151*8e9c897bSYoshihiro Shimoda 	unsigned int	toutset;
152*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved5[7];
153*8e9c897bSYoshihiro Shimoda 	unsigned int	lad0;
154*8e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk0;
155*8e9c897bSYoshihiro Shimoda 	unsigned int	lad1;
156*8e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk1;
157*8e9c897bSYoshihiro Shimoda 	unsigned int	lad2;
158*8e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk2;
159*8e9c897bSYoshihiro Shimoda 	unsigned int	lad3;
160*8e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk3;
161*8e9c897bSYoshihiro Shimoda 	unsigned int	lad4;
162*8e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk4;
163*8e9c897bSYoshihiro Shimoda 	unsigned int	lad5;
164*8e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk5;
165*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved6[94];
166*8e9c897bSYoshihiro Shimoda 	unsigned int	vdmrxvid[2];
167*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved7;
168*8e9c897bSYoshihiro Shimoda 	unsigned int	pbiintfr;
169*8e9c897bSYoshihiro Shimoda 	unsigned int	pbiinten;
170*8e9c897bSYoshihiro Shimoda 	unsigned int	msimap;
171*8e9c897bSYoshihiro Shimoda 	unsigned int	barmap;
172*8e9c897bSYoshihiro Shimoda 	unsigned int	baracsize;
173*8e9c897bSYoshihiro Shimoda 	unsigned int	advserest;
174*8e9c897bSYoshihiro Shimoda 	unsigned int	pbictl3;
175*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved8[8];
176*8e9c897bSYoshihiro Shimoda 	unsigned int	pbictl1;
177*8e9c897bSYoshihiro Shimoda 	unsigned int	scratch0;
178*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved9[6];
179*8e9c897bSYoshihiro Shimoda 	unsigned int	pbictl2;
180*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved10;
181*8e9c897bSYoshihiro Shimoda 	unsigned int	pbirev;
182*8e9c897bSYoshihiro Shimoda };
183*8e9c897bSYoshihiro Shimoda #define PCIE_SETUP_BASE		((struct pcie_setup_regs *)0xffca1000)
184*8e9c897bSYoshihiro Shimoda 
185*8e9c897bSYoshihiro Shimoda struct pcie_system_bus_regs {
186*8e9c897bSYoshihiro Shimoda 	unsigned int	reserved[3];
187*8e9c897bSYoshihiro Shimoda 	unsigned int	endictl0;
188*8e9c897bSYoshihiro Shimoda 	unsigned int	endictl1;
189*8e9c897bSYoshihiro Shimoda };
190*8e9c897bSYoshihiro Shimoda #define PCIE_SYSTEM_BUS_BASE	((struct pcie_system_bus_regs *)0xffca1600)
191*8e9c897bSYoshihiro Shimoda 
192*8e9c897bSYoshihiro Shimoda 
193*8e9c897bSYoshihiro Shimoda /* PCIe-Bridge */
194*8e9c897bSYoshihiro Shimoda struct pciebrg_regs {
195*8e9c897bSYoshihiro Shimoda 	unsigned short	ctrl_h8s;
196*8e9c897bSYoshihiro Shimoda 	unsigned short	reserved[7];
197*8e9c897bSYoshihiro Shimoda 	unsigned short	cp_addr;
198*8e9c897bSYoshihiro Shimoda 	unsigned short	reserved2;
199*8e9c897bSYoshihiro Shimoda 	unsigned short	cp_data;
200*8e9c897bSYoshihiro Shimoda 	unsigned short	reserved3;
201*8e9c897bSYoshihiro Shimoda 	unsigned short	cp_ctrl;
202*8e9c897bSYoshihiro Shimoda };
203*8e9c897bSYoshihiro Shimoda #define PCIEBRG_BASE		((struct pciebrg_regs *)0xffd60000)
204*8e9c897bSYoshihiro Shimoda 
205*8e9c897bSYoshihiro Shimoda /* CPU version */
206*8e9c897bSYoshihiro Shimoda #define CCN_PRR			0xff000044
207*8e9c897bSYoshihiro Shimoda #define prr_mask(_val)		((_val >> 4) & 0xff)
208*8e9c897bSYoshihiro Shimoda #define PRR_SH7757_B0		0x10
209*8e9c897bSYoshihiro Shimoda #define PRR_SH7757_C0		0x11
210*8e9c897bSYoshihiro Shimoda 
211*8e9c897bSYoshihiro Shimoda #define is_sh7757_b0(_val)						\
212*8e9c897bSYoshihiro Shimoda ({									\
213*8e9c897bSYoshihiro Shimoda 	int __ret = prr_mask(__raw_readl(CCN_PRR)) == PRR_SH7757_B0;	\
214*8e9c897bSYoshihiro Shimoda 	__ret;								\
215*8e9c897bSYoshihiro Shimoda })
216*8e9c897bSYoshihiro Shimoda #endif	/* ifndef __ASSEMBLY__ */
217*8e9c897bSYoshihiro Shimoda 
218*8e9c897bSYoshihiro Shimoda #endif	/* _ASM_CPU_SH7757_H_ */
219