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