xref: /OK3568_Linux_fs/u-boot/arch/sh/include/asm/cpu_sh7757.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (C) 2011  Renesas Solutions Corp.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _ASM_CPU_SH7757_H_
8*4882a593Smuzhiyun #define _ASM_CPU_SH7757_H_
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #define CCR		0xFF00001C
11*4882a593Smuzhiyun #define WTCNT		0xFFCC0000
12*4882a593Smuzhiyun #define CCR_CACHE_INIT	0x0000090b
13*4882a593Smuzhiyun #define CACHE_OC_NUM_WAYS	1
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #ifndef __ASSEMBLY__		/* put C only stuff in this section */
16*4882a593Smuzhiyun /* MMU */
17*4882a593Smuzhiyun struct mmu_regs {
18*4882a593Smuzhiyun 	unsigned int	reserved[4];
19*4882a593Smuzhiyun 	unsigned int	mmucr;
20*4882a593Smuzhiyun };
21*4882a593Smuzhiyun #define MMU_BASE	((struct mmu_regs *)0xff000000)
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun /* Watchdog */
24*4882a593Smuzhiyun #define WTCSR0		0xffcc0002
25*4882a593Smuzhiyun #define WRSTCSR_R	0xffcc0003
26*4882a593Smuzhiyun #define WRSTCSR_W	0xffcc0002
27*4882a593Smuzhiyun #define WTCSR_PREFIX		0xa500
28*4882a593Smuzhiyun #define WRSTCSR_PREFIX		0x6900
29*4882a593Smuzhiyun #define WRSTCSR_WOVF_PREFIX	0x9600
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun /* SCIF */
32*4882a593Smuzhiyun #define SCIF0_BASE	0xfe4b0000	/* The real name is SCIF2 */
33*4882a593Smuzhiyun #define SCIF1_BASE	0xfe4c0000	/* The real name is SCIF3 */
34*4882a593Smuzhiyun #define SCIF2_BASE	0xfe4d0000	/* The real name is SCIF4 */
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun /* SerMux */
37*4882a593Smuzhiyun #define SMR0		0xfe470000
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun /* TMU0 */
40*4882a593Smuzhiyun #define TMU_BASE    0xFE430000
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /* ETHER, GETHER MAC address */
43*4882a593Smuzhiyun struct ether_mac_regs {
44*4882a593Smuzhiyun 	unsigned int	reserved[114];
45*4882a593Smuzhiyun 	unsigned int	mahr;
46*4882a593Smuzhiyun 	unsigned int	reserved2;
47*4882a593Smuzhiyun 	unsigned int	malr;
48*4882a593Smuzhiyun };
49*4882a593Smuzhiyun #define GETHER0_MAC_BASE	((struct ether_mac_regs *)0xfee0400)
50*4882a593Smuzhiyun #define GETHER1_MAC_BASE	((struct ether_mac_regs *)0xfee0c00)
51*4882a593Smuzhiyun #define ETHER0_MAC_BASE		((struct ether_mac_regs *)0xfef0000)
52*4882a593Smuzhiyun #define ETHER1_MAC_BASE		((struct ether_mac_regs *)0xfef0800)
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun /* GETHER */
55*4882a593Smuzhiyun struct gether_control_regs {
56*4882a593Smuzhiyun 	unsigned int	gbecont;
57*4882a593Smuzhiyun };
58*4882a593Smuzhiyun #define GETHER_CONTROL_BASE	((struct gether_control_regs *)0xffc10100)
59*4882a593Smuzhiyun #define GBECONT_RMII1		0x00020000
60*4882a593Smuzhiyun #define GBECONT_RMII0		0x00010000
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun /* USB0/1 */
63*4882a593Smuzhiyun struct usb_common_regs {
64*4882a593Smuzhiyun 	unsigned short	reserved[129];
65*4882a593Smuzhiyun 	unsigned short	suspmode;
66*4882a593Smuzhiyun };
67*4882a593Smuzhiyun #define USB0_COMMON_BASE	((struct usb_common_regs *)0xfe450000)
68*4882a593Smuzhiyun #define USB1_COMMON_BASE	((struct usb_common_regs *)0xfe4f0000)
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun struct usb0_phy_regs {
71*4882a593Smuzhiyun 	unsigned short	reset;
72*4882a593Smuzhiyun 	unsigned short	reserved[4];
73*4882a593Smuzhiyun 	unsigned short	portsel;
74*4882a593Smuzhiyun };
75*4882a593Smuzhiyun #define USB0_PHY_BASE		((struct usb0_phy_regs *)0xfe5f0000)
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun struct usb1_port_regs {
78*4882a593Smuzhiyun 	unsigned int	port1sel;
79*4882a593Smuzhiyun 	unsigned int	reserved;
80*4882a593Smuzhiyun 	unsigned int	usb1intsts;
81*4882a593Smuzhiyun };
82*4882a593Smuzhiyun #define USB1_PORT_BASE		((struct usb1_port_regs *)0xfe4f2000)
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun struct usb1_alignment_regs {
85*4882a593Smuzhiyun 	unsigned int	ehcidatac;	/* 0xfe4fe018 */
86*4882a593Smuzhiyun 	unsigned int	reserved[63];
87*4882a593Smuzhiyun 	unsigned int	ohcidatac;
88*4882a593Smuzhiyun };
89*4882a593Smuzhiyun #define USB1_ALIGNMENT_BASE	((struct usb1_alignment_regs *)0xfe4fe018)
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun /* GCTRL, GRA */
92*4882a593Smuzhiyun struct gctrl_regs {
93*4882a593Smuzhiyun 	unsigned int	wprotect;
94*4882a593Smuzhiyun 	unsigned int	gplldiv;
95*4882a593Smuzhiyun 	unsigned int	gracr2;		/* GRA */
96*4882a593Smuzhiyun 	unsigned int	gracr3;		/* GRA */
97*4882a593Smuzhiyun 	unsigned int	reserved[4];
98*4882a593Smuzhiyun 	unsigned int	fcntcr1;
99*4882a593Smuzhiyun 	unsigned int	fcntcr2;
100*4882a593Smuzhiyun 	unsigned int	reserved2[2];
101*4882a593Smuzhiyun 	unsigned int	gpll1div;
102*4882a593Smuzhiyun 	unsigned int	vcompsel;
103*4882a593Smuzhiyun 	unsigned int	reserved3[62];
104*4882a593Smuzhiyun 	unsigned int	fdlmon;
105*4882a593Smuzhiyun 	unsigned int	reserved4[2];
106*4882a593Smuzhiyun 	unsigned int	flcrmon;
107*4882a593Smuzhiyun 	unsigned int	reserved5[944];
108*4882a593Smuzhiyun 	unsigned int	spibootcan;
109*4882a593Smuzhiyun };
110*4882a593Smuzhiyun #define GCTRL_BASE		((struct gctrl_regs *)0xffc10000)
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun /* PCIe setup */
113*4882a593Smuzhiyun struct pcie_setup_regs {
114*4882a593Smuzhiyun 	unsigned int	pbictl0;
115*4882a593Smuzhiyun 	unsigned int	gradevctl;
116*4882a593Smuzhiyun 	unsigned int	reserved[2];
117*4882a593Smuzhiyun 	unsigned int	bmcinf[6];
118*4882a593Smuzhiyun 	unsigned int	reserved2[118];
119*4882a593Smuzhiyun 	unsigned int	idset[2];
120*4882a593Smuzhiyun 	unsigned int	subidset;
121*4882a593Smuzhiyun 	unsigned int	reserved3[2];
122*4882a593Smuzhiyun 	unsigned int	linkconfset[4];
123*4882a593Smuzhiyun 	unsigned int	trsid;
124*4882a593Smuzhiyun 	unsigned int	reserved4[6];
125*4882a593Smuzhiyun 	unsigned int	toutset;
126*4882a593Smuzhiyun 	unsigned int	reserved5[7];
127*4882a593Smuzhiyun 	unsigned int	lad0;
128*4882a593Smuzhiyun 	unsigned int	ladmsk0;
129*4882a593Smuzhiyun 	unsigned int	lad1;
130*4882a593Smuzhiyun 	unsigned int	ladmsk1;
131*4882a593Smuzhiyun 	unsigned int	lad2;
132*4882a593Smuzhiyun 	unsigned int	ladmsk2;
133*4882a593Smuzhiyun 	unsigned int	lad3;
134*4882a593Smuzhiyun 	unsigned int	ladmsk3;
135*4882a593Smuzhiyun 	unsigned int	lad4;
136*4882a593Smuzhiyun 	unsigned int	ladmsk4;
137*4882a593Smuzhiyun 	unsigned int	lad5;
138*4882a593Smuzhiyun 	unsigned int	ladmsk5;
139*4882a593Smuzhiyun 	unsigned int	reserved6[94];
140*4882a593Smuzhiyun 	unsigned int	vdmrxvid[2];
141*4882a593Smuzhiyun 	unsigned int	reserved7;
142*4882a593Smuzhiyun 	unsigned int	pbiintfr;
143*4882a593Smuzhiyun 	unsigned int	pbiinten;
144*4882a593Smuzhiyun 	unsigned int	msimap;
145*4882a593Smuzhiyun 	unsigned int	barmap;
146*4882a593Smuzhiyun 	unsigned int	baracsize;
147*4882a593Smuzhiyun 	unsigned int	advserest;
148*4882a593Smuzhiyun 	unsigned int	pbictl3;
149*4882a593Smuzhiyun 	unsigned int	reserved8[8];
150*4882a593Smuzhiyun 	unsigned int	pbictl1;
151*4882a593Smuzhiyun 	unsigned int	scratch0;
152*4882a593Smuzhiyun 	unsigned int	reserved9[6];
153*4882a593Smuzhiyun 	unsigned int	pbictl2;
154*4882a593Smuzhiyun 	unsigned int	reserved10;
155*4882a593Smuzhiyun 	unsigned int	pbirev;
156*4882a593Smuzhiyun };
157*4882a593Smuzhiyun #define PCIE_SETUP_BASE		((struct pcie_setup_regs *)0xffca1000)
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun struct pcie_system_bus_regs {
160*4882a593Smuzhiyun 	unsigned int	reserved[3];
161*4882a593Smuzhiyun 	unsigned int	endictl0;
162*4882a593Smuzhiyun 	unsigned int	endictl1;
163*4882a593Smuzhiyun };
164*4882a593Smuzhiyun #define PCIE_SYSTEM_BUS_BASE	((struct pcie_system_bus_regs *)0xffca1600)
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun /* PCIe-Bridge */
168*4882a593Smuzhiyun struct pciebrg_regs {
169*4882a593Smuzhiyun 	unsigned short	ctrl_h8s;
170*4882a593Smuzhiyun 	unsigned short	reserved[7];
171*4882a593Smuzhiyun 	unsigned short	cp_addr;
172*4882a593Smuzhiyun 	unsigned short	reserved2;
173*4882a593Smuzhiyun 	unsigned short	cp_data;
174*4882a593Smuzhiyun 	unsigned short	reserved3;
175*4882a593Smuzhiyun 	unsigned short	cp_ctrl;
176*4882a593Smuzhiyun };
177*4882a593Smuzhiyun #define PCIEBRG_BASE		((struct pciebrg_regs *)0xffd60000)
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun /* CPU version */
180*4882a593Smuzhiyun #define CCN_PRR			0xff000044
181*4882a593Smuzhiyun #define prr_mask(_val)		((_val >> 4) & 0xff)
182*4882a593Smuzhiyun #define PRR_SH7757_B0		0x10
183*4882a593Smuzhiyun #define PRR_SH7757_C0		0x11
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun #define is_sh7757_b0(_val)						\
186*4882a593Smuzhiyun ({									\
187*4882a593Smuzhiyun 	int __ret = prr_mask(__raw_readl(CCN_PRR)) == PRR_SH7757_B0;	\
188*4882a593Smuzhiyun 	__ret;								\
189*4882a593Smuzhiyun })
190*4882a593Smuzhiyun #endif	/* ifndef __ASSEMBLY__ */
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun #endif	/* _ASM_CPU_SH7757_H_ */
193