pirtable.h revision 164124
1/*
2 * Copyright (c) 2002-2006 Bruce M. Simpson.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
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. All advertising materials mentioning features or use of this software
14 *    must display the following acknowledgement:
15 *        This product includes software developed by Bruce M. Simpson.
16 * 4. Neither the name of Bruce M. Simpson nor the names of
17 *    contributors may be used to endorse or promote products derived
18 *    from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY BRUCE M. SIMPSON AND AFFILIATES
21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 * POSSIBILITY OF SUCH DAMAGE.
31 *
32 * $FreeBSD: head/tools/tools/pirtool/pirtable.h 164124 2006-11-09 11:45:44Z bms $
33 */
34
35/*
36 * All fields and quantities in this file are in little-endian byte order,
37 * unless otherwise specified.
38 */
39
40#ifndef _PIRTABLE_H
41#define _PIRTABLE_H
42
43#define PIR_BASE	0xF0000
44#define PIR_SIZE	0x10000
45#define PIR_OFFSET	16
46
47#define PIR_DEV(x)	(((x) & 0xF8) >> 3)
48#define PIR_FUNC(x)	((x) & 0x7)
49
50typedef struct {
51	uint8_t		bus;		/* bus number of this device */
52	uint8_t		devfunc;	/* only upper 5 device bits valid */
53	uint8_t		inta_link;	/* how INTA is linked */
54	uint16_t	inta_irqs;	/* how INTA may be routed (bitset) */
55	uint8_t		intb_link;
56	uint16_t	intb_irqs;
57	uint8_t		intc_link;
58	uint16_t	intc_irqs;
59	uint8_t		intd_link;
60	uint16_t	intd_irqs;	/* how this pin may be routed */
61	uint8_t		slot;		/* physical slot number on bus,
62					 * slot 0 if motherboard */
63	uint8_t		reserved00;	/* must be zero */
64} __packed pir_entry_t;
65
66typedef struct {
67	uint32_t	signature;	/* $PIR */
68	uint8_t		minor;		/* minor version (0) */
69	uint8_t		major;		/* major version (1) */
70	uint16_t	size;		/* total size of table */
71	uint8_t		bus;		/* Bus number of router */
72	uint8_t		devfunc;	/* Dev/Func of router */
73	uint16_t	excl_irqs;	/* PCI Exclusive IRQs */
74	uint32_t	compatible;	/* Device/Vendor ID of a register
75					 * compatible PCI IRQ router device */
76	uint32_t	miniport_data;	/* Windows specific */
77	uint8_t		reserved00[11]; /* Must be zero */
78	uint8_t		checksum;	/* Inverse mod-256 sum of table bytes */
79	pir_entry_t	entry[1];	/* 1..N device entries */
80} __packed pir_table_t;
81
82#endif /* _PIRTABLE_H */
83