My Project
Chargement...
Recherche...
Aucune correspondance
Macros | Fonctions | Variables
Référence du fichier pci.c

: Fonctions de manipulation du bus PCI Plus de détails...

#include <manux/pci.h>
#include <manux/io.h>
#include <manux/memoire.h>
#include <manux/debug.h>
Graphe des dépendances par inclusion de pci.c:

Aller au code source de ce fichier.

Macros

#define PCI_NB_EQUIP_PAR_BUS   8
 
#define PCI_CONFIG_ADDRESS   0xCF8
 Les ports d'E/S de configuration du PCI.
 
#define PCI_CONFIG_DATA   0xCFC
 
#define MANUX_NB_BUS_PCI   1
 : Le nombre de bus
 
#define PCI_ID_VENDEUR   0x00
 
#define PCI_ID_EQUIPEMENT   0x02
 
#define PCI_REVISION   0x08
 
#define PCI_INTERRUPTION   0x3C
 
#define PCI_BAR_0   0x10
 
#define PCI_BAR_1   0x14
 
#define PCI_BAR_2   0x18
 
#define PCI_BAR_3   0x1C
 
#define PCI_BAR_4   0x20
 
#define PCI_BAR_5   0x24
 
#define PCI_BAR_IO   0x01
 
#define PCI_AUCUN_VENDEUR   0xFFFF
 

Fonctions

uint32_t PCILireLong (uint8_t bus, uint8_t slot, uint8_t fonction, uint8_t offset)
 : Lecture d'un mot sur le registre de config du PCI
 
uint16_t PCILireMot (uint8_t bus, uint8_t slot, uint8_t fonction, uint8_t offset)
 
uint8_t PCILireOctet (uint8_t bus, uint8_t slot, uint8_t fonction, uint8_t offset)
 
void PCIEnumerationDesEquipements (void)
 : recherche des équipements PCI disponibles
 
int PCIObtenirProchainEquipement (uint16_t vendeur, uint16_t equipement, int precedent)
 : récuperer l'identifiant du prochain équipement PCI
 
PCIEquipement * PCIEquipementNumero (int n)
 

Variables

int PCINombreEquipements = 0
 : Une structure qui contient la description des équipements PCI détectés
 
PCIEquipement PCIEquipements [MANUX_NB_MAX_EQUIPEMENTS_PCI]
 

Description détaillée

: Fonctions de manipulation du bus PCI

Liens utiles [1] https://wiki.osdev.org/PCI [2] https://en.wikipedia.org/wiki/PCI_configuration_space

Définition dans le fichier pci.c.

Documentation des macros

◆ MANUX_NB_BUS_PCI

#define MANUX_NB_BUS_PCI   1

: Le nombre de bus

Définition à la ligne 33 du fichier pci.c.

◆ PCI_AUCUN_VENDEUR

#define PCI_AUCUN_VENDEUR   0xFFFF

Définition à la ligne 53 du fichier pci.c.

◆ PCI_BAR_0

#define PCI_BAR_0   0x10

Définition à la ligne 42 du fichier pci.c.

◆ PCI_BAR_1

#define PCI_BAR_1   0x14

Définition à la ligne 43 du fichier pci.c.

◆ PCI_BAR_2

#define PCI_BAR_2   0x18

Définition à la ligne 44 du fichier pci.c.

◆ PCI_BAR_3

#define PCI_BAR_3   0x1C

Définition à la ligne 45 du fichier pci.c.

◆ PCI_BAR_4

#define PCI_BAR_4   0x20

Définition à la ligne 46 du fichier pci.c.

◆ PCI_BAR_5

#define PCI_BAR_5   0x24

Définition à la ligne 47 du fichier pci.c.

◆ PCI_BAR_IO

#define PCI_BAR_IO   0x01

Pour identifier les BAR

Définition à la ligne 52 du fichier pci.c.

◆ PCI_CONFIG_ADDRESS

#define PCI_CONFIG_ADDRESS   0xCF8

Les ports d'E/S de configuration du PCI.

Définition à la ligne 24 du fichier pci.c.

◆ PCI_CONFIG_DATA

#define PCI_CONFIG_DATA   0xCFC

Définition à la ligne 27 du fichier pci.c.

◆ PCI_ID_EQUIPEMENT

#define PCI_ID_EQUIPEMENT   0x02

Définition à la ligne 39 du fichier pci.c.

◆ PCI_ID_VENDEUR

#define PCI_ID_VENDEUR   0x00

Les registres standards, voir en particulier [2] (Section Standardized registers)

Définition à la ligne 38 du fichier pci.c.

◆ PCI_INTERRUPTION

#define PCI_INTERRUPTION   0x3C

Définition à la ligne 41 du fichier pci.c.

◆ PCI_NB_EQUIP_PAR_BUS

#define PCI_NB_EQUIP_PAR_BUS   8

Le nombre maximal d'équipements sur un bus PCI

Définition à la ligne 18 du fichier pci.c.

◆ PCI_REVISION

#define PCI_REVISION   0x08

Définition à la ligne 40 du fichier pci.c.

Documentation des fonctions

◆ PCIEnumerationDesEquipements()

void PCIEnumerationDesEquipements ( void  )

: recherche des équipements PCI disponibles

On recherche les équipements sur un seul bus pour le moment

Définition à la ligne 180 du fichier pci.c.

◆ PCIEquipementNumero()

PCIEquipement * PCIEquipementNumero ( int  n)

Obtention d'un pointeur vers une srtucture qui caractérise un équipement PCI. Attention, aucune allocation/copie n'est faite, il ne faut donc pas le modifier ni le détuire.

Définition à la ligne 226 du fichier pci.c.

◆ PCILireLong()

uint32_t PCILireLong ( uint8_t  bus,
uint8_t  slot,
uint8_t  fonction,
uint8_t  offset 
)

: Lecture d'un mot sur le registre de config du PCI

Les registres sont organisés comme décrits par exemple dans https://en.wikipedia.org/wiki/PCI_configuration_space#Standardized_registers

On a donc un offset qui nous dit quel long aller chercher puis éventuellement, via ses 2 bits de poids faible quel mot voire quel octet. Ce denier "niveau d'adressage" est fait par un masque (Et puisque les registres sont alignés sur 32 bits, on lit systématiquement un long à l'offset privé de ces deux bits)

Définition à la ligne 75 du fichier pci.c.

◆ PCILireMot()

uint16_t PCILireMot ( uint8_t  bus,
uint8_t  slot,
uint8_t  fonction,
uint8_t  offset 
)

Définition à la ligne 93 du fichier pci.c.

◆ PCILireOctet()

uint8_t PCILireOctet ( uint8_t  bus,
uint8_t  slot,
uint8_t  fonction,
uint8_t  offset 
)

Définition à la ligne 106 du fichier pci.c.

◆ PCIObtenirProchainEquipement()

int PCIObtenirProchainEquipement ( uint16_t  vendeur,
uint16_t  equipement,
int  precedent 
)

: récuperer l'identifiant du prochain équipement PCI

WARNING remplacer les deux fonctions suivantes par une seule qui renvoie directement un pointeur.

Paramètres
precedent : indice du précédent (-1 pour chercher le premier)
Renvoie
: indice >= 0 si un équipement trouvé, -1 sinon

Définition à la ligne 206 du fichier pci.c.

Documentation des variables

◆ PCIEquipements

Définition à la ligne 61 du fichier pci.c.

◆ PCINombreEquipements

int PCINombreEquipements = 0

: Une structure qui contient la description des équipements PCI détectés

Définition à la ligne 59 du fichier pci.c.