summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/acpi.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/ipxe/acpi.h')
-rw-r--r--src/include/ipxe/acpi.h62
1 files changed, 46 insertions, 16 deletions
diff --git a/src/include/ipxe/acpi.h b/src/include/ipxe/acpi.h
index f87b8ae9..e7ca35da 100644
--- a/src/include/ipxe/acpi.h
+++ b/src/include/ipxe/acpi.h
@@ -16,6 +16,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/interface.h>
#include <ipxe/uaccess.h>
#include <ipxe/tables.h>
+#include <ipxe/api.h>
+#include <config/general.h>
/**
* An ACPI description header
@@ -89,18 +91,6 @@ struct acpi_rsdp {
uint32_t rsdt;
} __attribute__ (( packed ));
-/** EBDA RSDP length */
-#define RSDP_EBDA_LEN 0x400
-
-/** Fixed BIOS area RSDP start address */
-#define RSDP_BIOS_START 0xe0000
-
-/** Fixed BIOS area RSDP length */
-#define RSDP_BIOS_LEN 0x20000
-
-/** Stride at which to search for RSDP */
-#define RSDP_STRIDE 16
-
/** Root System Description Table (RSDT) signature */
#define RSDT_SIGNATURE ACPI_SIGNATURE ( 'R', 'S', 'D', 'T' )
@@ -194,16 +184,56 @@ struct acpi_model {
/** Declare an ACPI model */
#define __acpi_model __table_entry ( ACPI_MODELS, 01 )
+/**
+ * Calculate static inline ACPI API function name
+ *
+ * @v _prefix Subsystem prefix
+ * @v _api_func API function
+ * @ret _subsys_func Subsystem API function
+ */
+#define ACPI_INLINE( _subsys, _api_func ) \
+ SINGLE_API_INLINE ( ACPI_PREFIX_ ## _subsys, _api_func )
+
+/**
+ * Provide an ACPI API implementation
+ *
+ * @v _prefix Subsystem prefix
+ * @v _api_func API function
+ * @v _func Implementing function
+ */
+#define PROVIDE_ACPI( _subsys, _api_func, _func ) \
+ PROVIDE_SINGLE_API ( ACPI_PREFIX_ ## _subsys, _api_func, _func )
+
+/**
+ * Provide a static inline ACPI API implementation
+ *
+ * @v _prefix Subsystem prefix
+ * @v _api_func API function
+ */
+#define PROVIDE_ACPI_INLINE( _subsys, _api_func ) \
+ PROVIDE_SINGLE_API_INLINE ( ACPI_PREFIX_ ## _subsys, _api_func )
+
+/* Include all architecture-independent ACPI API headers */
+#include <ipxe/null_acpi.h>
+
+/* Include all architecture-dependent ACPI API headers */
+#include <bits/acpi.h>
+
+/**
+ * Locate ACPI root system description table
+ *
+ * @ret rsdt ACPI root system description table, or UNULL
+ */
+userptr_t acpi_find_rsdt ( void );
+
extern struct acpi_descriptor *
acpi_describe ( struct interface *interface );
#define acpi_describe_TYPE( object_type ) \
typeof ( struct acpi_descriptor * ( object_type ) )
extern void acpi_fix_checksum ( struct acpi_header *acpi );
-extern userptr_t acpi_find_rsdt ( userptr_t ebda );
-extern userptr_t acpi_find ( userptr_t rsdt, uint32_t signature,
- unsigned int index );
-extern int acpi_sx ( userptr_t rsdt, uint32_t signature );
+extern userptr_t acpi_find ( uint32_t signature, unsigned int index );
+extern int acpi_sx ( uint32_t signature );
extern void acpi_add ( struct acpi_descriptor *desc );
extern void acpi_del ( struct acpi_descriptor *desc );
extern int acpi_install ( int ( * install ) ( struct acpi_header *acpi ) );