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