summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica/acpi_pcibvar.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/acpica/acpi_pcibvar.h')
-rw-r--r--sys/dev/acpica/acpi_pcibvar.h39
1 files changed, 35 insertions, 4 deletions
diff --git a/sys/dev/acpica/acpi_pcibvar.h b/sys/dev/acpica/acpi_pcibvar.h
index a7a5f20..2c59fae 100644
--- a/sys/dev/acpica/acpi_pcibvar.h
+++ b/sys/dev/acpica/acpi_pcibvar.h
@@ -31,11 +31,42 @@
#define _ACPI_PCIBVAR_H_
int acpi_pcib_attach(device_t bus, ACPI_BUFFER *prt, int busno);
-int acpi_pcib_route_interrupt(device_t pcib, device_t dev, int pin,
- ACPI_BUFFER *ptrbuf);
-int acpi_pcib_resume(device_t bus, ACPI_BUFFER *prt, int busno);
+int acpi_pcib_route_interrupt(device_t pcib, device_t dev, int pin);
+int acpi_pcib_resume(device_t dev);
+
+#define MAX_POSSIBLE_INTERRUPTS 16
+#define MAX_ISA_INTERRUPTS 16
+#define MAX_ACPI_INTERRUPTS 255
+
+struct acpi_pci_link_entry {
+ TAILQ_ENTRY(acpi_pci_link_entry) links;
+ ACPI_HANDLE handle;
+ UINT8 current_irq;
+ UINT8 initial_irq;
+ ACPI_RESOURCE possible_resources;
+ UINT8 number_of_interrupts;
+ UINT8 interrupts[MAX_POSSIBLE_INTERRUPTS];
+ UINT8 sorted_irq[MAX_POSSIBLE_INTERRUPTS];
+ int references;
+ int priority;
+ int flags;
+#define ACPI_LINK_NONE 0
+#define ACPI_LINK_ROUTED (1 << 0)
+};
+
+struct acpi_prt_entry {
+ TAILQ_ENTRY(acpi_prt_entry) links;
+ device_t pcidev;
+ int busno;
+ ACPI_PCI_ROUTING_TABLE prt;
+ ACPI_HANDLE prt_source;
+ struct acpi_pci_link_entry *pci_link;
+};
int acpi_pci_link_config(device_t pcib, ACPI_BUFFER *prt, int busno);
-int acpi_pci_link_resume(device_t pcib, ACPI_BUFFER *prt, int busno);
+int acpi_pci_link_resume(device_t pcib);
+struct acpi_prt_entry *acpi_pci_find_prt(device_t pcibdev, device_t dev,
+ int pin);
+int acpi_pci_link_route(device_t dev, struct acpi_prt_entry *prt);
#endif
OpenPOWER on IntegriCloud