Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
pci.h
Go to the documentation of this file.
1#ifndef __HAL__PCI__PCI_H_
2#define __HAL__PCI__PCI_H_
3
4#include <type.h>
5
6#define MAX_PCI_BUS 256
7
14
15#define PCI_MAX_SEGMENTS 16
16
21
31
37
38void pci_scan();
39
43uint8_t pci_read8(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off);
44void pci_write32(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off,
45 uint32_t val);
46void pci_write64(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off,
47 uint64_t val);
48void pci_write16(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off,
49 uint16_t val);
50void pci_write8(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off,
51 uint8_t val);
52
57
58void register_segment(uint16_t seg_id, uint8_t start, uint8_t end,
61#endif // __HAL__PCI__PCI_H_
void * ops
Definition dev.h:2
elf_section_map uintptr_t base
Definition elf.h:296
void legacy_write32(uintptr_t base, uint8_t bus, uint8_t dev, uint8_t func, uint16_t offset, uint32_t val)
Definition pci.c:38
void pci_write8(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off, uint8_t val)
struct pci_segment pci_segment_t
void pci_scan()
Definition scan.c:425
uint64_t pci_read64(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off)
Definition scan.c:56
PCI_HEADER_TYPE
Definition pci.h:32
@ PCI_HEADER_TYPE_PCI_TO_PCI_BRIDGE
Definition pci.h:34
@ PCI_HEADER_TYPE_STANDARD_DEVICE
Definition pci.h:33
@ PCI_HEADER_TYPE_CARDBUS_BRIDGE
Definition pci.h:35
void pci_write16(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off, uint16_t val)
Definition scan.c:88
void pci_write32(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off, uint32_t val)
Definition scan.c:72
uint16_t pci_read16(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off)
Definition scan.c:62
struct pci_access_ops pci_access_ops_t
PCI_SEGMENT_TYPE
Definition pci.h:17
@ PCI_SEGMENT_LEGACY
Definition pci.h:18
@ PCI_SEGMENT_PCIE
Definition pci.h:19
void pci_write64(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off, uint64_t val)
Definition scan.c:80
uint32_t legacy_read32(uintptr_t base, uint8_t bus, uint8_t dev, uint8_t func, uint16_t offset)
Definition pci.c:32
uint8_t pci_read8(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off)
Definition scan.c:67
void register_segment(uint16_t seg_id, uint8_t start, uint8_t end, uintptr_t vbase, pci_access_ops_t *ops, PCI_SEGMENT_TYPE type)
Definition scan.c:26
uint32_t pci_read32(uint8_t bus, uint8_t dev, uint8_t func, uint16_t off)
Definition scan.c:49
uint32_t(* read32)(uintptr_t base, uint8_t bus, uint8_t dev, uint8_t func, uint16_t offset)
Definition pci.h:9
void(* write32)(uintptr_t base, uint8_t bus, uint8_t dev, uint8_t func, uint16_t offset, uint32_t val)
Definition pci.h:11
boolean_t valid
Definition pci.h:28
pci_access_ops_t * ops
Definition pci.h:27
uint8_t bus_end
Definition pci.h:25
PCI_SEGMENT_TYPE type
Definition pci.h:29
uintptr_t vbase
Definition pci.h:26
uint8_t bus_start
Definition pci.h:24
uint16_t segment_id
Definition pci.h:23
unsigned short uint16_t
Definition type.h:13
unsigned int uint32_t
Definition type.h:19
uint8_t boolean_t
Definition type.h:89
unsigned long uintptr_t
Definition type.h:73
unsigned long uint64_t
Definition type.h:25
unsigned char uint8_t
Definition type.h:7
uint32_t offset
Definition virtio.h:6
uint8_t type
Definition vnode.h:2