cpu_sh7757.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. /*
  2. * Copyright (C) 2011 Renesas Solutions Corp.
  3. *
  4. * This program is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU General Public License as
  6. * published by the Free Software Foundation; either version 2 of
  7. * the License, or (at your option) any later version.
  8. *
  9. * This program is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with this program; if not, write to the Free Software
  16. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  17. * MA 02111-1307 USA
  18. *
  19. */
  20. #ifndef _ASM_CPU_SH7757_H_
  21. #define _ASM_CPU_SH7757_H_
  22. #define CCR 0xFF00001C
  23. #define WTCNT 0xFFCC0000
  24. #define CCR_CACHE_INIT 0x0000090b
  25. #define CACHE_OC_NUM_WAYS 1
  26. #ifndef __ASSEMBLY__ /* put C only stuff in this section */
  27. /* MMU */
  28. struct mmu_regs {
  29. unsigned int reserved[4];
  30. unsigned int mmucr;
  31. };
  32. #define MMU_BASE ((struct mmu_regs *)0xff000000)
  33. /* Watchdog */
  34. #define WTCSR0 0xffcc0002
  35. #define WRSTCSR_R 0xffcc0003
  36. #define WRSTCSR_W 0xffcc0002
  37. #define WTCSR_PREFIX 0xa500
  38. #define WRSTCSR_PREFIX 0x6900
  39. #define WRSTCSR_WOVF_PREFIX 0x9600
  40. /* SCIF */
  41. #define SCIF0_BASE 0xfe4b0000 /* The real name is SCIF2 */
  42. #define SCIF1_BASE 0xfe4c0000 /* The real name is SCIF3 */
  43. #define SCIF2_BASE 0xfe4d0000 /* The real name is SCIF4 */
  44. /* SerMux */
  45. #define SMR0 0xfe470000
  46. /* TMU0 */
  47. #define TSTR 0xFE430004
  48. #define TOCR 0xFE430000
  49. #define TSTR0 0xFE430004
  50. #define TCOR0 0xFE430008
  51. #define TCNT0 0xFE43000C
  52. #define TCR0 0xFE430010
  53. #define TCOR1 0xFE430014
  54. #define TCNT1 0xFE430018
  55. #define TCR1 0xFE43001C
  56. #define TCOR2 0xFE430020
  57. #define TCNT2 0xFE430024
  58. #define TCR2 0xFE430028
  59. #define TCPR2 0xFE43002C
  60. /* ETHER, GETHER MAC address */
  61. struct ether_mac_regs {
  62. unsigned int reserved[114];
  63. unsigned int mahr;
  64. unsigned int reserved2;
  65. unsigned int malr;
  66. };
  67. #define GETHER0_MAC_BASE ((struct ether_mac_regs *)0xfee0400)
  68. #define GETHER1_MAC_BASE ((struct ether_mac_regs *)0xfee0c00)
  69. #define ETHER0_MAC_BASE ((struct ether_mac_regs *)0xfef0000)
  70. #define ETHER1_MAC_BASE ((struct ether_mac_regs *)0xfef0800)
  71. /* GETHER */
  72. struct gether_control_regs {
  73. unsigned int gbecont;
  74. };
  75. #define GETHER_CONTROL_BASE ((struct gether_control_regs *)0xffc10100)
  76. #define GBECONT_RMII1 0x00020000
  77. #define GBECONT_RMII0 0x00010000
  78. /* USB0/1 */
  79. struct usb_common_regs {
  80. unsigned short reserved[129];
  81. unsigned short suspmode;
  82. };
  83. #define USB0_COMMON_BASE ((struct usb_common_regs *)0xfe450000)
  84. #define USB1_COMMON_BASE ((struct usb_common_regs *)0xfe4f0000)
  85. struct usb0_phy_regs {
  86. unsigned short reset;
  87. unsigned short reserved[4];
  88. unsigned short portsel;
  89. };
  90. #define USB0_PHY_BASE ((struct usb0_phy_regs *)0xfe5f0000)
  91. struct usb1_port_regs {
  92. unsigned int port1sel;
  93. unsigned int reserved;
  94. unsigned int usb1intsts;
  95. };
  96. #define USB1_PORT_BASE ((struct usb1_port_regs *)0xfe4f2000)
  97. struct usb1_alignment_regs {
  98. unsigned int ehcidatac; /* 0xfe4fe018 */
  99. unsigned int reserved[63];
  100. unsigned int ohcidatac;
  101. };
  102. #define USB1_ALIGNMENT_BASE ((struct usb1_alignment_regs *)0xfe4fe018)
  103. /* GCTRL, GRA */
  104. struct gctrl_regs {
  105. unsigned int wprotect;
  106. unsigned int gplldiv;
  107. unsigned int gracr2; /* GRA */
  108. unsigned int gracr3; /* GRA */
  109. unsigned int reserved[4];
  110. unsigned int fcntcr1;
  111. unsigned int fcntcr2;
  112. unsigned int reserved2[2];
  113. unsigned int gpll1div;
  114. unsigned int vcompsel;
  115. unsigned int reserved3[62];
  116. unsigned int fdlmon;
  117. unsigned int reserved4[2];
  118. unsigned int flcrmon;
  119. unsigned int reserved5[944];
  120. unsigned int spibootcan;
  121. };
  122. #define GCTRL_BASE ((struct gctrl_regs *)0xffc10000)
  123. /* PCIe setup */
  124. struct pcie_setup_regs {
  125. unsigned int pbictl0;
  126. unsigned int gradevctl;
  127. unsigned int reserved[2];
  128. unsigned int bmcinf[6];
  129. unsigned int reserved2[118];
  130. unsigned int idset[2];
  131. unsigned int subidset;
  132. unsigned int reserved3[2];
  133. unsigned int linkconfset[4];
  134. unsigned int trsid;
  135. unsigned int reserved4[6];
  136. unsigned int toutset;
  137. unsigned int reserved5[7];
  138. unsigned int lad0;
  139. unsigned int ladmsk0;
  140. unsigned int lad1;
  141. unsigned int ladmsk1;
  142. unsigned int lad2;
  143. unsigned int ladmsk2;
  144. unsigned int lad3;
  145. unsigned int ladmsk3;
  146. unsigned int lad4;
  147. unsigned int ladmsk4;
  148. unsigned int lad5;
  149. unsigned int ladmsk5;
  150. unsigned int reserved6[94];
  151. unsigned int vdmrxvid[2];
  152. unsigned int reserved7;
  153. unsigned int pbiintfr;
  154. unsigned int pbiinten;
  155. unsigned int msimap;
  156. unsigned int barmap;
  157. unsigned int baracsize;
  158. unsigned int advserest;
  159. unsigned int pbictl3;
  160. unsigned int reserved8[8];
  161. unsigned int pbictl1;
  162. unsigned int scratch0;
  163. unsigned int reserved9[6];
  164. unsigned int pbictl2;
  165. unsigned int reserved10;
  166. unsigned int pbirev;
  167. };
  168. #define PCIE_SETUP_BASE ((struct pcie_setup_regs *)0xffca1000)
  169. struct pcie_system_bus_regs {
  170. unsigned int reserved[3];
  171. unsigned int endictl0;
  172. unsigned int endictl1;
  173. };
  174. #define PCIE_SYSTEM_BUS_BASE ((struct pcie_system_bus_regs *)0xffca1600)
  175. /* PCIe-Bridge */
  176. struct pciebrg_regs {
  177. unsigned short ctrl_h8s;
  178. unsigned short reserved[7];
  179. unsigned short cp_addr;
  180. unsigned short reserved2;
  181. unsigned short cp_data;
  182. unsigned short reserved3;
  183. unsigned short cp_ctrl;
  184. };
  185. #define PCIEBRG_BASE ((struct pciebrg_regs *)0xffd60000)
  186. /* CPU version */
  187. #define CCN_PRR 0xff000044
  188. #define prr_mask(_val) ((_val >> 4) & 0xff)
  189. #define PRR_SH7757_B0 0x10
  190. #define PRR_SH7757_C0 0x11
  191. #define is_sh7757_b0(_val) \
  192. ({ \
  193. int __ret = prr_mask(__raw_readl(CCN_PRR)) == PRR_SH7757_B0; \
  194. __ret; \
  195. })
  196. #endif /* ifndef __ASSEMBLY__ */
  197. #endif /* _ASM_CPU_SH7757_H_ */