📄 pciiomapshow.c
字号:
&pB->preBaseUpper);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_PRE_MEM_LIMIT_U,
&pB->preLimitUpper);
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_IO_BASE_U,
&pB->ioBaseUpper);
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_IO_LIMIT_U,
&pB->ioLimitUpper);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_ROM_BASE,
&pB->romBase);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_BRG_INT_LINE,
&pB->intLine);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_BRG_INT_PIN,
&pB->intPin);
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_BRIDGE_CONTROL,
&pB->control);
pciBheaderPrint (pB);
}
else /* PCI device */
{
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_VENDOR_ID,
&pD->vendorId);
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_DEVICE_ID,
&pD->deviceId);
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_COMMAND,
&pD->command);
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_STATUS,
&pD->status);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_REVISION,
&pD->revisionId);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_PROGRAMMING_IF,
&pD->progIf);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_SUBCLASS,
&pD->subClass);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_CLASS,
&pD->classCode);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_CACHE_LINE_SIZE,
&pD->cacheLine);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_LATENCY_TIMER,
&pD->latency);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_HEADER_TYPE,
&pD->headerType);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_BIST,
&pD->bist);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_BASE_ADDRESS_0,
&pD->base0);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_BASE_ADDRESS_1,
&pD->base1);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_BASE_ADDRESS_2,
&pD->base2);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_BASE_ADDRESS_3,
&pD->base3);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_BASE_ADDRESS_4,
&pD->base4);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_BASE_ADDRESS_5,
&pD->base5);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_CIS,
&pD->cis);
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_SUB_VENDER_ID,
&pD->subVendorId);
pciConfigInWord (busNo, deviceNo, funcNo, PCI_CFG_SUB_SYSTEM_ID,
&pD->subSystemId);
pciConfigInLong (busNo, deviceNo, funcNo, PCI_CFG_EXPANSION_ROM,
&pD->romBase);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_DEV_INT_LINE,
&pD->intLine);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_DEV_INT_PIN,
&pD->intPin);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_MIN_GRANT,
&pD->minGrant);
pciConfigInByte (busNo, deviceNo, funcNo, PCI_CFG_MAX_LATENCY,
&pD->maxLatency);
pciDheaderPrint (pD);
}
return (OK);
}
/*******************************************************************************
*
* pciFindDeviceShow - find a device by deviceId, then print information.
*
* This routine finds a device by deviceId, then print information.
*
* RETURNS:
* OK, or ERROR if this library is not initialized.
*
*/
STATUS pciFindDeviceShow
(
int vendorId, /* vendor ID */
int deviceId, /* device ID */
int index /* desired instance of device */
)
{
int busNo;
int deviceNo;
int funcNo;
if (pciFindDevice (vendorId, deviceId, index, &busNo, &deviceNo, &funcNo)
== OK)
{
printf ("deviceId = 0x%.8x\n", deviceId);
printf ("vendorId = 0x%.8x\n", vendorId);
printf ("index = 0x%.8x\n", index);
printf ("busNo = 0x%.8x\n", busNo);
printf ("deviceNo = 0x%.8x\n", deviceNo);
printf ("funcNo = 0x%.8x\n", funcNo);
return (OK);
}
return (ERROR);
}
/*******************************************************************************
*
* pciFindClassShow - find a device by 24-bit class code
*
* This routine finds a device by its 24-bit PCI class code, then prints its
* information.
*
* RETURNS:
* OK, or ERROR if this library is not initialized.
*
*/
STATUS pciFindClassShow
(
int classCode, /* 24-bit class code */
int index /* desired instance of device */
)
{
int busNo;
int deviceNo;
int funcNo;
if (pciFindClass (classCode, index, &busNo, &deviceNo, &funcNo) == OK)
{
printf ("class code = 0x%.8x\n", classCode);
printf ("index = 0x%.8x\n", index);
printf ("busNo = 0x%.8x\n", busNo);
printf ("deviceNo = 0x%.8x\n", deviceNo);
printf ("funcNo = 0x%.8x\n", funcNo);
return (OK);
}
return (ERROR);
}
/*******************************************************************************
*
* pciDheaderPrint - print a PCI device header
*
* This routine prints a PCI device header.
*
* RETURNS: N/A
*
*/
LOCAL void pciDheaderPrint
(
PCI_HEADER_DEVICE * pD
)
{
printf ("vendor ID = 0x%.4x\n", (ushort_t)pD->vendorId);
printf ("device ID = 0x%.4x\n", (ushort_t)pD->deviceId);
printf ("command register = 0x%.4x\n", (ushort_t)pD->command);
printf ("status register = 0x%.4x\n", (ushort_t)pD->status);
printf ("revision ID = 0x%.2x\n", (uchar_t)pD->revisionId);
printf ("class code = 0x%.2x\n", (uchar_t)pD->classCode);
printf ("sub class code = 0x%.2x\n", (uchar_t)pD->subClass);
printf ("programming interface = 0x%.2x\n", (uchar_t)pD->progIf);
printf ("cache line = 0x%.2x\n", (uchar_t)pD->cacheLine);
printf ("latency time = 0x%.2x\n", (uchar_t)pD->latency);
printf ("header type = 0x%.2x\n", (uchar_t)pD->headerType);
printf ("BIST = 0x%.2x\n", (uchar_t)pD->bist);
printf ("base address 0 = 0x%.8x\n", pD->base0);
printf ("base address 1 = 0x%.8x\n", pD->base1);
printf ("base address 2 = 0x%.8x\n", pD->base2);
printf ("base address 3 = 0x%.8x\n", pD->base3);
printf ("base address 4 = 0x%.8x\n", pD->base4);
printf ("base address 5 = 0x%.8x\n", pD->base5);
printf ("cardBus CIS pointer = 0x%.8x\n", pD->cis);
printf ("sub system vendor ID = 0x%.4x\n", (ushort_t)pD->subVendorId);
printf ("sub system ID = 0x%.4x\n", (ushort_t)pD->subSystemId);
printf ("expansion ROM base address = 0x%.8x\n", pD->romBase);
printf ("interrupt line = 0x%.2x\n", (uchar_t)pD->intLine);
printf ("interrupt pin = 0x%.2x\n", (uchar_t)pD->intPin);
printf ("min Grant = 0x%.2x\n", (uchar_t)pD->minGrant);
printf ("max Latency = 0x%.2x\n", (uchar_t)pD->maxLatency);
}
/*******************************************************************************
*
* pciBheaderPrint - print a PCI-to-PCI bridge header
*
* This routine prints a PCI-to-PCI bridge header.
*
* RETURNS: N/A
*
*/
LOCAL void pciBheaderPrint
(
PCI_HEADER_BRIDGE * pB
)
{
printf ("vendor ID = 0x%.4x\n", (ushort_t)pB->vendorId);
printf ("device ID = 0x%.4x\n", (ushort_t)pB->deviceId);
printf ("command register = 0x%.4x\n", (ushort_t)pB->command);
printf ("status register = 0x%.4x\n", (ushort_t)pB->status);
printf ("revision ID = 0x%.2x\n", (uchar_t)pB->revisionId);
printf ("class code = 0x%.2x\n", (uchar_t)pB->classCode);
printf ("sub class code = 0x%.2x\n", (uchar_t)pB->subClass);
printf ("programming interface = 0x%.2x\n", (uchar_t)pB->progIf);
printf ("cache line = 0x%.2x\n", (uchar_t)pB->cacheLine);
printf ("latency time = 0x%.2x\n", (uchar_t)pB->latency);
printf ("header type = 0x%.2x\n", (uchar_t)pB->headerType);
printf ("BIST = 0x%.2x\n", (uchar_t)pB->bist);
printf ("base address 0 = 0x%.8x\n", pB->base0);
printf ("base address 1 = 0x%.8x\n", pB->base1);
printf ("primary bus number = 0x%.2x\n", (uchar_t)pB->priBus);
printf ("secondary bus number = 0x%.2x\n", (uchar_t)pB->secBus);
printf ("subordinate bus number = 0x%.2x\n", (uchar_t)pB->subBus);
printf ("secondary latency timer = 0x%.2x\n", (uchar_t)pB->secLatency);
printf ("IO base = 0x%.2x\n", (uchar_t)pB->ioBase);
printf ("IO limit = 0x%.2x\n", (uchar_t)pB->ioLimit);
printf ("secondary status = 0x%.4x\n", (ushort_t)pB->secStatus);
printf ("memory base = 0x%.4x\n", (ushort_t)pB->memBase);
printf ("memory limit = 0x%.4x\n", (ushort_t)pB->memLimit);
printf ("prefetch memory base = 0x%.4x\n", (ushort_t)pB->preBase);
printf ("prefetch memory limit = 0x%.4x\n", (ushort_t)pB->preLimit);
printf ("prefetch memory base upper = 0x%.8x\n", pB->preBaseUpper);
printf ("prefetch memory limit upper = 0x%.8x\n", pB->preLimitUpper);
printf ("IO base upper 16 bits = 0x%.4x\n", (ushort_t)pB->ioBaseUpper);
printf ("IO limit upper 16 bits = 0x%.4x\n", (ushort_t)pB->ioLimitUpper);
printf ("expansion ROM base address = 0x%.8x\n", pB->romBase);
printf ("interrupt line = 0x%.2x\n", (uchar_t)pB->intLine);
printf ("interrupt pin = 0x%.2x\n", (uchar_t)pB->intPin);
printf ("bridge control = 0x%.4x\n", (ushort_t)pB->control);
}
#endif /* (defined(INCLUDE_PCI) && defined(INCLUDE_SHOW_ROUTINES)) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -