showinfo.c 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. /*
  2. * (C) Copyright 2007
  3. * Stefan Roese, DENX Software Engineering, sr@denx.de.
  4. *
  5. * See file CREDITS for list of people who contributed to this
  6. * project.
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License as
  10. * published by the Free Software Foundation; either version 2 of
  11. * the License, or (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21. * MA 02111-1307 USA
  22. */
  23. #include <config.h>
  24. #include <common.h>
  25. #include <command.h>
  26. #include <asm/processor.h>
  27. #include <pci.h>
  28. void show_reset_reg(void)
  29. {
  30. unsigned long reg;
  31. /* read clock regsiter */
  32. printf("===== Display reset and initialize register Start =========\n");
  33. mfcpr(clk_pllc,reg);
  34. printf("cpr_pllc = %#010lx\n",reg);
  35. mfcpr(clk_plld,reg);
  36. printf("cpr_plld = %#010lx\n",reg);
  37. mfcpr(clk_primad,reg);
  38. printf("cpr_primad = %#010lx\n",reg);
  39. mfcpr(clk_primbd,reg);
  40. printf("cpr_primbd = %#010lx\n",reg);
  41. mfcpr(clk_opbd,reg);
  42. printf("cpr_opbd = %#010lx\n",reg);
  43. mfcpr(clk_perd,reg);
  44. printf("cpr_perd = %#010lx\n",reg);
  45. mfcpr(clk_mald,reg);
  46. printf("cpr_mald = %#010lx\n",reg);
  47. /* read sdr register */
  48. mfsdr(sdr_ebc,reg);
  49. printf("sdr_ebc = %#010lx\n",reg);
  50. mfsdr(sdr_cp440,reg);
  51. printf("sdr_cp440 = %#010lx\n",reg);
  52. mfsdr(sdr_xcr,reg);
  53. printf("sdr_xcr = %#010lx\n",reg);
  54. mfsdr(sdr_xpllc,reg);
  55. printf("sdr_xpllc = %#010lx\n",reg);
  56. mfsdr(sdr_xplld,reg);
  57. printf("sdr_xplld = %#010lx\n",reg);
  58. mfsdr(sdr_pfc0,reg);
  59. printf("sdr_pfc0 = %#010lx\n",reg);
  60. mfsdr(sdr_pfc1,reg);
  61. printf("sdr_pfc1 = %#010lx\n",reg);
  62. mfsdr(sdr_cust0,reg);
  63. printf("sdr_cust0 = %#010lx\n",reg);
  64. mfsdr(sdr_cust1,reg);
  65. printf("sdr_cust1 = %#010lx\n",reg);
  66. mfsdr(sdr_uart0,reg);
  67. printf("sdr_uart0 = %#010lx\n",reg);
  68. mfsdr(sdr_uart1,reg);
  69. printf("sdr_uart1 = %#010lx\n",reg);
  70. printf("===== Display reset and initialize register End =========\n");
  71. }
  72. void show_xbridge_info(void)
  73. {
  74. unsigned long reg;
  75. printf("PCI-X chip control registers\n");
  76. mfsdr(sdr_xcr, reg);
  77. printf("sdr_xcr = %#010lx\n", reg);
  78. mfsdr(sdr_xpllc, reg);
  79. printf("sdr_xpllc = %#010lx\n", reg);
  80. mfsdr(sdr_xplld, reg);
  81. printf("sdr_xplld = %#010lx\n", reg);
  82. printf("PCI-X Bridge Configure registers\n");
  83. printf("PCIX0_VENDID = %#06x\n", in16r(PCIX0_VENDID));
  84. printf("PCIX0_DEVID = %#06x\n", in16r(PCIX0_DEVID));
  85. printf("PCIX0_CMD = %#06x\n", in16r(PCIX0_CMD));
  86. printf("PCIX0_STATUS = %#06x\n", in16r(PCIX0_STATUS));
  87. printf("PCIX0_REVID = %#04x\n", in8(PCIX0_REVID));
  88. printf("PCIX0_CACHELS = %#04x\n", in8(PCIX0_CACHELS));
  89. printf("PCIX0_LATTIM = %#04x\n", in8(PCIX0_LATTIM));
  90. printf("PCIX0_HDTYPE = %#04x\n", in8(PCIX0_HDTYPE));
  91. printf("PCIX0_BIST = %#04x\n", in8(PCIX0_BIST));
  92. printf("PCIX0_BAR0 = %#010lx\n", in32r(PCIX0_BAR0));
  93. printf("PCIX0_BAR1 = %#010lx\n", in32r(PCIX0_BAR1));
  94. printf("PCIX0_BAR2 = %#010lx\n", in32r(PCIX0_BAR2));
  95. printf("PCIX0_BAR3 = %#010lx\n", in32r(PCIX0_BAR3));
  96. printf("PCIX0_BAR4 = %#010lx\n", in32r(PCIX0_BAR4));
  97. printf("PCIX0_BAR5 = %#010lx\n", in32r(PCIX0_BAR5));
  98. printf("PCIX0_CISPTR = %#010lx\n", in32r(PCIX0_CISPTR));
  99. printf("PCIX0_SBSSYSVID = %#010x\n", in16r(PCIX0_SBSYSVID));
  100. printf("PCIX0_SBSSYSID = %#010x\n", in16r(PCIX0_SBSYSID));
  101. printf("PCIX0_EROMBA = %#010lx\n", in32r(PCIX0_EROMBA));
  102. printf("PCIX0_CAP = %#04x\n", in8(PCIX0_CAP));
  103. printf("PCIX0_INTLN = %#04x\n", in8(PCIX0_INTLN));
  104. printf("PCIX0_INTPN = %#04x\n", in8(PCIX0_INTPN));
  105. printf("PCIX0_MINGNT = %#04x\n", in8(PCIX0_MINGNT));
  106. printf("PCIX0_MAXLTNCY = %#04x\n", in8(PCIX0_MAXLTNCY));
  107. printf("PCIX0_BRDGOPT1 = %#010lx\n", in32r(PCIX0_BRDGOPT1));
  108. printf("PCIX0_BRDGOPT2 = %#010lx\n", in32r(PCIX0_BRDGOPT2));
  109. printf("PCIX0_POM0LAL = %#010lx\n", in32r(PCIX0_POM0LAL));
  110. printf("PCIX0_POM0LAH = %#010lx\n", in32r(PCIX0_POM0LAH));
  111. printf("PCIX0_POM0SA = %#010lx\n", in32r(PCIX0_POM0SA));
  112. printf("PCIX0_POM0PCILAL = %#010lx\n", in32r(PCIX0_POM0PCIAL));
  113. printf("PCIX0_POM0PCILAH = %#010lx\n", in32r(PCIX0_POM0PCIAH));
  114. printf("PCIX0_POM1LAL = %#010lx\n", in32r(PCIX0_POM1LAL));
  115. printf("PCIX0_POM1LAH = %#010lx\n", in32r(PCIX0_POM1LAH));
  116. printf("PCIX0_POM1SA = %#010lx\n", in32r(PCIX0_POM1SA));
  117. printf("PCIX0_POM1PCILAL = %#010lx\n", in32r(PCIX0_POM1PCIAL));
  118. printf("PCIX0_POM1PCILAH = %#010lx\n", in32r(PCIX0_POM1PCIAH));
  119. printf("PCIX0_POM2SA = %#010lx\n", in32r(PCIX0_POM2SA));
  120. printf("PCIX0_PIM0SA = %#010lx\n", in32r(PCIX0_PIM0SA));
  121. printf("PCIX0_PIM0LAL = %#010lx\n", in32r(PCIX0_PIM0LAL));
  122. printf("PCIX0_PIM0LAH = %#010lx\n", in32r(PCIX0_PIM0LAH));
  123. printf("PCIX0_PIM1SA = %#010lx\n", in32r(PCIX0_PIM1SA));
  124. printf("PCIX0_PIM1LAL = %#010lx\n", in32r(PCIX0_PIM1LAL));
  125. printf("PCIX0_PIM1LAH = %#010lx\n", in32r(PCIX0_PIM1LAH));
  126. printf("PCIX0_PIM2SA = %#010lx\n", in32r(PCIX0_PIM1SA));
  127. printf("PCIX0_PIM2LAL = %#010lx\n", in32r(PCIX0_PIM1LAL));
  128. printf("PCIX0_PIM2LAH = %#010lx\n", in32r(PCIX0_PIM1LAH));
  129. printf("PCIX0_XSTS = %#010lx\n", in32r(PCIX0_STS));
  130. }
  131. int do_show_xbridge_info(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
  132. {
  133. show_xbridge_info();
  134. return 0;
  135. }
  136. U_BOOT_CMD(xbriinfo, 1, 1, do_show_xbridge_info,
  137. "Show PCIX bridge info", "");
  138. #define TAISHAN_PCI_DEV_ID0 0x800
  139. #define TAISHAN_PCI_DEV_ID1 0x1000
  140. void show_pcix_device_info(void)
  141. {
  142. int ii;
  143. int dev;
  144. u8 capp;
  145. u8 xcapid;
  146. u16 status;
  147. u16 xcommand;
  148. u32 xstatus;
  149. for (ii = 0; ii < 2; ii++) {
  150. if (ii == 0)
  151. dev = TAISHAN_PCI_DEV_ID0;
  152. else
  153. dev = TAISHAN_PCI_DEV_ID1;
  154. pci_read_config_word(dev, PCI_STATUS, &status);
  155. if (status & PCI_STATUS_CAP_LIST) {
  156. pci_read_config_byte(dev, PCI_CAPABILITY_LIST, &capp);
  157. pci_read_config_byte(dev, (int)(capp), &xcapid);
  158. if (xcapid == 0x07) {
  159. pci_read_config_word(dev, (int)(capp + 2),
  160. &xcommand);
  161. pci_read_config_dword(dev, (int)(capp + 4),
  162. &xstatus);
  163. printf("BUS0 dev%d Xcommand=%#06x,Xstatus=%#010x\n",
  164. (ii + 1), xcommand, xstatus);
  165. } else {
  166. printf("BUS0 dev%d PCI-X CAP ID error,"
  167. "CAP=%#04x,XCAPID=%#04x\n",
  168. (ii + 1), capp, xcapid);
  169. }
  170. } else {
  171. printf("BUS0 dev%d not found PCI_STATUS_CAP_LIST supporting\n",
  172. ii + 1);
  173. }
  174. }
  175. }
  176. int do_show_pcix_device_info(cmd_tbl_t * cmdtp, int flag, int argc,
  177. char *argv[])
  178. {
  179. show_pcix_device_info();
  180. return 0;
  181. }
  182. U_BOOT_CMD(xdevinfo, 1, 1, do_show_pcix_device_info,
  183. "Show PCIX Device info", "");
  184. extern void show_reset_reg(void);
  185. int do_show_reset_reg_info(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
  186. {
  187. show_reset_reg();
  188. return 0;
  189. }
  190. U_BOOT_CMD(resetinfo, 1, 1, do_show_reset_reg_info,
  191. "Show Reset REG info", "");