
- every pci device which implements _PRT acpi method is considered to be a pci-to-pci bridge - acpi driver constructs a hierarchy of pci-to-pci bridges - when pci driver identifies a pci-to-pci bridge it tells acpi driver what is the primary and the secondary bus for this device - when pci requests IRQ routing information from acpi, it passes the bus number too to be able to identify the device accurately
45 lines
880 B
C
45 lines
880 B
C
#include <minix/types.h>
|
|
#include <minix/ipc.h>
|
|
|
|
#define ACPI_REQ_GET_IRQ 1
|
|
#define ACPI_REQ_MAP_BRIDGE 2
|
|
|
|
struct acpi_request_hdr {
|
|
endpoint_t m_source; /* message header */
|
|
u32_t request;
|
|
};
|
|
|
|
/*
|
|
* Message to request dev/pin translation to IRQ by acpi using the acpi routing
|
|
* tables
|
|
*/
|
|
struct acpi_get_irq_req {
|
|
struct acpi_request_hdr hdr;
|
|
u32_t bus;
|
|
u32_t dev;
|
|
u32_t pin;
|
|
u32_t __padding[4];
|
|
};
|
|
|
|
/* response from acpi to acpi_get_irq_req */
|
|
struct acpi_get_irq_resp {
|
|
endpoint_t m_source; /* message header */
|
|
i32_t irq;
|
|
u32_t __padding[7];
|
|
};
|
|
|
|
/* message format for pci bridge mappings to acpi */
|
|
struct acpi_map_bridge_req {
|
|
struct acpi_request_hdr hdr;
|
|
u32_t primary_bus;
|
|
u32_t secondary_bus;
|
|
u32_t device;
|
|
u32_t __padding[4];
|
|
};
|
|
|
|
struct acpi_map_bridge_resp {
|
|
endpoint_t m_source; /* message header */
|
|
int err;
|
|
u32_t __padding[7];
|
|
};
|