diff options
Diffstat (limited to '')
-rw-r--r-- | src/arch/x86_common/drivers/bochs.c (renamed from src/arch/amd64/drivers/bochs.c) | 3 | ||||
-rw-r--r-- | src/arch/x86_common/drivers/pic.c (renamed from src/arch/amd64/drivers/pic.c) | 4 | ||||
-rw-r--r-- | src/arch/x86_common/drivers/serial.c (renamed from src/arch/amd64/drivers/serial.c) | 3 | ||||
-rw-r--r-- | src/arch/x86_common/include/pic.h (renamed from src/arch/amd64/drivers/pic.h) | 0 | ||||
-rw-r--r-- | src/drivers/pci.c (renamed from src/arch/amd64/drivers/pci.c) | 55 |
5 files changed, 18 insertions, 47 deletions
diff --git a/src/arch/amd64/drivers/bochs.c b/src/arch/x86_common/drivers/bochs.c index b3908f9..8e9ca2b 100644 --- a/src/arch/amd64/drivers/bochs.c +++ b/src/arch/x86_common/drivers/bochs.c @@ -4,8 +4,7 @@ #include <panic.h> #include <pci.h> #include <bochs.h> - -#include "../bindings.h" +#include <bindings.h> #define INDEX 0x1CE #define DATA 0x1CF diff --git a/src/arch/amd64/drivers/pic.c b/src/arch/x86_common/drivers/pic.c index be7716f..d911648 100644 --- a/src/arch/amd64/drivers/pic.c +++ b/src/arch/x86_common/drivers/pic.c @@ -1,5 +1,5 @@ -#include "../bindings.h" -#include "pic.h" +#include <bindings.h> +#include <pic.h> #define PIC1 0x20 /* IO base address for master PIC */ #define PIC2 0xA0 /* IO base address for slave PIC */ diff --git a/src/arch/amd64/drivers/serial.c b/src/arch/x86_common/drivers/serial.c index b9e351e..255f8fc 100644 --- a/src/arch/amd64/drivers/serial.c +++ b/src/arch/x86_common/drivers/serial.c @@ -1,6 +1,5 @@ #include <serial.h> - -#include "../bindings.h" +#include <bindings.h> #define PORT 0x3F8 diff --git a/src/arch/amd64/drivers/pic.h b/src/arch/x86_common/include/pic.h index 2a4670e..2a4670e 100644 --- a/src/arch/amd64/drivers/pic.h +++ b/src/arch/x86_common/include/pic.h diff --git a/src/arch/amd64/drivers/pci.c b/src/drivers/pci.c index 7aa11c8..6e87b86 100644 --- a/src/arch/amd64/drivers/pci.c +++ b/src/drivers/pci.c @@ -1,12 +1,9 @@ -#include <stdint.h> #include <pci.h> -#include <panic.h> #include <lib.h> +#include <panic.h> -#include "../bindings.h" - -#define CONF_ADDR 0xCF8 -#define CONF_DATA 0xCFC +#define PCI_INTERNAL +#include <sys/pci.h> #define TABLE_LEN 16 @@ -20,58 +17,34 @@ struct pci_table_entry { uint8_t revision; }; -static struct pci_table_entry pci_table[TABLE_LEN]; -static size_t pci_table_next = 0; - uint32_t pci_rcfg_d(struct pci_device dev, uint8_t offset) { - uint32_t addr = 0x80000000; - addr |= ((uint32_t)dev.bus) << 16; - addr |= ((uint32_t)dev.device) << 11; - addr |= ((uint32_t)dev.function) << 8; - addr |= offset & 0xFC; - - outl(CONF_ADDR, addr); - uint32_t in = inl(CONF_DATA); - return in; + return pci_sys_rcfg_d(dev, offset); } uint16_t pci_rcfg_w(struct pci_device dev, uint8_t offset) { - uint32_t dword = pci_rcfg_d(dev, offset); - return (uint16_t)((dword >> ((offset & 2) * 8)) & 0xFFFF); + return pci_sys_rcfg_w(dev, offset); } -uint8_t pci_rcfg_b(struct pci_device dev, uint8_t offset) { - uint32_t dword = pci_rcfg_d(dev, offset); - return (uint8_t)((dword >> ((offset & 3) * 8)) & 0xFF); +uint8_t pci_rcfg_b(struct pci_device dev, uint8_t offset) { + return pci_sys_rcfg_b(dev, offset); } void pci_wcfg_d(struct pci_device dev, uint8_t offset, uint32_t dword) { - uint32_t addr = 0x80000000; - addr |= ((uint32_t)dev.bus) << 16; - addr |= ((uint32_t)dev.device) << 11; - addr |= ((uint32_t)dev.function) << 8; - addr |= offset & 0xFC; - - outl(CONF_ADDR, addr); - outl(CONF_DATA, dword); + pci_sys_wcfg_d(dev, offset, dword); } void pci_wcfg_w(struct pci_device dev, uint8_t offset, uint16_t word) { - size_t shift = (offset & 2) * 8; - uint32_t dword = pci_rcfg_d(dev, offset); - dword &= ~(0xFFFF << shift); - dword |= word << shift; - pci_wcfg_d(dev, offset, dword); + pci_sys_wcfg_w(dev, offset, word); } void pci_wcfg_b(struct pci_device dev, uint8_t offset, uint8_t byte) { - size_t shift = (offset & 3) * 8; - uint32_t dword = pci_rcfg_d(dev, offset); - dword &= ~(0xFF << shift); - dword |= byte << shift; - pci_wcfg_d(dev, offset, dword); + pci_sys_wcfg_b(dev, offset, byte); } +static struct pci_table_entry pci_table[TABLE_LEN]; +static size_t pci_table_next = 0; + + static void print_device(struct pci_table_entry *entry) { kprintf( "BUS: %#-4x DEV: %#-4x FUNC: %#-4x ID: %04x:%04x CLASS: %02x:%02x:%02x REV: %#02x\n", |