123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- /*
- * (C) Copyright 2007
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
- #include <config.h>
- #include <common.h>
- #include <command.h>
- #include <asm/processor.h>
- #include <pci.h>
- void show_reset_reg(void)
- {
- unsigned long reg;
- /* read clock regsiter */
- printf("===== Display reset and initialize register Start =========\n");
- mfcpr(clk_pllc,reg);
- printf("cpr_pllc = %#010lx\n",reg);
- mfcpr(clk_plld,reg);
- printf("cpr_plld = %#010lx\n",reg);
- mfcpr(clk_primad,reg);
- printf("cpr_primad = %#010lx\n",reg);
- mfcpr(clk_primbd,reg);
- printf("cpr_primbd = %#010lx\n",reg);
- mfcpr(clk_opbd,reg);
- printf("cpr_opbd = %#010lx\n",reg);
- mfcpr(clk_perd,reg);
- printf("cpr_perd = %#010lx\n",reg);
- mfcpr(clk_mald,reg);
- printf("cpr_mald = %#010lx\n",reg);
- /* read sdr register */
- mfsdr(sdr_ebc,reg);
- printf("sdr_ebc = %#010lx\n",reg);
- mfsdr(sdr_cp440,reg);
- printf("sdr_cp440 = %#010lx\n",reg);
- mfsdr(sdr_xcr,reg);
- printf("sdr_xcr = %#010lx\n",reg);
- mfsdr(sdr_xpllc,reg);
- printf("sdr_xpllc = %#010lx\n",reg);
- mfsdr(sdr_xplld,reg);
- printf("sdr_xplld = %#010lx\n",reg);
- mfsdr(sdr_pfc0,reg);
- printf("sdr_pfc0 = %#010lx\n",reg);
- mfsdr(sdr_pfc1,reg);
- printf("sdr_pfc1 = %#010lx\n",reg);
- mfsdr(sdr_cust0,reg);
- printf("sdr_cust0 = %#010lx\n",reg);
- mfsdr(sdr_cust1,reg);
- printf("sdr_cust1 = %#010lx\n",reg);
- mfsdr(sdr_uart0,reg);
- printf("sdr_uart0 = %#010lx\n",reg);
- mfsdr(sdr_uart1,reg);
- printf("sdr_uart1 = %#010lx\n",reg);
- printf("===== Display reset and initialize register End =========\n");
- }
- void show_xbridge_info(void)
- {
- unsigned long reg;
- printf("PCI-X chip control registers\n");
- mfsdr(sdr_xcr, reg);
- printf("sdr_xcr = %#010lx\n", reg);
- mfsdr(sdr_xpllc, reg);
- printf("sdr_xpllc = %#010lx\n", reg);
- mfsdr(sdr_xplld, reg);
- printf("sdr_xplld = %#010lx\n", reg);
- printf("PCI-X Bridge Configure registers\n");
- printf("PCIX0_VENDID = %#06x\n", in16r(PCIX0_VENDID));
- printf("PCIX0_DEVID = %#06x\n", in16r(PCIX0_DEVID));
- printf("PCIX0_CMD = %#06x\n", in16r(PCIX0_CMD));
- printf("PCIX0_STATUS = %#06x\n", in16r(PCIX0_STATUS));
- printf("PCIX0_REVID = %#04x\n", in8(PCIX0_REVID));
- printf("PCIX0_CACHELS = %#04x\n", in8(PCIX0_CACHELS));
- printf("PCIX0_LATTIM = %#04x\n", in8(PCIX0_LATTIM));
- printf("PCIX0_HDTYPE = %#04x\n", in8(PCIX0_HDTYPE));
- printf("PCIX0_BIST = %#04x\n", in8(PCIX0_BIST));
- printf("PCIX0_BAR0 = %#010lx\n", in32r(PCIX0_BAR0));
- printf("PCIX0_BAR1 = %#010lx\n", in32r(PCIX0_BAR1));
- printf("PCIX0_BAR2 = %#010lx\n", in32r(PCIX0_BAR2));
- printf("PCIX0_BAR3 = %#010lx\n", in32r(PCIX0_BAR3));
- printf("PCIX0_BAR4 = %#010lx\n", in32r(PCIX0_BAR4));
- printf("PCIX0_BAR5 = %#010lx\n", in32r(PCIX0_BAR5));
- printf("PCIX0_CISPTR = %#010lx\n", in32r(PCIX0_CISPTR));
- printf("PCIX0_SBSSYSVID = %#010x\n", in16r(PCIX0_SBSYSVID));
- printf("PCIX0_SBSSYSID = %#010x\n", in16r(PCIX0_SBSYSID));
- printf("PCIX0_EROMBA = %#010lx\n", in32r(PCIX0_EROMBA));
- printf("PCIX0_CAP = %#04x\n", in8(PCIX0_CAP));
- printf("PCIX0_INTLN = %#04x\n", in8(PCIX0_INTLN));
- printf("PCIX0_INTPN = %#04x\n", in8(PCIX0_INTPN));
- printf("PCIX0_MINGNT = %#04x\n", in8(PCIX0_MINGNT));
- printf("PCIX0_MAXLTNCY = %#04x\n", in8(PCIX0_MAXLTNCY));
- printf("PCIX0_BRDGOPT1 = %#010lx\n", in32r(PCIX0_BRDGOPT1));
- printf("PCIX0_BRDGOPT2 = %#010lx\n", in32r(PCIX0_BRDGOPT2));
- printf("PCIX0_POM0LAL = %#010lx\n", in32r(PCIX0_POM0LAL));
- printf("PCIX0_POM0LAH = %#010lx\n", in32r(PCIX0_POM0LAH));
- printf("PCIX0_POM0SA = %#010lx\n", in32r(PCIX0_POM0SA));
- printf("PCIX0_POM0PCILAL = %#010lx\n", in32r(PCIX0_POM0PCIAL));
- printf("PCIX0_POM0PCILAH = %#010lx\n", in32r(PCIX0_POM0PCIAH));
- printf("PCIX0_POM1LAL = %#010lx\n", in32r(PCIX0_POM1LAL));
- printf("PCIX0_POM1LAH = %#010lx\n", in32r(PCIX0_POM1LAH));
- printf("PCIX0_POM1SA = %#010lx\n", in32r(PCIX0_POM1SA));
- printf("PCIX0_POM1PCILAL = %#010lx\n", in32r(PCIX0_POM1PCIAL));
- printf("PCIX0_POM1PCILAH = %#010lx\n", in32r(PCIX0_POM1PCIAH));
- printf("PCIX0_POM2SA = %#010lx\n", in32r(PCIX0_POM2SA));
- printf("PCIX0_PIM0SA = %#010lx\n", in32r(PCIX0_PIM0SA));
- printf("PCIX0_PIM0LAL = %#010lx\n", in32r(PCIX0_PIM0LAL));
- printf("PCIX0_PIM0LAH = %#010lx\n", in32r(PCIX0_PIM0LAH));
- printf("PCIX0_PIM1SA = %#010lx\n", in32r(PCIX0_PIM1SA));
- printf("PCIX0_PIM1LAL = %#010lx\n", in32r(PCIX0_PIM1LAL));
- printf("PCIX0_PIM1LAH = %#010lx\n", in32r(PCIX0_PIM1LAH));
- printf("PCIX0_PIM2SA = %#010lx\n", in32r(PCIX0_PIM1SA));
- printf("PCIX0_PIM2LAL = %#010lx\n", in32r(PCIX0_PIM1LAL));
- printf("PCIX0_PIM2LAH = %#010lx\n", in32r(PCIX0_PIM1LAH));
- printf("PCIX0_XSTS = %#010lx\n", in32r(PCIX0_STS));
- }
- int do_show_xbridge_info(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
- {
- show_xbridge_info();
- return 0;
- }
- U_BOOT_CMD(xbriinfo, 1, 1, do_show_xbridge_info,
- "Show PCIX bridge info", "");
- #define TAISHAN_PCI_DEV_ID0 0x800
- #define TAISHAN_PCI_DEV_ID1 0x1000
- void show_pcix_device_info(void)
- {
- int ii;
- int dev;
- u8 capp;
- u8 xcapid;
- u16 status;
- u16 xcommand;
- u32 xstatus;
- for (ii = 0; ii < 2; ii++) {
- if (ii == 0)
- dev = TAISHAN_PCI_DEV_ID0;
- else
- dev = TAISHAN_PCI_DEV_ID1;
- pci_read_config_word(dev, PCI_STATUS, &status);
- if (status & PCI_STATUS_CAP_LIST) {
- pci_read_config_byte(dev, PCI_CAPABILITY_LIST, &capp);
- pci_read_config_byte(dev, (int)(capp), &xcapid);
- if (xcapid == 0x07) {
- pci_read_config_word(dev, (int)(capp + 2),
- &xcommand);
- pci_read_config_dword(dev, (int)(capp + 4),
- &xstatus);
- printf("BUS0 dev%d Xcommand=%#06x,Xstatus=%#010x\n",
- (ii + 1), xcommand, xstatus);
- } else {
- printf("BUS0 dev%d PCI-X CAP ID error,"
- "CAP=%#04x,XCAPID=%#04x\n",
- (ii + 1), capp, xcapid);
- }
- } else {
- printf("BUS0 dev%d not found PCI_STATUS_CAP_LIST supporting\n",
- ii + 1);
- }
- }
- }
- int do_show_pcix_device_info(cmd_tbl_t * cmdtp, int flag, int argc,
- char *argv[])
- {
- show_pcix_device_info();
- return 0;
- }
- U_BOOT_CMD(xdevinfo, 1, 1, do_show_pcix_device_info,
- "Show PCIX Device info", "");
- extern void show_reset_reg(void);
- int do_show_reset_reg_info(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
- {
- show_reset_reg();
- return 0;
- }
- U_BOOT_CMD(resetinfo, 1, 1, do_show_reset_reg_info,
- "Show Reset REG info", "");
|