2 * Copyright (c) 2002-2006 Bruce M. Simpson.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of Bruce M. Simpson nor the names of
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY BRUCE M. SIMPSON AND AFFILIATES
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
33 * All fields and quantities in this file are in little-endian byte order,
34 * unless otherwise specified.
40 #define PIR_BASE 0xF0000
41 #define PIR_SIZE 0x10000
44 #define PIR_DEV(x) (((x) & 0xF8) >> 3)
45 #define PIR_FUNC(x) ((x) & 0x7)
48 uint8_t bus; /* bus number of this device */
49 uint8_t devfunc; /* only upper 5 device bits valid */
50 uint8_t inta_link; /* how INTA is linked */
51 uint16_t inta_irqs; /* how INTA may be routed (bitset) */
57 uint16_t intd_irqs; /* how this pin may be routed */
58 uint8_t slot; /* physical slot number on bus,
59 * slot 0 if motherboard */
60 uint8_t reserved00; /* must be zero */
61 } __packed pir_entry_t;
64 uint32_t signature; /* $PIR */
65 uint8_t minor; /* minor version (0) */
66 uint8_t major; /* major version (1) */
67 uint16_t size; /* total size of table */
68 uint8_t bus; /* Bus number of router */
69 uint8_t devfunc; /* Dev/Func of router */
70 uint16_t excl_irqs; /* PCI Exclusive IRQs */
71 uint32_t compatible; /* Device/Vendor ID of a register
72 * compatible PCI IRQ router device */
73 uint32_t miniport_data; /* Windows specific */
74 uint8_t reserved00[11]; /* Must be zero */
75 uint8_t checksum; /* Inverse mod-256 sum of table bytes */
76 pir_entry_t entry[1]; /* 1..N device entries */
77 } __packed pir_table_t;
79 #endif /* _PIRTABLE_H */