summaryrefslogtreecommitdiff
path: root/src/pci.h
blob: 6f82f123430d233c8b8f3df5962bdaca17b3c2d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef PCI_H
#define PCI_H

#include "port.h"

typedef struct {
	uint16_t vendor_id;
	uint16_t device_id;
	uint8_t class_id;
	uint8_t subclass_id;
	uint8_t revision_id;
} pci_device_descriptor_t;

typedef struct {
	port32_t command_port;
	port32_t data_port;
} pci_controller_t;

void pci_controller_init( pci_controller_t *controller );

uint16_t pci_controller_read( pci_controller_t *controller, uint16_t bus, uint16_t device, uint16_t function, uint32_t offset );
void pci_controller_write( pci_controller_t *controller, uint16_t bus, uint16_t device, uint16_t function, uint32_t offset, uint32_t data );
void pci_controller_scan( pci_controller_t *controller );

void pci_device_descriptor_init( pci_device_descriptor_t *descriptor, pci_controller_t *controller, uint16_t bus, uint16_t device, uint16_t function );

#endif // PCI_H