acpi_pcibvar.h revision 133500
1/*- 2 * Copyright (c) 2000 Michael Smith 3 * Copyright (c) 2000 BSDi 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * 27 * $FreeBSD: head/sys/dev/acpica/acpi_pcibvar.h 133500 2004-08-11 14:52:50Z njl $ 28 */ 29 30#ifndef _ACPI_PCIBVAR_H_ 31#define _ACPI_PCIBVAR_H_ 32 33int acpi_pcib_attach(device_t bus, ACPI_BUFFER *prt, int busno); 34int acpi_pcib_route_interrupt(device_t pcib, device_t dev, int pin); 35int acpi_pcib_resume(device_t dev); 36 37#define MAX_POSSIBLE_INTERRUPTS 16 38#define MAX_ISA_INTERRUPTS 16 39#define MAX_ACPI_INTERRUPTS 255 40 41struct acpi_pci_link_entry { 42 TAILQ_ENTRY(acpi_pci_link_entry) links; 43 ACPI_HANDLE handle; 44 UINT8 current_irq; 45 UINT8 initial_irq; 46 ACPI_RESOURCE possible_resources; 47 UINT8 number_of_interrupts; 48 UINT8 interrupts[MAX_POSSIBLE_INTERRUPTS]; 49 UINT8 sorted_irq[MAX_POSSIBLE_INTERRUPTS]; 50 int references; 51 int priority; 52 int flags; 53#define ACPI_LINK_NONE 0 54#define ACPI_LINK_ROUTED (1 << 0) 55}; 56 57struct acpi_prt_entry { 58 TAILQ_ENTRY(acpi_prt_entry) links; 59 device_t pcidev; 60 int busno; 61 ACPI_PCI_ROUTING_TABLE prt; 62 ACPI_HANDLE prt_source; 63 struct acpi_pci_link_entry *pci_link; 64}; 65 66int acpi_pci_link_config(device_t pcib, ACPI_BUFFER *prt, int busno); 67int acpi_pci_link_resume(device_t pcib); 68struct acpi_prt_entry *acpi_pci_find_prt(device_t pcibdev, device_t dev, 69 int pin); 70int acpi_pci_link_route(device_t dev, struct acpi_prt_entry *prt); 71 72#endif 73