37#define ACPI_ADDRESS_TYPE_MEM 0x00
40#define ACPI_ADDRESS_TYPE_IO 0x01
43#define ACPI_ADDRESS_TYPE_BUS 0x02
52#define ACPI_SMALL_LEN_MASK 0x03
55#define ACPI_END_RESOURCE 0x78
74#define ACPI_LARGE 0x80
77#define ACPI_QWORD_ADDRESS_SPACE_RESOURCE 0x8a
226#define ACPI_SIGNATURE( a, b, c, d ) \
227 ( ( (a) << 0 ) | ( (b) << 8 ) | ( (c) << 16 ) | ( (d) << 24 ) )
230#define RSDP_SIGNATURE { 'R', 'S', 'D', ' ', 'P', 'T', 'R', ' ' }
247#define RSDT_SIGNATURE ACPI_SIGNATURE ( 'R', 'S', 'D', 'T' )
258#define FADT_SIGNATURE ACPI_SIGNATURE ( 'F', 'A', 'C', 'P' )
281#define ACPI_PM1_CNT 0
282#define ACPI_PM1_CNT_SLP_TYP(x) ( (x) << 10 )
283#define ACPI_PM1_CNT_SLP_EN ( 1 << 13 )
289#define DSDT_SIGNATURE ACPI_SIGNATURE ( 'D', 'S', 'D', 'T' )
292#define SSDT_SIGNATURE ACPI_SIGNATURE ( 'S', 'S', 'D', 'T' )
341#define ACPI_MODELS __table ( struct acpi_model, "acpi_models" )
344#define __acpi_model __table_entry ( ACPI_MODELS, 01 )
353#define ACPI_INLINE( _subsys, _api_func ) \
354 SINGLE_API_INLINE ( ACPI_PREFIX_ ## _subsys, _api_func )
363#define PROVIDE_ACPI( _subsys, _api_func, _func ) \
364 PROVIDE_SINGLE_API ( ACPI_PREFIX_ ## _subsys, _api_func, _func )
372#define PROVIDE_ACPI_INLINE( _subsys, _api_func ) \
373 PROVIDE_SINGLE_API_INLINE ( ACPI_PREFIX_ ## _subsys, _api_func )
376 unsigned int index );
401 unsigned int index );
405#define acpi_describe_TYPE( object_type ) \
406 typeof ( struct acpi_descriptor * ( object_type ) )
409 unsigned int index );
413 unsigned int index );
415 int ( * extract ) (
const struct acpi_header *zsdt,
u8 signature
CPU signature.
unsigned long long uint64_t
x86-specific ACPI API implementations
uint16_t offset
Offset to command line.
union @104331263140136355135267063077374276003064103115 u
static EFI_ACPI_TABLE_PROTOCOL * acpi
ACPI table protocol protocol.
uint8_t data[48]
Additional event data.
uint64_t address
Base address.
struct ena_llq_option desc
Descriptor counts.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
#define le16_to_cpu(value)
#define cpu_to_le32(value)
static const char * acpi_name(uint32_t signature)
Transcribe ACPI table signature (for debugging)
const struct acpi_header * acpi_table(uint32_t signature, unsigned int index)
Locate ACPI table.
static size_t acpi_small_len(struct acpi_small_resource *res)
Get length of ACPI small resource descriptor.
const struct acpi_rsdt * acpi_find_rsdt(void)
Locate ACPI root system description table.
void acpi_del(struct acpi_descriptor *desc)
Remove ACPI descriptor.
int acpi_install(int(*install)(struct acpi_header *acpi))
Install ACPI tables.
void acpi_add(struct acpi_descriptor *desc)
Add ACPI descriptor.
void acpi_fix_checksum(struct acpi_header *acpi)
Fix up ACPI table checksum.
static unsigned int acpi_resource_tag(union acpi_resource *res)
Get ACPI resource tag.
const struct acpi_header * acpi_find_via_rsdt(uint32_t signature, unsigned int index)
Locate ACPI table via RSDT.
#define ACPI_LARGE
ACPI large resource flag.
#define ACPI_SMALL_LEN_MASK
ACPI small resource length mask.
struct acpi_descriptor * acpi_describe(struct interface *interface)
Get object's ACPI descriptor.
static size_t acpi_resource_len(union acpi_resource *res)
Get length of ACPI resource descriptor.
static void acpi_init(struct acpi_descriptor *desc, struct acpi_model *model, struct refcnt *refcnt)
Initialise ACPI descriptor.
int acpi_extract(uint32_t signature, void *data, int(*extract)(const struct acpi_header *zsdt, size_t len, size_t offset, void *data))
Extract value from DSDT/SSDT.
static size_t acpi_large_len(struct acpi_large_resource *res)
Get length of ACPI large resource descriptor.
const struct acpi_header * acpi_find(uint32_t signature, unsigned int index)
Locate ACPI table.
static union acpi_resource * acpi_resource_next(union acpi_resource *res)
Get next ACPI resource descriptor.
void * acpi_ioremap(struct acpi_address *address, size_t len)
Map an ACPI generic address.
#define INIT_LIST_HEAD(list)
Initialise a list head.
Standard do-nothing ACPI interface.
An ACPI generic address structure.
uint8_t type
Address space type.
uint8_t offset
Register bit offset.
uint8_t access
Access size.
uint8_t width
Register bit width.
An ACPI descriptor (used to construct ACPI tables)
struct refcnt * refcnt
Reference count of containing object.
struct acpi_model * model
Table model.
struct list_head list
List of ACPI descriptors for this model.
An ACPI end resource descriptor.
uint8_t checksum
Checksum.
struct acpi_small_resource hdr
Header.
Fixed ACPI Description Table (FADT)
uint32_t pm_tmr_blk
PM Timer Control Register Block.
uint32_t dsdt
Physical address of DSDT.
uint8_t unused[20]
Unused by iPXE.
struct acpi_header acpi
ACPI header.
uint32_t pm1a_cnt_blk
PM1a Control Register Block.
uint32_t pm1b_cnt_blk
PM1b Control Register Block.
uint32_t facs
Physical address of FACS.
uint32_t pm2_cnt_blk
PM2 Control Register Block.
An ACPI large resource descriptor header.
uint16_t len
Length of data items.
int(* complete)(struct acpi_descriptor *desc)
Check if ACPI descriptor is complete.
int(* install)(int(*install)(struct acpi_header *acpi))
Install ACPI tables.
struct list_head descs
List of descriptors.
An ACPI QWORD address space resource descriptor.
uint64_t granularity
Granularity.
uint64_t min
Minimum address.
struct acpi_large_resource hdr
Header.
uint8_t general
General flags.
uint8_t type
Resource type.
uint8_t specific
Type-specific flags.
uint64_t offset
Translation offset.
uint64_t max
Maximum address.
Root System Description Pointer.
uint32_t rsdt
Physical address of RSDT.
char signature[8]
Signature.
uint8_t checksum
To make sum of entire table == 0.
char oem_id[6]
OEM identification.
uint8_t revision
Revision.
ACPI Root System Description Table (RSDT)
struct acpi_header acpi
ACPI header.
uint32_t entry[0]
ACPI table entries.
An ACPI small resource descriptor header.
A doubly-linked list entry (or list head)
An ACPI resource descriptor.
struct acpi_large_resource large
Large resource descriptor.
struct acpi_small_resource small
Small resource descriptor.
struct acpi_end_resource end
End resource descriptor.
struct acpi_qword_address_space_resource qword
QWORD address space resource descriptor.