VirtualBox

Changeset 2598 in vbox


Ignore:
Timestamp:
May 11, 2007 7:14:52 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
21103
Message:

Added a bunch of pci register defines and created a couple of the setters/getters that should be created to make that pci config setup easier to read.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/pci.h

    r2596 r2598  
    7676/** Pointer to a FNPCIIOREGIONMAP() function. */
    7777typedef FNPCIIOREGIONMAP *PFNPCIIOREGIONMAP;
     78
     79
     80/** @name PCI Configuration Space Registers
     81 * @{ */
     82#define VBOX_PCI_VENDOR_ID              0x00    /**< 16-bit RO? */
     83#define VBOX_PCI_DEVICE_ID              0x02    /**< 16-bit RO? */
     84#define VBOX_PCI_COMMAND                0x04    /**< 16-bit ?? */
     85#define VBOX_PCI_STATUS                 0x06    /**< 16-bit ?? */
     86#define VBOX_PCI_REVISION_ID            0x08    /**<  8-bit ?? */
     87#define VBOX_PCI_CLASS_PROG             0x09    /**<  8-bit ?? */
     88#define VBOX_PCI_CLASS_DEVICE           0x0a    /**<  8-bit ?? */
     89#define VBOX_PCI_CACHE_LINE_SIZE        0x0c    /**<  8-bit ?? */
     90#define VBOX_PCI_LATENCY_TIMER          0x0d    /**<  8-bit ?? */
     91#define VBOX_PCI_HEADER_TYPE            0x0e    /**<  8-bit ?? */
     92#define VBOX_PCI_BIST                   0x0f    /**<  8-bit ?? */
     93#define VBOX_PCI_BASE_ADDRESS_0         0x10    /**< 32-bit RW */
     94#define VBOX_PCI_BASE_ADDRESS_1         0x14    /**< 32-bit RW */
     95#define VBOX_PCI_BASE_ADDRESS_2         0x18    /**< 32-bit RW */
     96#define VBOX_PCI_PRIMARY_BUS            0x18    /**<  8-bit ?? - bridge - primary bus number. */
     97#define VBOX_PCI_SECONDARY_BUS          0x19    /**<  8-bit ?? - bridge - secondary bus number. */
     98#define VBOX_PCI_SUBORDINATE_BUS        0x1a    /**<  8-bit ?? - bridge - highest subordinate bus number. (behind the bridge) */
     99#define VBOX_PCI_SEC_LATENCY_TIMER      0x1b    /**<  8-bit ?? - bridge - secondary latency timer. */
     100#define VBOX_PCI_BASE_ADDRESS_3         0x1c    /**< 32-bit RW */
     101#define VBOX_PCI_IO_BASE                0x1c    /**<  8-bit ?? - bridge - I/O range base. */
     102#define VBOX_PCI_IO_LIMIT               0x1d    /**<  8-bit ?? - bridge - I/O range limit. */
     103#define VBOX_PCI_SEC_STATUS             0x1e    /**< 16-bit ?? - bridge - secondary status register. */
     104#define VBOX_PCI_BASE_ADDRESS_4         0x20    /**< 32-bit RW */
     105#define VBOX_PCI_MEMORY_BASE            0x20    /**< 16-bit ?? - bridge - memory range base. */
     106#define VBOX_PCI_MEMORY_LIMIT           0x22    /**< 16-bit ?? - bridge - memory range limit. */
     107#define VBOX_PCI_BASE_ADDRESS_5         0x24    /**< 32-bit RW */
     108#define VBOX_PCI_PREF_MEMORY_BASE       0x24    /**< 16-bit ?? - bridge - Prefetchable memory range base. */
     109#define VBOX_PCI_PREF_MEMORY_LIMIT      0x26    /**< 16-bit ?? - bridge - Prefetchable memory range limit. */
     110#define VBOX_PCI_CARDBUS_CIS            0x28    /**< 32-bit ?? */
     111#define VBOX_PCI_PREF_BASE_UPPER32      0x28    /**< 32-bit ?? - bridge - Prefetchable memory range high base.*/
     112#define VBOX_PCI_PREF_LIMIT_UPPER32     0x2c    /**< 32-bit ?? - bridge - Prefetchable memory range high limit. */
     113#define VBOX_PCI_SUBSYSTEM_VENDOR_ID    0x2c    /**< 16-bit ?? */
     114#define VBOX_PCI_SUBSYSTEM_ID           0x2e    /**< 16-bit ?? */
     115#define VBOX_PCI_ROM_ADDRESS            0x30    /**< 32-bit ?? */
     116#define VBOX_PCI_IO_BASE_UPPER16        0x30    /**< 16-bit ?? - bridge - memory range high base. */
     117#define VBOX_PCI_IO_LIMIT_UPPER16       0x32    /**< 16-bit ?? - bridge - memory range high limit. */
     118#define VBOX_PCI_CAPABILITY_LIST        0x34    /**< 8-bit? ?? */
     119#define VBOX_PCI_ROM_ADDRESS_BR         0x38    /**< 32-bit ?? - bridge */
     120#define VBOX_PCI_INTERRUPT_LINE         0x3c    /**<  8-bit RW - Interrupt line. */
     121#define VBOX_PCI_INTERRUPT_PIN          0x3d    /**<  8-bit RO - Interrupt pin.  */
     122#define VBOX_PCI_MIN_GNT                0x3e    /**<  8-bit ?? */
     123#define VBOX_PCI_BRIDGE_CONTROL         0x3e    /**< 8-bit? ?? - bridge */
     124#define VBOX_PCI_MAX_LAT                0x3f    /**<  8-bit ?? */
     125/** @} */
     126
    78127
    79128/**
     
    150199
    151200
     201/**
     202 * Sets the vendor id config register.
     203 * @param   pPciDev         The PCI device.
     204 * @param   u16VendorId     The vendor id.
     205 */
     206DECLINLINE(void) PCIDevSetVendorId(PPCIDEVICE pPciDev, uint16_t u16VendorId)
     207{
     208    u16VendorId = RT_H2LE_U16(u16VendorId);
     209    pPciDev->config[VBOX_PCI_VENDOR_ID]     = u16VendorId & 0xff;
     210    pPciDev->config[VBOX_PCI_VENDOR_ID + 1] = u16VendorId >> 8;
     211}
     212
     213/**
     214 * Sets the vendor id config register.
     215 * @param   pPciDev         The PCI device.
     216 * @param   u16VendorId     The vendor id.
     217 */
     218DECLINLINE(void) PCIDevSetDeviceId(PPCIDEVICE pPciDev, uint16_t u16DeviceId)
     219{
     220    u16DeviceId = RT_H2LE_U16(u16DeviceId);
     221    pPciDev->config[VBOX_PCI_DEVICE_ID]     = u16DeviceId & 0xff;
     222    pPciDev->config[VBOX_PCI_DEVICE_ID + 1] = u16DeviceId >> 8;
     223}
     224
     225
    152226/** @} */
    153227
  • trunk/src/VBox/Devices/Network/DevPCNet.cpp

    r2291 r2598  
    41244124
    41254125    /* PCI Device */
    4126     pData->PciDev.config[0x00] = 0x22; /* vendor id */
    4127     pData->PciDev.config[0x01] = 0x10;
    4128     pData->PciDev.config[0x02] = 0x00; /* device id */
    4129     pData->PciDev.config[0x03] = 0x20;
     4126    PCIDevSetVendorId(&pData->PciDev, 0x1022);
     4127    PCIDevSetDeviceId(&pData->PciDev, 0x2000);
    41304128    pData->PciDev.config[0x04] = 0x07; /* command */
    41314129    pData->PciDev.config[0x05] = 0x00;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette