summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/pcibridge.h
blob: c57a81067f85c48e1425f0414ff1be13ecc326f5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef _IPXE_PCIBRIDGE_H
#define _IPXE_PCIBRIDGE_H

/** @file
 *
 * PCI-to-PCI bridge
 *
 */

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );

#include <stdint.h>
#include <ipxe/list.h>
#include <ipxe/pci.h>

/** A PCI-to-PCI bridge */
struct pci_bridge {
	/** PCI device */
	struct pci_device *pci;
	/** Bridge numbers */
	union {
		/** Raw dword */
		uint32_t buses;
		struct {
			/** Primary bus */
			uint8_t primary;
			/** Secondary bus */
			uint8_t secondary;
			/** Subordinate bus */
			uint8_t subordinate;
		} __attribute__ (( packed ));
	};
	/** Memory base */
	uint32_t membase;
	/** Memory limit */
	uint32_t memlimit;
	/** List of bridges */
	struct list_head list;
};

extern struct pci_bridge * pcibridge_find ( struct pci_device *pci );

#endif /* _IPXE_PCIBRIDGE_H */