reginfo.c 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /*
  2. * (C) Copyright 2000
  3. * Subodh Nijsure, SkyStream Networks, snijsure@skystream.com
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #include <common.h>
  8. #include <command.h>
  9. #if defined (CONFIG_4xx)
  10. extern void ppc4xx_reginfo(void);
  11. #elif defined (CONFIG_5xx)
  12. #include <mpc5xx.h>
  13. #elif defined (CONFIG_MPC5200)
  14. #include <mpc5xxx.h>
  15. #elif defined (CONFIG_MPC86xx)
  16. extern void mpc86xx_reginfo(void);
  17. #elif defined(CONFIG_MPC85xx)
  18. extern void mpc85xx_reginfo(void);
  19. #endif
  20. static int do_reginfo(cmd_tbl_t *cmdtp, int flag, int argc,
  21. char * const argv[])
  22. {
  23. #if defined (CONFIG_4xx)
  24. ppc4xx_reginfo();
  25. #elif defined(CONFIG_5xx)
  26. volatile immap_t *immap = (immap_t *)CONFIG_SYS_IMMR;
  27. volatile memctl5xx_t *memctl = &immap->im_memctl;
  28. volatile sysconf5xx_t *sysconf = &immap->im_siu_conf;
  29. volatile sit5xx_t *timers = &immap->im_sit;
  30. volatile car5xx_t *car = &immap->im_clkrst;
  31. volatile uimb5xx_t *uimb = &immap->im_uimb;
  32. puts ("\nSystem Configuration registers\n");
  33. printf("\tIMMR\t0x%08X\tSIUMCR\t0x%08X \n", get_immr(0), sysconf->sc_siumcr);
  34. printf("\tSYPCR\t0x%08X\tSWSR\t0x%04X \n" ,sysconf->sc_sypcr, sysconf->sc_swsr);
  35. printf("\tSIPEND\t0x%08X\tSIMASK\t0x%08X \n", sysconf->sc_sipend, sysconf->sc_simask);
  36. printf("\tSIEL\t0x%08X\tSIVEC\t0x%08X \n", sysconf->sc_siel, sysconf->sc_sivec);
  37. printf("\tTESR\t0x%08X\n", sysconf->sc_tesr);
  38. puts ("\nMemory Controller Registers\n");
  39. printf("\tBR0\t0x%08X\tOR0\t0x%08X \n", memctl->memc_br0, memctl->memc_or0);
  40. printf("\tBR1\t0x%08X\tOR1\t0x%08X \n", memctl->memc_br1, memctl->memc_or1);
  41. printf("\tBR2\t0x%08X\tOR2\t0x%08X \n", memctl->memc_br2, memctl->memc_or2);
  42. printf("\tBR3\t0x%08X\tOR3\t0x%08X \n", memctl->memc_br3, memctl->memc_or3);
  43. printf("\tDMBR\t0x%08X\tDMOR\t0x%08X \n", memctl->memc_dmbr, memctl->memc_dmor );
  44. printf("\tMSTAT\t0x%08X\n", memctl->memc_mstat);
  45. puts ("\nSystem Integration Timers\n");
  46. printf("\tTBSCR\t0x%08X\tRTCSC\t0x%08X \n", timers->sit_tbscr, timers->sit_rtcsc);
  47. printf("\tPISCR\t0x%08X \n", timers->sit_piscr);
  48. puts ("\nClocks and Reset\n");
  49. printf("\tSCCR\t0x%08X\tPLPRCR\t0x%08X \n", car->car_sccr, car->car_plprcr);
  50. puts ("\nU-Bus to IMB3 Bus Interface\n");
  51. printf("\tUMCR\t0x%08X\tUIPEND\t0x%08X \n", uimb->uimb_umcr, uimb->uimb_uipend);
  52. puts ("\n\n");
  53. #elif defined(CONFIG_MPC5200)
  54. puts ("\nMPC5200 registers\n");
  55. printf ("MBAR=%08x\n", CONFIG_SYS_MBAR);
  56. puts ("Memory map registers\n");
  57. printf ("\tCS0: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  58. *(volatile ulong*)MPC5XXX_CS0_START,
  59. *(volatile ulong*)MPC5XXX_CS0_STOP,
  60. *(volatile ulong*)MPC5XXX_CS0_CFG,
  61. (*(volatile ulong*)MPC5XXX_ADDECR & 0x00010000) ? 1 : 0);
  62. printf ("\tCS1: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  63. *(volatile ulong*)MPC5XXX_CS1_START,
  64. *(volatile ulong*)MPC5XXX_CS1_STOP,
  65. *(volatile ulong*)MPC5XXX_CS1_CFG,
  66. (*(volatile ulong*)MPC5XXX_ADDECR & 0x00020000) ? 1 : 0);
  67. printf ("\tCS2: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  68. *(volatile ulong*)MPC5XXX_CS2_START,
  69. *(volatile ulong*)MPC5XXX_CS2_STOP,
  70. *(volatile ulong*)MPC5XXX_CS2_CFG,
  71. (*(volatile ulong*)MPC5XXX_ADDECR & 0x00040000) ? 1 : 0);
  72. printf ("\tCS3: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  73. *(volatile ulong*)MPC5XXX_CS3_START,
  74. *(volatile ulong*)MPC5XXX_CS3_STOP,
  75. *(volatile ulong*)MPC5XXX_CS3_CFG,
  76. (*(volatile ulong*)MPC5XXX_ADDECR & 0x00080000) ? 1 : 0);
  77. printf ("\tCS4: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  78. *(volatile ulong*)MPC5XXX_CS4_START,
  79. *(volatile ulong*)MPC5XXX_CS4_STOP,
  80. *(volatile ulong*)MPC5XXX_CS4_CFG,
  81. (*(volatile ulong*)MPC5XXX_ADDECR & 0x00100000) ? 1 : 0);
  82. printf ("\tCS5: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  83. *(volatile ulong*)MPC5XXX_CS5_START,
  84. *(volatile ulong*)MPC5XXX_CS5_STOP,
  85. *(volatile ulong*)MPC5XXX_CS5_CFG,
  86. (*(volatile ulong*)MPC5XXX_ADDECR & 0x00200000) ? 1 : 0);
  87. printf ("\tCS6: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  88. *(volatile ulong*)MPC5XXX_CS6_START,
  89. *(volatile ulong*)MPC5XXX_CS6_STOP,
  90. *(volatile ulong*)MPC5XXX_CS6_CFG,
  91. (*(volatile ulong*)MPC5XXX_ADDECR & 0x04000000) ? 1 : 0);
  92. printf ("\tCS7: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  93. *(volatile ulong*)MPC5XXX_CS7_START,
  94. *(volatile ulong*)MPC5XXX_CS7_STOP,
  95. *(volatile ulong*)MPC5XXX_CS7_CFG,
  96. (*(volatile ulong*)MPC5XXX_ADDECR & 0x08000000) ? 1 : 0);
  97. printf ("\tBOOTCS: start %08lX\tstop %08lX\tconfig %08lX\ten %d\n",
  98. *(volatile ulong*)MPC5XXX_BOOTCS_START,
  99. *(volatile ulong*)MPC5XXX_BOOTCS_STOP,
  100. *(volatile ulong*)MPC5XXX_BOOTCS_CFG,
  101. (*(volatile ulong*)MPC5XXX_ADDECR & 0x02000000) ? 1 : 0);
  102. printf ("\tSDRAMCS0: %08lX\n",
  103. *(volatile ulong*)MPC5XXX_SDRAM_CS0CFG);
  104. printf ("\tSDRAMCS1: %08lX\n",
  105. *(volatile ulong*)MPC5XXX_SDRAM_CS1CFG);
  106. #elif defined(CONFIG_MPC86xx)
  107. mpc86xx_reginfo();
  108. #elif defined(CONFIG_MPC85xx)
  109. mpc85xx_reginfo();
  110. #endif
  111. return 0;
  112. }
  113. /**************************************************/
  114. #if defined(CONFIG_CMD_REGINFO)
  115. U_BOOT_CMD(
  116. reginfo, 2, 1, do_reginfo,
  117. "print register information",
  118. ""
  119. );
  120. #endif