~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/ipxe/src/include/ipxe/pci_io.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _IPXE_PCI_IO_H
 
2
#define _IPXE_PCI_IO_H
 
3
 
 
4
/** @file
 
5
 *
 
6
 * PCI I/O API
 
7
 *
 
8
 */
 
9
 
 
10
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 
11
 
 
12
#include <stdint.h>
 
13
#include <ipxe/api.h>
 
14
#include <config/ioapi.h>
 
15
 
 
16
/**
 
17
 * Calculate static inline PCI I/O API function name
 
18
 *
 
19
 * @v _prefix           Subsystem prefix
 
20
 * @v _api_func         API function
 
21
 * @ret _subsys_func    Subsystem API function
 
22
 */
 
23
#define PCIAPI_INLINE( _subsys, _api_func ) \
 
24
        SINGLE_API_INLINE ( PCIAPI_PREFIX_ ## _subsys, _api_func )
 
25
 
 
26
/**
 
27
 * Provide a PCI I/O API implementation
 
28
 *
 
29
 * @v _prefix           Subsystem prefix
 
30
 * @v _api_func         API function
 
31
 * @v _func             Implementing function
 
32
 */
 
33
#define PROVIDE_PCIAPI( _subsys, _api_func, _func ) \
 
34
        PROVIDE_SINGLE_API ( PCIAPI_PREFIX_ ## _subsys, _api_func, _func )
 
35
 
 
36
/**
 
37
 * Provide a static inline PCI I/O API implementation
 
38
 *
 
39
 * @v _prefix           Subsystem prefix
 
40
 * @v _api_func         API function
 
41
 */
 
42
#define PROVIDE_PCIAPI_INLINE( _subsys, _api_func ) \
 
43
        PROVIDE_SINGLE_API_INLINE ( PCIAPI_PREFIX_ ## _subsys, _api_func )
 
44
 
 
45
/* Include all architecture-independent I/O API headers */
 
46
#include <ipxe/efi/efi_pci_api.h>
 
47
#include <ipxe/linux/linux_pci.h>
 
48
 
 
49
/* Include all architecture-dependent I/O API headers */
 
50
#include <bits/pci_io.h>
 
51
 
 
52
/**
 
53
 * Determine number of PCI buses within system
 
54
 *
 
55
 * @ret num_bus         Number of buses
 
56
 */
 
57
int pci_num_bus ( void );
 
58
 
 
59
/**
 
60
 * Read byte from PCI configuration space
 
61
 *
 
62
 * @v pci       PCI device
 
63
 * @v where     Location within PCI configuration space
 
64
 * @v value     Value read
 
65
 * @ret rc      Return status code
 
66
 */
 
67
int pci_read_config_byte ( struct pci_device *pci, unsigned int where,
 
68
                           uint8_t *value );
 
69
 
 
70
/**
 
71
 * Read 16-bit word from PCI configuration space
 
72
 *
 
73
 * @v pci       PCI device
 
74
 * @v where     Location within PCI configuration space
 
75
 * @v value     Value read
 
76
 * @ret rc      Return status code
 
77
 */
 
78
int pci_read_config_word ( struct pci_device *pci, unsigned int where,
 
79
                           uint16_t *value );
 
80
 
 
81
/**
 
82
 * Read 32-bit dword from PCI configuration space
 
83
 *
 
84
 * @v pci       PCI device
 
85
 * @v where     Location within PCI configuration space
 
86
 * @v value     Value read
 
87
 * @ret rc      Return status code
 
88
 */
 
89
int pci_read_config_dword ( struct pci_device *pci, unsigned int where,
 
90
                            uint32_t *value );
 
91
 
 
92
/**
 
93
 * Write byte to PCI configuration space
 
94
 *
 
95
 * @v pci       PCI device
 
96
 * @v where     Location within PCI configuration space
 
97
 * @v value     Value to be written
 
98
 * @ret rc      Return status code
 
99
 */
 
100
int pci_write_config_byte ( struct pci_device *pci, unsigned int where,
 
101
                            uint8_t value );
 
102
 
 
103
/**
 
104
 * Write 16-bit word to PCI configuration space
 
105
 *
 
106
 * @v pci       PCI device
 
107
 * @v where     Location within PCI configuration space
 
108
 * @v value     Value to be written
 
109
 * @ret rc      Return status code
 
110
 */
 
111
int pci_write_config_word ( struct pci_device *pci, unsigned int where,
 
112
                            uint16_t value );
 
113
 
 
114
/**
 
115
 * Write 32-bit dword to PCI configuration space
 
116
 *
 
117
 * @v pci       PCI device
 
118
 * @v where     Location within PCI configuration space
 
119
 * @v value     Value to be written
 
120
 * @ret rc      Return status code
 
121
 */
 
122
int pci_write_config_dword ( struct pci_device *pci, unsigned int where,
 
123
                             uint32_t value );
 
124
 
 
125
#endif /* _IPXE_PCI_IO_H */