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