📄 pci_serv.c
字号:
} printf("Base Class = 0x%02X\n",byte_data); /* get Cache Line Size */ offset = CACHE_LINE_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Cache Line Size\n"); return; } printf("Cache Line Size = 0x%02X ",byte_data); /* get Latency Timer */ offset = LATENCY_TIMER_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Latency Timer\n"); return; } printf("Latency Timer = 0x%02X\n",byte_data); /* get Header Type */ offset = HEADER_TYPE_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Header Type\n"); return; } printf("Header Type = 0x%02X ",byte_data); header_type = (((int)byte_data) & 0x7f); /* strip multifunction bit */ /* get BIST */ offset = BIST_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading BIST\n"); return; } printf("BIST = 0x%02X\n",byte_data); /* get Interrupt Line info */ offset = INT_LINE_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Interrupt Line\n"); return; } printf("Interrupt Line = 0x%02X ",byte_data); /* get Interrupt Pin info */ offset = INT_PIN_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Interrupt Pin\n"); return; } printf("Interrupt Pin = 0x%02X\n",byte_data); /* get Capabilities Pointer info */ offset = CAP_PTR_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Capabilities Pointer register\n"); return; } printf("Capabilities Pointer = 0x%02X\n",byte_data); if (header_type == 0) /* type 0 header-specific info */ { /* get Min Gnt info */ offset = MIN_GNT_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Minimum Grant\n"); return; } printf("Minimum Grant = 0x%02X ",byte_data); /* get Max Lat info */ offset = MAX_LAT_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Maximum Latency\n"); return; } printf("Maximum Latency = 0x%02X\n",byte_data); /* get subsystem vendor ID */ offset = SUB_VENDOR_ID_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading Subsystem Vendor ID\n"); return; } printf("Subsystem Vendor ID = 0x%04X ",short_data); subvendor_id = short_data; /* get subsystem device ID */ offset = SUB_DEVICE_ID_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading Subsystem Device ID\n"); return; } printf("Subsystem Device ID = 0x%04X\n",short_data); subdevice_id = short_data; /* get Region 0 Base Address */ offset = REGION0_BASE_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Region 0 Base\n"); return; } printf("PCI Region 0 Base = 0x%08X\n",long_data); /* get Region 1 Base Address */ offset = REGION1_BASE_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Region 1 Base\n"); return; } printf("PCI Region 1 Base = 0x%08X\n",long_data); /* get Region 2 Base Address */ offset = REGION2_BASE_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Region 2 Base\n"); return; } printf("PCI Region 2 Base = 0x%08X\n",long_data); /* get Region 3 Base Address */ offset = REGION3_BASE_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Region 3 Base\n"); return; } printf("PCI Region 3 Base = 0x%08X\n",long_data); /* get Region 4 Base Address */ offset = REGION4_BASE_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Region 4 Base\n"); return; } printf("PCI Region 4 Base = 0x%08X\n",long_data); /* get Region 5 Base Address */ offset = REGION5_BASE_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Region 5 Base\n"); return; } printf("PCI Region 5 Base = 0x%08X\n",long_data); /* get Expansion ROM Base Address */ offset = EXP_ROM_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Expansion ROM Base\n"); return; } printf("Expansion ROM Base = 0x%08X\n",long_data); /* get Cardbus CIS pointer */ offset = CARDBUS_CISPTR_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Cardbus CIS Pointer\n"); return; } printf("Cardbus CIS Pointer = 0x%08X\n",long_data); } /* end type 0 header */ else /* type 1 header_specific info */ { /* get Bridge Control */ offset = BRIDGE_CTRL_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading Bridge Control Register\n"); return; } printf("Bridge Control Reg = 0x%04X ",short_data); /* get Secondary Status */ offset = SECONDARY_STAT_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading Secondary Status Register\n"); return; } printf("Secondary Status Reg = 0x%04X\n",short_data); /* get Primary Bus Number */ offset = PRIMARY_BUSNO_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Primary Bus Number\n"); return; } printf("Primary Bus No. = 0x%02X ",byte_data); /* get Secondary Bus Number */ offset = SECONDARY_BUSNO_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Secondary Bus Number\n"); return; } printf("Secondary Bus No. = 0x%02X\n",byte_data); /* get Subordinate Bus Number */ offset = SUBORD_BUSNO_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Subordinate Bus Number\n"); return; } printf("Subordinate Bus No. = 0x%02X ",byte_data); /* get Secondary Latency Timer */ offset = SECONDARY_LAT_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading Secondary Latency Timer\n"); return; } printf("Secondary Latency Tmr = 0x%02X\n",byte_data); /* get IO Base */ offset = IO_BASE_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading IO Base\n"); return; } printf("IO Base = 0x%02X ",byte_data); /* get IO Limit */ offset = IO_LIMIT_OFFSET; if (sys_read_config_byte (busno,devno,function,offset,&byte_data) == ERROR) { printf("Error reading IO Limit\n"); return; } printf("IO Limit = 0x%02X\n",byte_data); /* get Memory Base */ offset = MEMORY_BASE_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading Memory Base\n"); return; } printf("Memory Base = 0x%04X ",short_data); /* get Memory Limit */ offset = MEMORY_LIMIT_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading Memory Limit\n"); return; } printf("Memory Limit = 0x%04X\n",short_data); /* get Prefetchable Memory Base */ offset = PREF_MEM_BASE_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading Prefetchable Memory Base\n"); return; } printf("Pref. Memory Base = 0x%04X ",short_data); /* get Prefetchable Memory Limit */ offset = PREF_MEM_LIMIT_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading Prefetchable Memory Limit\n"); return; } printf("Pref. Memory Limit = 0x%04X\n",short_data); /* get IO Base Upper 16 Bits */ offset = IO_BASE_UPPER_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading IO Base Upper 16 Bits\n"); return; } printf("IO Base Upper 16 Bits = 0x%04X ",short_data); /* get IO Limit Upper 16 Bits */ offset = IO_LIMIT_UPPER_OFFSET; if (sys_read_config_word (busno,devno,function,offset,&short_data) == ERROR) { printf("Error reading IO Limit Upper 16 Bits\n"); return; } printf("IO Limit Upper 16 Bits= 0x%04X\n",short_data); /* get Prefetchable Base Upper 32 Bits */ offset = PREF_BASE_UPPER_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Prefetchable Base Upper 32 Bits\n"); return; } printf("Pref. Base Up. 32 Bits= 0x%08X\n",long_data); /* get Prefetchable Limit Upper 32 Bits */ offset = PREF_LIMIT_UPPER_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Prefetchable Limit Upper 32 Bits\n"); return; } printf("Pref. Lmt. Up. 32 Bits= 0x%08X\n",long_data); /* get Region 0 Base Address */ offset = REGION0_BASE_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Region 0 Base\n"); return; } printf("PCI Region 0 Base = 0x%08X\n",long_data); /* get Region 1 Base Address */ offset = REGION1_BASE_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Region 1 Base\n"); return; } printf("PCI Region 1 Base = 0x%08X\n",long_data); /* get Expansion ROM Base Address */ offset = TYPE1_EXP_ROM_OFFSET; if (sys_read_config_dword (busno,devno,function,offset,&long_data) == ERROR) { printf("Error reading Expansion ROM Base\n"); return; } printf("Expansion ROM Base = 0x%08X\n",long_data); } /* end type 1 header */ }}/* check if host of backplane */int isHost(){ if (*BACKPLANE_DET_REG & BP_HOST_BIT) return TRUE; else return FALSE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -