⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcibr_idbg.c

📁 microwindows移植到S3C44B0的源码
💻 C
字号:
/* * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2001-2002 Silicon Graphics, Inc. All rights reserved. */#include <linux/types.h>#include <linux/slab.h>#include <linux/module.h>#include <asm/sn/sgi.h>#include <asm/sn/sn_cpuid.h>#include <asm/sn/addrs.h>#include <asm/sn/arch.h>#include <asm/sn/iograph.h>#include <asm/sn/invent.h>#include <asm/sn/hcl.h>#include <asm/sn/labelcl.h>#include <asm/sn/xtalk/xwidget.h>#include <asm/sn/pci/bridge.h>#include <asm/sn/pci/pciio.h>#include <asm/sn/pci/pcibr.h>#include <asm/sn/pci/pcibr_private.h>#include <asm/sn/pci/pci_defs.h>#include <asm/sn/prio.h>#include <asm/sn/xtalk/xbow.h>#include <asm/sn/ioc3.h>#include <asm/sn/eeprom.h>#include <asm/sn/io.h>#include <asm/sn/sn_private.h>#ifdef LATERchar *pci_space[] = {"NONE", 		     "ROM",		     "IO",		     "",		     "MEM",		     "MEM32",		     "MEM64",		     "CFG",		     "WIN0",		     "WIN1",		     "WIN2",		     "WIN3",		     "WIN4",		     "WIN5",		     "",		     "BAD"};voididbg_pss_func(pcibr_info_h pcibr_infoh, int func){    pcibr_info_t	pcibr_info = pcibr_infoh[func];    char		name[MAXDEVNAME];    int			win;        if (!pcibr_info)	return;    qprintf("Per-slot Function Info\n");    sprintf(name, "%v", pcibr_info->f_vertex);    qprintf("\tSlot Name : %s\n",name);    qprintf("\tPCI Bus : %d ",pcibr_info->f_bus);    qprintf("Slot : %d ", pcibr_info->f_slot);    qprintf("Function : %d ", pcibr_info->f_func);    qprintf("VendorId : 0x%x " , pcibr_info->f_vendor);    qprintf("DeviceId : 0x%x\n", pcibr_info->f_device);    sprintf(name, "%v", pcibr_info->f_master);    qprintf("\tBus provider : %s\n",name);    qprintf("\tProvider Fns : 0x%x ", pcibr_info->f_pops);    qprintf("Error Handler : 0x%x Arg 0x%x\n", 	    pcibr_info->f_efunc,pcibr_info->f_einfo);    for(win = 0 ; win < 6 ; win++) 	qprintf("\tBase Reg #%d space %s base 0x%x size 0x%x\n",		win,pci_space[pcibr_info->f_window[win].w_space],		pcibr_info->f_window[win].w_base,		pcibr_info->f_window[win].w_size);    qprintf("\tRom base 0x%x size 0x%x\n", 	    pcibr_info->f_rbase,pcibr_info->f_rsize);    qprintf("\tInterrupt Bit Map\n");    qprintf("\t\tPCI Int#\tBridge Pin#\n");    for (win = 0 ; win < 4; win++)	qprintf("\t\tINT%c\t\t%d\n",win+'A',pcibr_info->f_ibit[win]);    qprintf("\n");}voididbg_pss_info(pcibr_soft_t pcibr_soft, pciio_slot_t slot){    pcibr_soft_slot_t	pss;    char		slot_conn_name[MAXDEVNAME];    int			func;    pss = &pcibr_soft->bs_slot[slot];    qprintf("PCI INFRASTRUCTURAL INFO FOR SLOT %d\n", slot);    qprintf("\tHost Present ? %s ", pss->has_host ? "yes" : "no");    qprintf("\tHost Slot : %d\n",pss->host_slot);    sprintf(slot_conn_name, "%v", pss->slot_conn);    qprintf("\tSlot Conn : %s\n",slot_conn_name);	    qprintf("\t#Functions : %d\n",pss->bss_ninfo);    for (func = 0; func < pss->bss_ninfo; func++)	idbg_pss_func(pss->bss_infos,func);    qprintf("\tSpace : %s ",pci_space[pss->bss_devio.bssd_space]);    qprintf("\tBase : 0x%x ", pss->bss_devio.bssd_base);    qprintf("\tShadow Devreg : 0x%x\n", pss->bss_device);    qprintf("\tUsage counts : pmu %d d32 %d d64 %d\n",	    pss->bss_pmu_uctr,pss->bss_d32_uctr,pss->bss_d64_uctr);        qprintf("\tDirect Trans Info : d64_base 0x%x d64_flags 0x%x"	    "d32_base 0x%x d32_flags 0x%x\n",	    pss->bss_d64_base, pss->bss_d64_flags,	    pss->bss_d32_base, pss->bss_d32_flags);        qprintf("\tExt ATEs active ? %s", 	    pss->bss_ext_ates_active ? "yes" : "no");    qprintf(" Command register : 0x%x ", pss->bss_cmd_pointer);    qprintf(" Shadow command val : 0x%x\n", pss->bss_cmd_shadow);    qprintf("\tRRB Info : Valid %d+%d Reserved %d\n",	    pcibr_soft->bs_rrb_valid[slot],	    pcibr_soft->bs_rrb_valid[slot + PCIBR_RRB_SLOT_VIRTUAL],	    pcibr_soft->bs_rrb_res[slot]);		}int	ips = 0;voididbg_pss(pcibr_soft_t pcibr_soft){    pciio_slot_t	slot;        if (ips >= 0 && ips < 8)	idbg_pss_info(pcibr_soft,ips);    else if (ips < 0)	for (slot = 0; slot < 8; slot++) 	    idbg_pss_info(pcibr_soft,slot);    else	qprintf("Invalid ips %d\n",ips);}#endif	/* LATER */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -