X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Finclude%2Fdrv_pci.h;h=33c4a3ecfc41c6901416d5b4b00ebaaceb8f4a24;hb=5f2024e5977e0cca0993a20dad5ab794c94d5711;hp=b6a1b0724875602dfceaddca32a01649a0afb459;hpb=8bc40333b1401d7616b225945fee53d972c2f418;p=tpg%2Facess2.git diff --git a/Kernel/include/drv_pci.h b/Kernel/include/drv_pci.h index b6a1b072..33c4a3ec 100644 --- a/Kernel/include/drv_pci.h +++ b/Kernel/include/drv_pci.h @@ -1,12 +1,16 @@ -/* - * Acess 2 - * PCI Bus Driver - * drv_pci.h +/** + * \file drv_pci.h + * \brief PCI Bus Driver + * \author John Hodge (thePowersGang) */ #ifndef _DRV_PCI_H #define _DRV_PCI_H -enum e_PciClasses { +/** + * \brief PCI Class Codes + */ +enum ePCIClasses +{ PCI_CLASS_PRE20 = 0x00, PCI_CLASS_STORAGE, PCI_CLASS_NETWORK, @@ -22,20 +26,36 @@ enum e_PciClasses { PCI_CLASS_SERIALBUS, PCI_CLASS_MISC = 0xFF }; -enum e_PciOverClasses { - PCI_OC_PCIBRIDGE = 0x0604, - PCI_OC_SCSI = 0x0100 + +enum ePCIOverClasses +{ + PCI_OC_PCIBRIDGE = 0x060400, + PCI_OC_SCSI = 0x010000 }; +typedef int tPCIDev; + +/** + * \brief Count PCI Devices + * + * Counts the number of devices with specified Vendor and Device IDs + */ +extern int PCI_CountDevices(Uint16 VendorID, Uint16 DeviceID); +extern tPCIDev PCI_GetDevice(Uint16 VendorID, Uint16 DeviceID, int index); +/** + * \param ClassCode (Class:SubClass:PI) + */ +extern tPCIDev PCI_GetDeviceByClass(Uint32 ClassCode, Uint32 Mask, tPCIDev prev); + +extern int PCI_GetDeviceInfo(tPCIDev id, Uint16 *Vendor, Uint16 *Device, Uint32 *Class); +extern int PCI_GetDeviceVersion(tPCIDev id, Uint8 *Revision); +extern int PCI_GetDeviceSubsys(tPCIDev id, Uint16 *SubsystemVendor, Uint16 *SubsystemID); + +extern Uint32 PCI_ConfigRead(tPCIDev id, int Offset, int Size); +extern void PCI_ConfigWrite(tPCIDev id, int Offset, int Size, Uint32 Value); -extern int PCI_CountDevices(Uint16 vendor, Uint16 device, Uint16 fcn); -extern int PCI_GetDevice(Uint16 vendor, Uint16 device, Uint16 fcn, int idx); -extern int PCI_GetDeviceByClass(Uint16 class, Uint16 mask, int prev); -extern Uint8 PCI_GetIRQ(int id); -extern Uint32 PCI_GetBAR0(int id); -extern Uint32 PCI_GetBAR1(int id); -extern Uint32 PCI_GetBAR3(int id); -extern Uint32 PCI_GetBAR4(int id); -extern Uint32 PCI_GetBAR5(int id); +extern Uint8 PCI_GetIRQ(tPCIDev id); +extern Uint32 PCI_GetBAR(tPCIDev id, int BAR); +//extern Uint16 PCI_AssignPort(tPCIDev id, int bar, int count); #endif