Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
scan.c File Reference
#include "./pci.h"
#include "hal/cpu/paging.h"
#include <type.h>
#include "memory/kalloc.h"
#include "memory/vm_manager.h"
#include <ioforge/ioforge.h>
#include <ioforge/ioforge_pci.h>
#include <libk/io.h>
#include <libk/serial.h>
#include <str.h>
#include <memory/memory_utils.h>

Go to the source code of this file.

Functions

static pci_segment_tfind_segment (uint8_t bus)
 
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)
 
uint32_t pci_read32 (uint8_t bus, uint8_t dev, uint8_t func, uint16_t off)
 
uint64_t pci_read64 (uint8_t bus, uint8_t dev, uint8_t func, uint16_t off)
 
uint16_t pci_read16 (uint8_t bus, uint8_t dev, uint8_t func, uint16_t off)
 
uint8_t pci_read8 (uint8_t bus, uint8_t dev, uint8_t func, uint16_t off)
 
void pci_write32 (uint8_t bus, uint8_t dev, uint8_t func, uint16_t off, uint32_t val)
 
void pci_write64 (uint8_t bus, uint8_t dev, uint8_t func, uint16_t off, uint64_t val)
 
void pci_write16 (uint8_t bus, uint8_t dev, uint8_t func, uint16_t off, uint16_t val)
 
static void vxPCIGatheringBusInfo (uint8_t bus, uint8_t device, uint8_t func)
 
static void pci_check_bus (uint8_t bus)
 
static void pci_check_func (uint8_t bus, uint8_t dev, uint8_t func)
 
static void pci_scan_bus (pci_segment_t *s)
 
void pci_scan ()
 

Variables

static pci_segment_t segments [16]
 
static size_t segment_count = 0
 
static boolean_t has_ecam = 0
 
static pci_access_ops_t legacy_ops
 

Function Documentation

◆ find_segment()

static pci_segment_t * find_segment ( uint8_t bus)
static

Definition at line 17 of file scan.c.

References pci_segment::bus_start, NULL, segment_count, segments, and pci_segment::valid.

Referenced by pci_read32(), and pci_write32().

◆ pci_check_bus()

static void pci_check_bus ( uint8_t bus)
static

Definition at line 384 of file scan.c.

References header, LOG_INFO, pci_check_func(), and pci_read32().

Referenced by pci_check_func(), and pci_scan_bus().

◆ pci_check_func()

static void pci_check_func ( uint8_t bus,
uint8_t dev,
uint8_t func )
static

Definition at line 371 of file scan.c.

References pci_check_bus(), pci_read8(), serial_trace, and vxPCIGatheringBusInfo().

Referenced by pci_check_bus().

◆ pci_read16()

uint16_t pci_read16 ( uint8_t bus,
uint8_t dev,
uint8_t func,
uint16_t off )

Definition at line 62 of file scan.c.

References pci_read32().

Referenced by __attribute__(), pci_scan_bus(), and vxPCIGatheringBusInfo().

◆ pci_read32()

◆ pci_read64()

uint64_t pci_read64 ( uint8_t bus,
uint8_t dev,
uint8_t func,
uint16_t off )

Definition at line 56 of file scan.c.

References pci_read32().

◆ pci_read8()

uint8_t pci_read8 ( uint8_t bus,
uint8_t dev,
uint8_t func,
uint16_t off )

◆ pci_scan()

◆ pci_scan_bus()

static void pci_scan_bus ( pci_segment_t * s)
static

Definition at line 410 of file scan.c.

References pci_segment::bus_start, pci_check_bus(), pci_read16(), and pci_read8().

Referenced by pci_scan().

◆ pci_write16()

void pci_write16 ( uint8_t bus,
uint8_t dev,
uint8_t func,
uint16_t off,
uint16_t val )

Definition at line 88 of file scan.c.

References pci_read32(), and pci_write32().

Referenced by __attribute__(), and vxPCIGatheringBusInfo().

◆ pci_write32()

void pci_write32 ( uint8_t bus,
uint8_t dev,
uint8_t func,
uint16_t off,
uint32_t val )

◆ pci_write64()

void pci_write64 ( uint8_t bus,
uint8_t dev,
uint8_t func,
uint16_t off,
uint64_t val )

Definition at line 80 of file scan.c.

References pci_write32().

◆ register_segment()

◆ vxPCIGatheringBusInfo()

Variable Documentation

◆ has_ecam

boolean_t has_ecam = 0
static

Definition at line 15 of file scan.c.

◆ legacy_ops

pci_access_ops_t legacy_ops
static
Initial value:
= {
.read32 = legacy_read32,
.write32 = legacy_write32,
}
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
uint32_t legacy_read32(uintptr_t base, uint8_t bus, uint8_t dev, uint8_t func, uint16_t offset)
Definition pci.c:32

Definition at line 42 of file scan.c.

Referenced by pci_scan().

◆ segment_count

size_t segment_count = 0
static

Definition at line 14 of file scan.c.

Referenced by find_segment(), pci_scan(), and register_segment().

◆ segments

pci_segment_t segments[16]
static

Definition at line 13 of file scan.c.

Referenced by find_segment(), pci_read32(), pci_scan(), pci_write32(), and register_segment().