system_manager.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. /*
  2. * Copyright (C) 2013 Altera Corporation <www.altera.com>
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #ifndef _SYSTEM_MANAGER_H_
  7. #define _SYSTEM_MANAGER_H_
  8. #ifndef __ASSEMBLY__
  9. void sysmgr_pinmux_init(void);
  10. void sysmgr_config_warmrstcfgio(int enable);
  11. void sysmgr_get_pinmux_table(const u8 **table, unsigned int *table_len);
  12. #endif
  13. struct socfpga_system_manager {
  14. /* System Manager Module */
  15. u32 siliconid1; /* 0x00 */
  16. u32 siliconid2;
  17. u32 _pad_0x8_0xf[2];
  18. u32 wddbg; /* 0x10 */
  19. u32 bootinfo;
  20. u32 hpsinfo;
  21. u32 parityinj;
  22. /* FPGA Interface Group */
  23. u32 fpgaintfgrp_gbl; /* 0x20 */
  24. u32 fpgaintfgrp_indiv;
  25. u32 fpgaintfgrp_module;
  26. u32 _pad_0x2c_0x2f;
  27. /* Scan Manager Group */
  28. u32 scanmgrgrp_ctrl; /* 0x30 */
  29. u32 _pad_0x34_0x3f[3];
  30. /* Freeze Control Group */
  31. u32 frzctrl_vioctrl; /* 0x40 */
  32. u32 _pad_0x44_0x4f[3];
  33. u32 frzctrl_hioctrl; /* 0x50 */
  34. u32 frzctrl_src;
  35. u32 frzctrl_hwctrl;
  36. u32 _pad_0x5c_0x5f;
  37. /* EMAC Group */
  38. u32 emacgrp_ctrl; /* 0x60 */
  39. u32 emacgrp_l3master;
  40. u32 _pad_0x68_0x6f[2];
  41. /* DMA Controller Group */
  42. u32 dmagrp_ctrl; /* 0x70 */
  43. u32 dmagrp_persecurity;
  44. u32 _pad_0x78_0x7f[2];
  45. /* Preloader (initial software) Group */
  46. u32 iswgrp_handoff[8]; /* 0x80 */
  47. u32 _pad_0xa0_0xbf[8]; /* 0xa0 */
  48. /* Boot ROM Code Register Group */
  49. u32 romcodegrp_ctrl; /* 0xc0 */
  50. u32 romcodegrp_cpu1startaddr;
  51. u32 romcodegrp_initswstate;
  52. u32 romcodegrp_initswlastld;
  53. u32 romcodegrp_bootromswstate; /* 0xd0 */
  54. u32 __pad_0xd4_0xdf[3];
  55. /* Warm Boot from On-Chip RAM Group */
  56. u32 romcodegrp_warmramgrp_enable; /* 0xe0 */
  57. u32 romcodegrp_warmramgrp_datastart;
  58. u32 romcodegrp_warmramgrp_length;
  59. u32 romcodegrp_warmramgrp_execution;
  60. u32 romcodegrp_warmramgrp_crc; /* 0xf0 */
  61. u32 __pad_0xf4_0xff[3];
  62. /* Boot ROM Hardware Register Group */
  63. u32 romhwgrp_ctrl; /* 0x100 */
  64. u32 _pad_0x104_0x107;
  65. /* SDMMC Controller Group */
  66. u32 sdmmcgrp_ctrl;
  67. u32 sdmmcgrp_l3master;
  68. /* NAND Flash Controller Register Group */
  69. u32 nandgrp_bootstrap; /* 0x110 */
  70. u32 nandgrp_l3master;
  71. /* USB Controller Group */
  72. u32 usbgrp_l3master;
  73. u32 _pad_0x11c_0x13f[9];
  74. /* ECC Management Register Group */
  75. u32 eccgrp_l2; /* 0x140 */
  76. u32 eccgrp_ocram;
  77. u32 eccgrp_usb0;
  78. u32 eccgrp_usb1;
  79. u32 eccgrp_emac0; /* 0x150 */
  80. u32 eccgrp_emac1;
  81. u32 eccgrp_dma;
  82. u32 eccgrp_can0;
  83. u32 eccgrp_can1; /* 0x160 */
  84. u32 eccgrp_nand;
  85. u32 eccgrp_qspi;
  86. u32 eccgrp_sdmmc;
  87. u32 _pad_0x170_0x3ff[164];
  88. /* Pin Mux Control Group */
  89. u32 emacio[20]; /* 0x400 */
  90. u32 flashio[12]; /* 0x450 */
  91. u32 generalio[28]; /* 0x480 */
  92. u32 _pad_0x4f0_0x4ff[4];
  93. u32 mixed1io[22]; /* 0x500 */
  94. u32 mixed2io[8]; /* 0x558 */
  95. u32 gplinmux[23]; /* 0x578 */
  96. u32 gplmux[71]; /* 0x5d4 */
  97. u32 nandusefpga; /* 0x6f0 */
  98. u32 _pad_0x6f4;
  99. u32 rgmii1usefpga; /* 0x6f8 */
  100. u32 _pad_0x6fc_0x700[2];
  101. u32 i2c0usefpga; /* 0x704 */
  102. u32 sdmmcusefpga; /* 0x708 */
  103. u32 _pad_0x70c_0x710[2];
  104. u32 rgmii0usefpga; /* 0x714 */
  105. u32 _pad_0x718_0x720[3];
  106. u32 i2c3usefpga; /* 0x724 */
  107. u32 i2c2usefpga; /* 0x728 */
  108. u32 i2c1usefpga; /* 0x72c */
  109. u32 spim1usefpga; /* 0x730 */
  110. u32 _pad_0x734;
  111. u32 spim0usefpga; /* 0x738 */
  112. };
  113. #define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGPINMUX (1 << 0)
  114. #define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO (1 << 1)
  115. #define SYSMGR_ECC_OCRAM_EN (1 << 0)
  116. #define SYSMGR_ECC_OCRAM_SERR (1 << 3)
  117. #define SYSMGR_ECC_OCRAM_DERR (1 << 4)
  118. #define SYSMGR_FPGAINTF_USEFPGA 0x1
  119. #define SYSMGR_FPGAINTF_SPIM0 (1 << 0)
  120. #define SYSMGR_FPGAINTF_SPIM1 (1 << 1)
  121. #define SYSMGR_FPGAINTF_EMAC0 (1 << 2)
  122. #define SYSMGR_FPGAINTF_EMAC1 (1 << 3)
  123. #define SYSMGR_FPGAINTF_NAND (1 << 4)
  124. #define SYSMGR_FPGAINTF_SDMMC (1 << 5)
  125. /* FIXME: This is questionable macro. */
  126. #define SYSMGR_SDMMC_CTRL_SET(smplsel, drvsel) \
  127. ((((drvsel) << 0) & 0x7) | (((smplsel) << 3) & 0x38))
  128. /* EMAC Group Bit definitions */
  129. #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII 0x0
  130. #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII 0x1
  131. #define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII 0x2
  132. #define SYSMGR_EMACGRP_CTRL_PHYSEL0_LSB 0
  133. #define SYSMGR_EMACGRP_CTRL_PHYSEL1_LSB 2
  134. #define SYSMGR_EMACGRP_CTRL_PHYSEL_MASK 0x3
  135. #endif /* _SYSTEM_MANAGER_H_ */