cpu_sh7757.h 4.6 KB

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