#include <stdint.h>
#include <sys/kassert.h>
#include <sys/pci.h>
#include <machine/amd64.h>
#include <machine/amd64op.h>
Go to the source code of this file.
|
static uint32_t | PCIGetAddr (uint32_t bus, uint32_t slot, uint32_t func, uint32_t reg) |
|
uint8_t | PCICfgRead8 (uint32_t bus, uint32_t slot, uint32_t func, uint32_t reg) |
|
uint16_t | PCICfgRead16 (uint32_t bus, uint32_t slot, uint32_t func, uint32_t reg) |
|
uint32_t | PCICfgRead32 (uint32_t bus, uint32_t slot, uint32_t func, uint32_t reg) |
|
void | PCICfgWrite8 (uint32_t bus, uint32_t slot, uint32_t func, uint32_t reg, uint8_t data) |
|
void | PCICfgWrite16 (uint32_t bus, uint32_t slot, uint32_t func, uint32_t reg, uint16_t data) |
|
void | PCICfgWrite32 (uint32_t bus, uint32_t slot, uint32_t func, uint32_t reg, uint32_t data) |
|
◆ PCI_PORT_ADDR
#define PCI_PORT_ADDR 0xCF8 |
Definition at line 10 of file pci.c.
◆ PCI_PORT_DATABASE
#define PCI_PORT_DATABASE 0xCFC |
Definition at line 11 of file pci.c.
◆ PCICfgRead16()
Definition at line 31 of file pci.c.
32{
35
37
40}
#define PCI_PORT_DATABASE
static uint32_t PCIGetAddr(uint32_t bus, uint32_t slot, uint32_t func, uint32_t reg)
static INLINE uint16_t inw(uint16_t port)
static INLINE void outl(uint16_t port, uint32_t data)
◆ PCICfgRead32()
Definition at line 43 of file pci.c.
44{
47
49
52}
static INLINE uint32_t inl(uint16_t port)
◆ PCICfgRead8()
Definition at line 21 of file pci.c.
22{
25
28}
static INLINE uint8_t inb(uint16_t port)
◆ PCICfgWrite16()
Definition at line 66 of file pci.c.
68{
71
74}
static INLINE void outw(uint16_t port, uint16_t data)
◆ PCICfgWrite32()
Definition at line 77 of file pci.c.
◆ PCICfgWrite8()
Definition at line 55 of file pci.c.
57{
60
63}
static INLINE void outb(uint16_t port, uint8_t data)
◆ PCIGetAddr()
Definition at line 14 of file pci.c.
15{
16 ASSERT(bus < 256 && slot < 64 && func < 8 && reg < 256);
17 return (1 << 31) | (bus << 16) | (slot << 11) | (func << 8) | (reg & 0x00fc);
18}