xref: /rk3399_rockchip-uboot/arch/sh/include/asm/cpu_sh7757.h (revision 326ea986ac150acdc7656d57fca647db80b50158)
18e9c897bSYoshihiro Shimoda /*
28e9c897bSYoshihiro Shimoda  * Copyright (C) 2011  Renesas Solutions Corp.
38e9c897bSYoshihiro Shimoda  *
4*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
58e9c897bSYoshihiro Shimoda  */
68e9c897bSYoshihiro Shimoda 
78e9c897bSYoshihiro Shimoda #ifndef _ASM_CPU_SH7757_H_
88e9c897bSYoshihiro Shimoda #define _ASM_CPU_SH7757_H_
98e9c897bSYoshihiro Shimoda 
108e9c897bSYoshihiro Shimoda #define CCR		0xFF00001C
118e9c897bSYoshihiro Shimoda #define WTCNT		0xFFCC0000
128e9c897bSYoshihiro Shimoda #define CCR_CACHE_INIT	0x0000090b
138e9c897bSYoshihiro Shimoda #define CACHE_OC_NUM_WAYS	1
148e9c897bSYoshihiro Shimoda 
158e9c897bSYoshihiro Shimoda #ifndef __ASSEMBLY__		/* put C only stuff in this section */
168e9c897bSYoshihiro Shimoda /* MMU */
178e9c897bSYoshihiro Shimoda struct mmu_regs {
188e9c897bSYoshihiro Shimoda 	unsigned int	reserved[4];
198e9c897bSYoshihiro Shimoda 	unsigned int	mmucr;
208e9c897bSYoshihiro Shimoda };
218e9c897bSYoshihiro Shimoda #define MMU_BASE	((struct mmu_regs *)0xff000000)
228e9c897bSYoshihiro Shimoda 
238e9c897bSYoshihiro Shimoda /* Watchdog */
248e9c897bSYoshihiro Shimoda #define WTCSR0		0xffcc0002
258e9c897bSYoshihiro Shimoda #define WRSTCSR_R	0xffcc0003
268e9c897bSYoshihiro Shimoda #define WRSTCSR_W	0xffcc0002
278e9c897bSYoshihiro Shimoda #define WTCSR_PREFIX		0xa500
288e9c897bSYoshihiro Shimoda #define WRSTCSR_PREFIX		0x6900
298e9c897bSYoshihiro Shimoda #define WRSTCSR_WOVF_PREFIX	0x9600
308e9c897bSYoshihiro Shimoda 
318e9c897bSYoshihiro Shimoda /* SCIF */
328e9c897bSYoshihiro Shimoda #define SCIF0_BASE	0xfe4b0000	/* The real name is SCIF2 */
338e9c897bSYoshihiro Shimoda #define SCIF1_BASE	0xfe4c0000	/* The real name is SCIF3 */
348e9c897bSYoshihiro Shimoda #define SCIF2_BASE	0xfe4d0000	/* The real name is SCIF4 */
358e9c897bSYoshihiro Shimoda 
368e9c897bSYoshihiro Shimoda /* SerMux */
378e9c897bSYoshihiro Shimoda #define SMR0		0xfe470000
388e9c897bSYoshihiro Shimoda 
398e9c897bSYoshihiro Shimoda /* TMU0 */
4073f35e0bSNobuhiro Iwamatsu #define TMU_BASE    0xFE430000
418e9c897bSYoshihiro Shimoda 
428e9c897bSYoshihiro Shimoda /* ETHER, GETHER MAC address */
438e9c897bSYoshihiro Shimoda struct ether_mac_regs {
448e9c897bSYoshihiro Shimoda 	unsigned int	reserved[114];
458e9c897bSYoshihiro Shimoda 	unsigned int	mahr;
468e9c897bSYoshihiro Shimoda 	unsigned int	reserved2;
478e9c897bSYoshihiro Shimoda 	unsigned int	malr;
488e9c897bSYoshihiro Shimoda };
498e9c897bSYoshihiro Shimoda #define GETHER0_MAC_BASE	((struct ether_mac_regs *)0xfee0400)
508e9c897bSYoshihiro Shimoda #define GETHER1_MAC_BASE	((struct ether_mac_regs *)0xfee0c00)
518e9c897bSYoshihiro Shimoda #define ETHER0_MAC_BASE		((struct ether_mac_regs *)0xfef0000)
528e9c897bSYoshihiro Shimoda #define ETHER1_MAC_BASE		((struct ether_mac_regs *)0xfef0800)
538e9c897bSYoshihiro Shimoda 
548e9c897bSYoshihiro Shimoda /* GETHER */
558e9c897bSYoshihiro Shimoda struct gether_control_regs {
568e9c897bSYoshihiro Shimoda 	unsigned int	gbecont;
578e9c897bSYoshihiro Shimoda };
588e9c897bSYoshihiro Shimoda #define GETHER_CONTROL_BASE	((struct gether_control_regs *)0xffc10100)
598e9c897bSYoshihiro Shimoda #define GBECONT_RMII1		0x00020000
608e9c897bSYoshihiro Shimoda #define GBECONT_RMII0		0x00010000
618e9c897bSYoshihiro Shimoda 
628e9c897bSYoshihiro Shimoda /* USB0/1 */
638e9c897bSYoshihiro Shimoda struct usb_common_regs {
648e9c897bSYoshihiro Shimoda 	unsigned short	reserved[129];
658e9c897bSYoshihiro Shimoda 	unsigned short	suspmode;
668e9c897bSYoshihiro Shimoda };
678e9c897bSYoshihiro Shimoda #define USB0_COMMON_BASE	((struct usb_common_regs *)0xfe450000)
688e9c897bSYoshihiro Shimoda #define USB1_COMMON_BASE	((struct usb_common_regs *)0xfe4f0000)
698e9c897bSYoshihiro Shimoda 
708e9c897bSYoshihiro Shimoda struct usb0_phy_regs {
718e9c897bSYoshihiro Shimoda 	unsigned short	reset;
728e9c897bSYoshihiro Shimoda 	unsigned short	reserved[4];
738e9c897bSYoshihiro Shimoda 	unsigned short	portsel;
748e9c897bSYoshihiro Shimoda };
758e9c897bSYoshihiro Shimoda #define USB0_PHY_BASE		((struct usb0_phy_regs *)0xfe5f0000)
768e9c897bSYoshihiro Shimoda 
778e9c897bSYoshihiro Shimoda struct usb1_port_regs {
788e9c897bSYoshihiro Shimoda 	unsigned int	port1sel;
798e9c897bSYoshihiro Shimoda 	unsigned int	reserved;
808e9c897bSYoshihiro Shimoda 	unsigned int	usb1intsts;
818e9c897bSYoshihiro Shimoda };
828e9c897bSYoshihiro Shimoda #define USB1_PORT_BASE		((struct usb1_port_regs *)0xfe4f2000)
838e9c897bSYoshihiro Shimoda 
848e9c897bSYoshihiro Shimoda struct usb1_alignment_regs {
858e9c897bSYoshihiro Shimoda 	unsigned int	ehcidatac;	/* 0xfe4fe018 */
868e9c897bSYoshihiro Shimoda 	unsigned int	reserved[63];
878e9c897bSYoshihiro Shimoda 	unsigned int	ohcidatac;
888e9c897bSYoshihiro Shimoda };
898e9c897bSYoshihiro Shimoda #define USB1_ALIGNMENT_BASE	((struct usb1_alignment_regs *)0xfe4fe018)
908e9c897bSYoshihiro Shimoda 
918e9c897bSYoshihiro Shimoda /* GCTRL, GRA */
928e9c897bSYoshihiro Shimoda struct gctrl_regs {
938e9c897bSYoshihiro Shimoda 	unsigned int	wprotect;
948e9c897bSYoshihiro Shimoda 	unsigned int	gplldiv;
958e9c897bSYoshihiro Shimoda 	unsigned int	gracr2;		/* GRA */
968e9c897bSYoshihiro Shimoda 	unsigned int	gracr3;		/* GRA */
978e9c897bSYoshihiro Shimoda 	unsigned int	reserved[4];
988e9c897bSYoshihiro Shimoda 	unsigned int	fcntcr1;
998e9c897bSYoshihiro Shimoda 	unsigned int	fcntcr2;
1008e9c897bSYoshihiro Shimoda 	unsigned int	reserved2[2];
1018e9c897bSYoshihiro Shimoda 	unsigned int	gpll1div;
1028e9c897bSYoshihiro Shimoda 	unsigned int	vcompsel;
1038e9c897bSYoshihiro Shimoda 	unsigned int	reserved3[62];
1048e9c897bSYoshihiro Shimoda 	unsigned int	fdlmon;
1058e9c897bSYoshihiro Shimoda 	unsigned int	reserved4[2];
1068e9c897bSYoshihiro Shimoda 	unsigned int	flcrmon;
1078e9c897bSYoshihiro Shimoda 	unsigned int	reserved5[944];
1088e9c897bSYoshihiro Shimoda 	unsigned int	spibootcan;
1098e9c897bSYoshihiro Shimoda };
1108e9c897bSYoshihiro Shimoda #define GCTRL_BASE		((struct gctrl_regs *)0xffc10000)
1118e9c897bSYoshihiro Shimoda 
1128e9c897bSYoshihiro Shimoda /* PCIe setup */
1138e9c897bSYoshihiro Shimoda struct pcie_setup_regs {
1148e9c897bSYoshihiro Shimoda 	unsigned int	pbictl0;
1158e9c897bSYoshihiro Shimoda 	unsigned int	gradevctl;
1168e9c897bSYoshihiro Shimoda 	unsigned int	reserved[2];
1178e9c897bSYoshihiro Shimoda 	unsigned int	bmcinf[6];
1188e9c897bSYoshihiro Shimoda 	unsigned int	reserved2[118];
1198e9c897bSYoshihiro Shimoda 	unsigned int	idset[2];
1208e9c897bSYoshihiro Shimoda 	unsigned int	subidset;
1218e9c897bSYoshihiro Shimoda 	unsigned int	reserved3[2];
1228e9c897bSYoshihiro Shimoda 	unsigned int	linkconfset[4];
1238e9c897bSYoshihiro Shimoda 	unsigned int	trsid;
1248e9c897bSYoshihiro Shimoda 	unsigned int	reserved4[6];
1258e9c897bSYoshihiro Shimoda 	unsigned int	toutset;
1268e9c897bSYoshihiro Shimoda 	unsigned int	reserved5[7];
1278e9c897bSYoshihiro Shimoda 	unsigned int	lad0;
1288e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk0;
1298e9c897bSYoshihiro Shimoda 	unsigned int	lad1;
1308e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk1;
1318e9c897bSYoshihiro Shimoda 	unsigned int	lad2;
1328e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk2;
1338e9c897bSYoshihiro Shimoda 	unsigned int	lad3;
1348e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk3;
1358e9c897bSYoshihiro Shimoda 	unsigned int	lad4;
1368e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk4;
1378e9c897bSYoshihiro Shimoda 	unsigned int	lad5;
1388e9c897bSYoshihiro Shimoda 	unsigned int	ladmsk5;
1398e9c897bSYoshihiro Shimoda 	unsigned int	reserved6[94];
1408e9c897bSYoshihiro Shimoda 	unsigned int	vdmrxvid[2];
1418e9c897bSYoshihiro Shimoda 	unsigned int	reserved7;
1428e9c897bSYoshihiro Shimoda 	unsigned int	pbiintfr;
1438e9c897bSYoshihiro Shimoda 	unsigned int	pbiinten;
1448e9c897bSYoshihiro Shimoda 	unsigned int	msimap;
1458e9c897bSYoshihiro Shimoda 	unsigned int	barmap;
1468e9c897bSYoshihiro Shimoda 	unsigned int	baracsize;
1478e9c897bSYoshihiro Shimoda 	unsigned int	advserest;
1488e9c897bSYoshihiro Shimoda 	unsigned int	pbictl3;
1498e9c897bSYoshihiro Shimoda 	unsigned int	reserved8[8];
1508e9c897bSYoshihiro Shimoda 	unsigned int	pbictl1;
1518e9c897bSYoshihiro Shimoda 	unsigned int	scratch0;
1528e9c897bSYoshihiro Shimoda 	unsigned int	reserved9[6];
1538e9c897bSYoshihiro Shimoda 	unsigned int	pbictl2;
1548e9c897bSYoshihiro Shimoda 	unsigned int	reserved10;
1558e9c897bSYoshihiro Shimoda 	unsigned int	pbirev;
1568e9c897bSYoshihiro Shimoda };
1578e9c897bSYoshihiro Shimoda #define PCIE_SETUP_BASE		((struct pcie_setup_regs *)0xffca1000)
1588e9c897bSYoshihiro Shimoda 
1598e9c897bSYoshihiro Shimoda struct pcie_system_bus_regs {
1608e9c897bSYoshihiro Shimoda 	unsigned int	reserved[3];
1618e9c897bSYoshihiro Shimoda 	unsigned int	endictl0;
1628e9c897bSYoshihiro Shimoda 	unsigned int	endictl1;
1638e9c897bSYoshihiro Shimoda };
1648e9c897bSYoshihiro Shimoda #define PCIE_SYSTEM_BUS_BASE	((struct pcie_system_bus_regs *)0xffca1600)
1658e9c897bSYoshihiro Shimoda 
1668e9c897bSYoshihiro Shimoda 
1678e9c897bSYoshihiro Shimoda /* PCIe-Bridge */
1688e9c897bSYoshihiro Shimoda struct pciebrg_regs {
1698e9c897bSYoshihiro Shimoda 	unsigned short	ctrl_h8s;
1708e9c897bSYoshihiro Shimoda 	unsigned short	reserved[7];
1718e9c897bSYoshihiro Shimoda 	unsigned short	cp_addr;
1728e9c897bSYoshihiro Shimoda 	unsigned short	reserved2;
1738e9c897bSYoshihiro Shimoda 	unsigned short	cp_data;
1748e9c897bSYoshihiro Shimoda 	unsigned short	reserved3;
1758e9c897bSYoshihiro Shimoda 	unsigned short	cp_ctrl;
1768e9c897bSYoshihiro Shimoda };
1778e9c897bSYoshihiro Shimoda #define PCIEBRG_BASE		((struct pciebrg_regs *)0xffd60000)
1788e9c897bSYoshihiro Shimoda 
1798e9c897bSYoshihiro Shimoda /* CPU version */
1808e9c897bSYoshihiro Shimoda #define CCN_PRR			0xff000044
1818e9c897bSYoshihiro Shimoda #define prr_mask(_val)		((_val >> 4) & 0xff)
1828e9c897bSYoshihiro Shimoda #define PRR_SH7757_B0		0x10
1838e9c897bSYoshihiro Shimoda #define PRR_SH7757_C0		0x11
1848e9c897bSYoshihiro Shimoda 
1858e9c897bSYoshihiro Shimoda #define is_sh7757_b0(_val)						\
1868e9c897bSYoshihiro Shimoda ({									\
1878e9c897bSYoshihiro Shimoda 	int __ret = prr_mask(__raw_readl(CCN_PRR)) == PRR_SH7757_B0;	\
1888e9c897bSYoshihiro Shimoda 	__ret;								\
1898e9c897bSYoshihiro Shimoda })
1908e9c897bSYoshihiro Shimoda #endif	/* ifndef __ASSEMBLY__ */
1918e9c897bSYoshihiro Shimoda 
1928e9c897bSYoshihiro Shimoda #endif	/* _ASM_CPU_SH7757_H_ */
193