Espacio de configuración PCI
El mapa estándar del encabezado del espacio de configuración PCI (Type 0 Header), especificando el desplazamiento (offset) y tamaño de los registros principales en los primeros 64 bytes:
Mapa del Espacio de Configuración PCI (Header Type 0)
Offset (Hex) |
Tamaño |
Registro PCI |
Descripción |
|
2 Bytes |
|
Identificador del fabricante de la tarjeta |
|
2 Bytes |
|
Identificador del dispositivo PCI |
|
2 Bytes |
|
Registro de control de funciones de E/S y MMIO |
|
2 Bytes |
|
Registro de estado de eventos del bus PCI |
|
1 Byte |
|
Revisión de silicio del dispositivo |
|
3 Bytes |
|
Código de clase de dispositivo y programación de interfaz |
|
1 Byte |
|
Tamaño de la línea de caché del sistema |
|
1 Byte |
|
Temporizador de latencia del bus en ciclos de reloj |
|
1 Byte |
|
Tipo de cabecera (0x00 para endpoint, 0x01 para puente PCI-to-PCI) |
|
1 Byte |
|
Registro de autocomprobación de encendido (Built-In Self Test) |
|
24 Bytes |
|
Registros BAR (Mapeo de memoria MMIO y direcciones I/O) |
|
2 Bytes |
|
Identificador del ensamblador de la tarjeta (OEM) |
|
2 Bytes |
|
Identificador del modelo específico asignado por el ensamblador |
|
4 Bytes |
|
Base de la ROM de expansión (Option ROM) |
|
1 Byte |
|
Puntero a la lista enlazada de capacidades extendidas (MSI, PCIe, Power Mgmt) |
|
1 Byte |
|
Línea del controlador de interrupción IRQ asignada |
|
1 Byte |
|
Pin de interrupción física (INTA#, INTB#, INTC#, INTD#) |
Relación con la lógica actual de hwbus_pci_config_read()
Actualmente, el callback read expone únicamente los primeros 4 bytes del mapa (0x00 a 0x03):
En *f_pos == 0: Lee PCI_VENDOR_ID (2 Bytes en 0x00).
En *f_pos == 2: Lee PCI_DEVICE_ID (2 Bytes en 0x02).
Si en el futuro se condsidera ampliar el alcance del driver de inspección para recorrer más registros de la tabla (por ejemplo, leer PCI_COMMAND o los BARs), la estructura de lectura basada en desplazamientos de f_pos se podrá mapear directamente contra estos offsets estandarizados del bus PCI.