mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
Merge branch 'acpi-lpss' into acpi-cleanup
The following commits depend on the 'acpi-lpss' material.
This commit is contained in:
@@ -52,10 +52,6 @@
|
||||
|
||||
/* Asm macros */
|
||||
|
||||
#define ACPI_ASM_MACROS
|
||||
#define BREAKPOINT3
|
||||
#define ACPI_DISABLE_IRQS() local_irq_disable()
|
||||
#define ACPI_ENABLE_IRQS() local_irq_enable()
|
||||
#define ACPI_FLUSH_CPU_CACHE()
|
||||
|
||||
static inline int
|
||||
|
||||
@@ -454,6 +454,16 @@ config X86_MDFLD
|
||||
|
||||
endif
|
||||
|
||||
config X86_INTEL_LPSS
|
||||
bool "Intel Low Power Subsystem Support"
|
||||
depends on ACPI
|
||||
select COMMON_CLK
|
||||
---help---
|
||||
Select to build support for Intel Low Power Subsystem such as
|
||||
found on Intel Lynxpoint PCH. Selecting this option enables
|
||||
things like clock tree (common clock framework) which are needed
|
||||
by the LPSS peripheral drivers.
|
||||
|
||||
config X86_RDC321X
|
||||
bool "RDC R-321x SoC"
|
||||
depends on X86_32
|
||||
|
||||
@@ -49,10 +49,6 @@
|
||||
|
||||
/* Asm macros */
|
||||
|
||||
#define ACPI_ASM_MACROS
|
||||
#define BREAKPOINT3
|
||||
#define ACPI_DISABLE_IRQS() local_irq_disable()
|
||||
#define ACPI_ENABLE_IRQS() local_irq_enable()
|
||||
#define ACPI_FLUSH_CPU_CACHE() wbinvd()
|
||||
|
||||
int __acpi_acquire_global_lock(unsigned int *lock);
|
||||
|
||||
@@ -38,6 +38,7 @@ acpi-y += processor_core.o
|
||||
acpi-y += ec.o
|
||||
acpi-$(CONFIG_ACPI_DOCK) += dock.o
|
||||
acpi-y += pci_root.o pci_link.o pci_irq.o
|
||||
acpi-y += csrt.o
|
||||
acpi-y += acpi_platform.o
|
||||
acpi-y += power.o
|
||||
acpi-y += event.o
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
@@ -21,17 +22,34 @@
|
||||
|
||||
ACPI_MODULE_NAME("platform");
|
||||
|
||||
static int acpi_create_platform_clks(struct acpi_device *adev)
|
||||
{
|
||||
static struct platform_device *pdev;
|
||||
|
||||
/* Create Lynxpoint LPSS clocks */
|
||||
if (!pdev && !strncmp(acpi_device_hid(adev), "INT33C", 6)) {
|
||||
pdev = platform_device_register_simple("clk-lpt", -1, NULL, 0);
|
||||
if (IS_ERR(pdev))
|
||||
return PTR_ERR(pdev);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* acpi_create_platform_device - Create platform device for ACPI device node
|
||||
* @adev: ACPI device node to create a platform device for.
|
||||
* @flags: ACPI_PLATFORM_* flags that affect the creation of the platform
|
||||
* devices.
|
||||
*
|
||||
* Check if the given @adev can be represented as a platform device and, if
|
||||
* that's the case, create and register a platform device, populate its common
|
||||
* resources and returns a pointer to it. Otherwise, return %NULL.
|
||||
*
|
||||
* The platform device's name will be taken from the @adev's _HID and _UID.
|
||||
* Name of the platform device will be the same as @adev's.
|
||||
*/
|
||||
struct platform_device *acpi_create_platform_device(struct acpi_device *adev)
|
||||
struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
|
||||
unsigned long flags)
|
||||
{
|
||||
struct platform_device *pdev = NULL;
|
||||
struct acpi_device *acpi_parent;
|
||||
@@ -41,6 +59,11 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev)
|
||||
struct resource *resources;
|
||||
int count;
|
||||
|
||||
if ((flags & ACPI_PLATFORM_CLK) && acpi_create_platform_clks(adev)) {
|
||||
dev_err(&adev->dev, "failed to create clocks\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* If the ACPI node already has a physical device attached, skip it. */
|
||||
if (adev->physical_node_count)
|
||||
return NULL;
|
||||
|
||||
@@ -31,6 +31,7 @@ acpi-y += \
|
||||
evgpeinit.o \
|
||||
evgpeutil.o \
|
||||
evglock.o \
|
||||
evhandler.o \
|
||||
evmisc.o \
|
||||
evregion.o \
|
||||
evrgnini.o \
|
||||
@@ -90,6 +91,7 @@ acpi-y += \
|
||||
nsobject.o \
|
||||
nsparse.o \
|
||||
nspredef.o \
|
||||
nsprepkg.o \
|
||||
nsrepair.o \
|
||||
nsrepair2.o \
|
||||
nssearch.o \
|
||||
@@ -104,7 +106,9 @@ acpi-$(ACPI_FUTURE_USAGE) += nsdumpdv.o
|
||||
acpi-y += \
|
||||
psargs.o \
|
||||
psloop.o \
|
||||
psobject.o \
|
||||
psopcode.o \
|
||||
psopinfo.o \
|
||||
psparse.o \
|
||||
psscope.o \
|
||||
pstree.o \
|
||||
@@ -126,7 +130,7 @@ acpi-y += \
|
||||
rsutils.o \
|
||||
rsxface.o
|
||||
|
||||
acpi-$(ACPI_FUTURE_USAGE) += rsdump.o
|
||||
acpi-$(ACPI_FUTURE_USAGE) += rsdump.o rsdumpinfo.o
|
||||
|
||||
acpi-y += \
|
||||
tbfadt.o \
|
||||
@@ -155,8 +159,10 @@ acpi-y += \
|
||||
utmutex.o \
|
||||
utobject.o \
|
||||
utosi.o \
|
||||
utownerid.o \
|
||||
utresrc.o \
|
||||
utstate.o \
|
||||
utstring.o \
|
||||
utxface.o \
|
||||
utxfinit.o \
|
||||
utxferror.o \
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
*
|
||||
* Note: The order of these include files is important.
|
||||
*/
|
||||
#include <acpi/acconfig.h> /* Global configuration constants */
|
||||
#include "acmacros.h" /* C macros */
|
||||
#include "aclocal.h" /* Internal data types */
|
||||
#include "acobject.h" /* ACPI internal object */
|
||||
|
||||
@@ -114,6 +114,21 @@ ACPI_HW_DEPENDENT_RETURN_VOID(void
|
||||
acpi_db_generate_gpe(char *gpe_arg,
|
||||
char *block_arg))
|
||||
|
||||
/*
|
||||
* dbconvert - miscellaneous conversion routines
|
||||
*/
|
||||
acpi_status acpi_db_hex_char_to_value(int hex_char, u8 *return_value);
|
||||
|
||||
acpi_status acpi_db_convert_to_package(char *string, union acpi_object *object);
|
||||
|
||||
acpi_status
|
||||
acpi_db_convert_to_object(acpi_object_type type,
|
||||
char *string, union acpi_object *object);
|
||||
|
||||
u8 *acpi_db_encode_pld_buffer(struct acpi_pld_info *pld_info);
|
||||
|
||||
void acpi_db_dump_pld_buffer(union acpi_object *obj_desc);
|
||||
|
||||
/*
|
||||
* dbmethod - control method commands
|
||||
*/
|
||||
@@ -191,6 +206,8 @@ void
|
||||
acpi_db_create_execution_threads(char *num_threads_arg,
|
||||
char *num_loops_arg, char *method_name_arg);
|
||||
|
||||
void acpi_db_delete_objects(u32 count, union acpi_object *objects);
|
||||
|
||||
#ifdef ACPI_DBG_TRACK_ALLOCATIONS
|
||||
u32 acpi_db_get_cache_info(struct acpi_memory_list *cache);
|
||||
#endif
|
||||
|
||||
@@ -158,10 +158,23 @@ acpi_ev_delete_gpe_handlers(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
|
||||
void *context);
|
||||
|
||||
/*
|
||||
* evregion - Address Space handling
|
||||
* evhandler - Address space handling
|
||||
*/
|
||||
u8
|
||||
acpi_ev_has_default_handler(struct acpi_namespace_node *node,
|
||||
acpi_adr_space_type space_id);
|
||||
|
||||
acpi_status acpi_ev_install_region_handlers(void);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_install_space_handler(struct acpi_namespace_node *node,
|
||||
acpi_adr_space_type space_id,
|
||||
acpi_adr_space_handler handler,
|
||||
acpi_adr_space_setup setup, void *context);
|
||||
|
||||
/*
|
||||
* evregion - Operation region support
|
||||
*/
|
||||
acpi_status acpi_ev_initialize_op_regions(void);
|
||||
|
||||
acpi_status
|
||||
@@ -179,12 +192,6 @@ void
|
||||
acpi_ev_detach_region(union acpi_operand_object *region_obj,
|
||||
u8 acpi_ns_is_locked);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_install_space_handler(struct acpi_namespace_node *node,
|
||||
acpi_adr_space_type space_id,
|
||||
acpi_adr_space_handler handler,
|
||||
acpi_adr_space_setup setup, void *context);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_execute_reg_methods(struct acpi_namespace_node *node,
|
||||
acpi_adr_space_type space_id);
|
||||
|
||||
@@ -192,14 +192,6 @@ ACPI_EXTERN u8 acpi_gbl_integer_bit_width;
|
||||
ACPI_EXTERN u8 acpi_gbl_integer_byte_width;
|
||||
ACPI_EXTERN u8 acpi_gbl_integer_nybble_width;
|
||||
|
||||
/* Mutex for _OSI support */
|
||||
|
||||
ACPI_EXTERN acpi_mutex acpi_gbl_osi_mutex;
|
||||
|
||||
/* Reader/Writer lock is used for namespace walk and dynamic table unload */
|
||||
|
||||
ACPI_EXTERN struct acpi_rw_lock acpi_gbl_namespace_rw_lock;
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Mutual exclusion within ACPICA subsystem
|
||||
@@ -233,6 +225,14 @@ ACPI_EXTERN u8 acpi_gbl_global_lock_pending;
|
||||
ACPI_EXTERN acpi_spinlock acpi_gbl_gpe_lock; /* For GPE data structs and registers */
|
||||
ACPI_EXTERN acpi_spinlock acpi_gbl_hardware_lock; /* For ACPI H/W except GPE registers */
|
||||
|
||||
/* Mutex for _OSI support */
|
||||
|
||||
ACPI_EXTERN acpi_mutex acpi_gbl_osi_mutex;
|
||||
|
||||
/* Reader/Writer lock is used for namespace walk and dynamic table unload */
|
||||
|
||||
ACPI_EXTERN struct acpi_rw_lock acpi_gbl_namespace_rw_lock;
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Miscellaneous globals
|
||||
@@ -252,7 +252,7 @@ ACPI_EXTERN acpi_cache_t *acpi_gbl_operand_cache;
|
||||
ACPI_EXTERN struct acpi_global_notify_handler acpi_gbl_global_notify[2];
|
||||
ACPI_EXTERN acpi_exception_handler acpi_gbl_exception_handler;
|
||||
ACPI_EXTERN acpi_init_handler acpi_gbl_init_handler;
|
||||
ACPI_EXTERN acpi_tbl_handler acpi_gbl_table_handler;
|
||||
ACPI_EXTERN acpi_table_handler acpi_gbl_table_handler;
|
||||
ACPI_EXTERN void *acpi_gbl_table_handler_context;
|
||||
ACPI_EXTERN struct acpi_walk_state *acpi_gbl_breakpoint_walk;
|
||||
ACPI_EXTERN acpi_interface_handler acpi_gbl_interface_handler;
|
||||
@@ -304,6 +304,7 @@ extern const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS];
|
||||
ACPI_EXTERN struct acpi_memory_list *acpi_gbl_global_list;
|
||||
ACPI_EXTERN struct acpi_memory_list *acpi_gbl_ns_node_list;
|
||||
ACPI_EXTERN u8 acpi_gbl_display_final_mem_stats;
|
||||
ACPI_EXTERN u8 acpi_gbl_disable_mem_tracking;
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -365,19 +366,18 @@ ACPI_EXTERN u8 acpi_gbl_sleep_type_b;
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
extern struct acpi_fixed_event_info
|
||||
acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS];
|
||||
ACPI_EXTERN struct acpi_fixed_event_handler
|
||||
acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS];
|
||||
ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head;
|
||||
ACPI_EXTERN struct acpi_gpe_block_info
|
||||
*acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS];
|
||||
|
||||
#if (!ACPI_REDUCED_HARDWARE)
|
||||
|
||||
ACPI_EXTERN u8 acpi_gbl_all_gpes_initialized;
|
||||
ACPI_EXTERN struct acpi_gpe_xrupt_info *acpi_gbl_gpe_xrupt_list_head;
|
||||
ACPI_EXTERN struct acpi_gpe_block_info
|
||||
*acpi_gbl_gpe_fadt_blocks[ACPI_MAX_GPE_BLOCKS];
|
||||
ACPI_EXTERN acpi_gbl_event_handler acpi_gbl_global_event_handler;
|
||||
ACPI_EXTERN void *acpi_gbl_global_event_handler_context;
|
||||
ACPI_EXTERN struct acpi_fixed_event_handler
|
||||
acpi_gbl_fixed_event_handlers[ACPI_NUM_FIXED_EVENTS];
|
||||
extern struct acpi_fixed_event_info
|
||||
acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS];
|
||||
|
||||
#endif /* !ACPI_REDUCED_HARDWARE */
|
||||
|
||||
@@ -415,6 +415,8 @@ ACPI_EXTERN u8 acpi_gbl_db_output_flags;
|
||||
|
||||
ACPI_EXTERN u8 acpi_gbl_db_opt_disasm;
|
||||
ACPI_EXTERN u8 acpi_gbl_db_opt_verbose;
|
||||
ACPI_EXTERN struct acpi_external_list *acpi_gbl_external_list;
|
||||
ACPI_EXTERN struct acpi_external_file *acpi_gbl_external_file_list;
|
||||
#endif
|
||||
|
||||
#ifdef ACPI_DEBUGGER
|
||||
@@ -426,6 +428,7 @@ extern u8 acpi_gbl_db_terminate_threads;
|
||||
ACPI_EXTERN u8 acpi_gbl_db_opt_tables;
|
||||
ACPI_EXTERN u8 acpi_gbl_db_opt_stats;
|
||||
ACPI_EXTERN u8 acpi_gbl_db_opt_ini_methods;
|
||||
ACPI_EXTERN u8 acpi_gbl_db_opt_no_region_support;
|
||||
|
||||
ACPI_EXTERN char *acpi_gbl_db_args[ACPI_DEBUGGER_MAX_ARGS];
|
||||
ACPI_EXTERN acpi_object_type acpi_gbl_db_arg_types[ACPI_DEBUGGER_MAX_ARGS];
|
||||
|
||||
@@ -458,7 +458,7 @@ void acpi_ex_reacquire_interpreter(void);
|
||||
|
||||
void acpi_ex_relinquish_interpreter(void);
|
||||
|
||||
void acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc);
|
||||
u8 acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc);
|
||||
|
||||
void acpi_ex_acquire_global_lock(u32 rule);
|
||||
|
||||
|
||||
@@ -189,11 +189,10 @@ struct acpi_namespace_node {
|
||||
#define ANOBJ_EVALUATED 0x20 /* Set on first evaluation of node */
|
||||
#define ANOBJ_ALLOCATED_BUFFER 0x40 /* Method AML buffer is dynamic (install_method) */
|
||||
|
||||
#define ANOBJ_IS_EXTERNAL 0x08 /* i_aSL only: This object created via External() */
|
||||
#define ANOBJ_METHOD_NO_RETVAL 0x10 /* i_aSL only: Method has no return value */
|
||||
#define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* i_aSL only: Method has at least one return value */
|
||||
#define ANOBJ_IS_BIT_OFFSET 0x40 /* i_aSL only: Reference is a bit offset */
|
||||
#define ANOBJ_IS_REFERENCED 0x80 /* i_aSL only: Object was referenced */
|
||||
#define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */
|
||||
#define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */
|
||||
#define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */
|
||||
#define ANOBJ_IS_REFERENCED 0x80 /* iASL only: Object was referenced */
|
||||
|
||||
/* Internal ACPI table management - master table list */
|
||||
|
||||
@@ -411,11 +410,10 @@ struct acpi_gpe_notify_info {
|
||||
struct acpi_gpe_notify_info *next;
|
||||
};
|
||||
|
||||
struct acpi_gpe_notify_object {
|
||||
struct acpi_namespace_node *node;
|
||||
struct acpi_gpe_notify_object *next;
|
||||
};
|
||||
|
||||
/*
|
||||
* GPE dispatch info. At any time, the GPE can have at most one type
|
||||
* of dispatch - Method, Handler, or Implicit Notify.
|
||||
*/
|
||||
union acpi_gpe_dispatch_info {
|
||||
struct acpi_namespace_node *method_node; /* Method node for this GPE level */
|
||||
struct acpi_gpe_handler_info *handler; /* Installed GPE handler */
|
||||
@@ -679,6 +677,8 @@ struct acpi_opcode_info {
|
||||
u8 type; /* Opcode type */
|
||||
};
|
||||
|
||||
/* Value associated with the parse object */
|
||||
|
||||
union acpi_parse_value {
|
||||
u64 integer; /* Integer constant (Up to 64 bits) */
|
||||
u32 size; /* bytelist or field size */
|
||||
@@ -1023,6 +1023,31 @@ struct acpi_port_info {
|
||||
|
||||
#define ACPI_ASCII_ZERO 0x30
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Disassembler
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
struct acpi_external_list {
|
||||
char *path;
|
||||
char *internal_path;
|
||||
struct acpi_external_list *next;
|
||||
u32 value;
|
||||
u16 length;
|
||||
u8 type;
|
||||
u8 flags;
|
||||
};
|
||||
|
||||
/* Values for Flags field above */
|
||||
|
||||
#define ACPI_IPATH_ALLOCATED 0x01
|
||||
|
||||
struct acpi_external_file {
|
||||
char *path;
|
||||
struct acpi_external_file *next;
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Debugger
|
||||
|
||||
@@ -49,14 +49,18 @@
|
||||
* get into potential aligment issues -- see the STORE macros below.
|
||||
* Use with care.
|
||||
*/
|
||||
#define ACPI_GET8(ptr) *ACPI_CAST_PTR (u8, ptr)
|
||||
#define ACPI_GET16(ptr) *ACPI_CAST_PTR (u16, ptr)
|
||||
#define ACPI_GET32(ptr) *ACPI_CAST_PTR (u32, ptr)
|
||||
#define ACPI_GET64(ptr) *ACPI_CAST_PTR (u64, ptr)
|
||||
#define ACPI_SET8(ptr) *ACPI_CAST_PTR (u8, ptr)
|
||||
#define ACPI_SET16(ptr) *ACPI_CAST_PTR (u16, ptr)
|
||||
#define ACPI_SET32(ptr) *ACPI_CAST_PTR (u32, ptr)
|
||||
#define ACPI_SET64(ptr) *ACPI_CAST_PTR (u64, ptr)
|
||||
#define ACPI_CAST8(ptr) ACPI_CAST_PTR (u8, (ptr))
|
||||
#define ACPI_CAST16(ptr) ACPI_CAST_PTR (u16, (ptr))
|
||||
#define ACPI_CAST32(ptr) ACPI_CAST_PTR (u32, (ptr))
|
||||
#define ACPI_CAST64(ptr) ACPI_CAST_PTR (u64, (ptr))
|
||||
#define ACPI_GET8(ptr) (*ACPI_CAST8 (ptr))
|
||||
#define ACPI_GET16(ptr) (*ACPI_CAST16 (ptr))
|
||||
#define ACPI_GET32(ptr) (*ACPI_CAST32 (ptr))
|
||||
#define ACPI_GET64(ptr) (*ACPI_CAST64 (ptr))
|
||||
#define ACPI_SET8(ptr, val) (*ACPI_CAST8 (ptr) = (u8) (val))
|
||||
#define ACPI_SET16(ptr, val) (*ACPI_CAST16 (ptr) = (u16) (val))
|
||||
#define ACPI_SET32(ptr, val) (*ACPI_CAST32 (ptr) = (u32) (val))
|
||||
#define ACPI_SET64(ptr, val) (*ACPI_CAST64 (ptr) = (u64) (val))
|
||||
|
||||
/*
|
||||
* printf() format helpers
|
||||
@@ -293,6 +297,26 @@
|
||||
#define ACPI_16BIT_MASK 0x0000FFFF
|
||||
#define ACPI_24BIT_MASK 0x00FFFFFF
|
||||
|
||||
/* Macros to extract flag bits from position zero */
|
||||
|
||||
#define ACPI_GET_1BIT_FLAG(value) ((value) & ACPI_1BIT_MASK)
|
||||
#define ACPI_GET_2BIT_FLAG(value) ((value) & ACPI_2BIT_MASK)
|
||||
#define ACPI_GET_3BIT_FLAG(value) ((value) & ACPI_3BIT_MASK)
|
||||
#define ACPI_GET_4BIT_FLAG(value) ((value) & ACPI_4BIT_MASK)
|
||||
|
||||
/* Macros to extract flag bits from position one and above */
|
||||
|
||||
#define ACPI_EXTRACT_1BIT_FLAG(field, position) (ACPI_GET_1BIT_FLAG ((field) >> position))
|
||||
#define ACPI_EXTRACT_2BIT_FLAG(field, position) (ACPI_GET_2BIT_FLAG ((field) >> position))
|
||||
#define ACPI_EXTRACT_3BIT_FLAG(field, position) (ACPI_GET_3BIT_FLAG ((field) >> position))
|
||||
#define ACPI_EXTRACT_4BIT_FLAG(field, position) (ACPI_GET_4BIT_FLAG ((field) >> position))
|
||||
|
||||
/* ACPI Pathname helpers */
|
||||
|
||||
#define ACPI_IS_ROOT_PREFIX(c) ((c) == (u8) 0x5C) /* Backslash */
|
||||
#define ACPI_IS_PARENT_PREFIX(c) ((c) == (u8) 0x5E) /* Carat */
|
||||
#define ACPI_IS_PATH_SEPARATOR(c) ((c) == (u8) 0x2E) /* Period (dot) */
|
||||
|
||||
/*
|
||||
* An object of type struct acpi_namespace_node can appear in some contexts
|
||||
* where a pointer to an object of type union acpi_operand_object can also
|
||||
@@ -364,137 +388,6 @@
|
||||
|
||||
#endif /* ACPI_NO_ERROR_MESSAGES */
|
||||
|
||||
/*
|
||||
* Debug macros that are conditionally compiled
|
||||
*/
|
||||
#ifdef ACPI_DEBUG_OUTPUT
|
||||
/*
|
||||
* Function entry tracing
|
||||
*/
|
||||
#define ACPI_FUNCTION_TRACE(a) ACPI_FUNCTION_NAME(a) \
|
||||
acpi_ut_trace(ACPI_DEBUG_PARAMETERS)
|
||||
#define ACPI_FUNCTION_TRACE_PTR(a, b) ACPI_FUNCTION_NAME(a) \
|
||||
acpi_ut_trace_ptr(ACPI_DEBUG_PARAMETERS, (void *)b)
|
||||
#define ACPI_FUNCTION_TRACE_U32(a, b) ACPI_FUNCTION_NAME(a) \
|
||||
acpi_ut_trace_u32(ACPI_DEBUG_PARAMETERS, (u32)b)
|
||||
#define ACPI_FUNCTION_TRACE_STR(a, b) ACPI_FUNCTION_NAME(a) \
|
||||
acpi_ut_trace_str(ACPI_DEBUG_PARAMETERS, (char *)b)
|
||||
|
||||
#define ACPI_FUNCTION_ENTRY() acpi_ut_track_stack_ptr()
|
||||
|
||||
/*
|
||||
* Function exit tracing.
|
||||
* WARNING: These macros include a return statement. This is usually considered
|
||||
* bad form, but having a separate exit macro is very ugly and difficult to maintain.
|
||||
* One of the FUNCTION_TRACE macros above must be used in conjunction with these macros
|
||||
* so that "_AcpiFunctionName" is defined.
|
||||
*
|
||||
* Note: the DO_WHILE0 macro is used to prevent some compilers from complaining
|
||||
* about these constructs.
|
||||
*/
|
||||
#ifdef ACPI_USE_DO_WHILE_0
|
||||
#define ACPI_DO_WHILE0(a) do a while(0)
|
||||
#else
|
||||
#define ACPI_DO_WHILE0(a) a
|
||||
#endif
|
||||
|
||||
#define return_VOID ACPI_DO_WHILE0 ({ \
|
||||
acpi_ut_exit (ACPI_DEBUG_PARAMETERS); \
|
||||
return;})
|
||||
/*
|
||||
* There are two versions of most of the return macros. The default version is
|
||||
* safer, since it avoids side-effects by guaranteeing that the argument will
|
||||
* not be evaluated twice.
|
||||
*
|
||||
* A less-safe version of the macros is provided for optional use if the
|
||||
* compiler uses excessive CPU stack (for example, this may happen in the
|
||||
* debug case if code optimzation is disabled.)
|
||||
*/
|
||||
#ifndef ACPI_SIMPLE_RETURN_MACROS
|
||||
|
||||
#define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({ \
|
||||
register acpi_status _s = (s); \
|
||||
acpi_ut_status_exit (ACPI_DEBUG_PARAMETERS, _s); \
|
||||
return (_s); })
|
||||
#define return_PTR(s) ACPI_DO_WHILE0 ({ \
|
||||
register void *_s = (void *) (s); \
|
||||
acpi_ut_ptr_exit (ACPI_DEBUG_PARAMETERS, (u8 *) _s); \
|
||||
return (_s); })
|
||||
#define return_VALUE(s) ACPI_DO_WHILE0 ({ \
|
||||
register u64 _s = (s); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, _s); \
|
||||
return (_s); })
|
||||
#define return_UINT8(s) ACPI_DO_WHILE0 ({ \
|
||||
register u8 _s = (u8) (s); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (u64) _s); \
|
||||
return (_s); })
|
||||
#define return_UINT32(s) ACPI_DO_WHILE0 ({ \
|
||||
register u32 _s = (u32) (s); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (u64) _s); \
|
||||
return (_s); })
|
||||
#else /* Use original less-safe macros */
|
||||
|
||||
#define return_ACPI_STATUS(s) ACPI_DO_WHILE0 ({ \
|
||||
acpi_ut_status_exit (ACPI_DEBUG_PARAMETERS, (s)); \
|
||||
return((s)); })
|
||||
#define return_PTR(s) ACPI_DO_WHILE0 ({ \
|
||||
acpi_ut_ptr_exit (ACPI_DEBUG_PARAMETERS, (u8 *) (s)); \
|
||||
return((s)); })
|
||||
#define return_VALUE(s) ACPI_DO_WHILE0 ({ \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (u64) (s)); \
|
||||
return((s)); })
|
||||
#define return_UINT8(s) return_VALUE(s)
|
||||
#define return_UINT32(s) return_VALUE(s)
|
||||
|
||||
#endif /* ACPI_SIMPLE_RETURN_MACROS */
|
||||
|
||||
/* Conditional execution */
|
||||
|
||||
#define ACPI_DEBUG_EXEC(a) a
|
||||
#define ACPI_DEBUG_ONLY_MEMBERS(a) a;
|
||||
#define _VERBOSE_STRUCTURES
|
||||
|
||||
/* Various object display routines for debug */
|
||||
|
||||
#define ACPI_DUMP_STACK_ENTRY(a) acpi_ex_dump_operand((a), 0)
|
||||
#define ACPI_DUMP_OPERANDS(a, b ,c) acpi_ex_dump_operands(a, b, c)
|
||||
#define ACPI_DUMP_ENTRY(a, b) acpi_ns_dump_entry (a, b)
|
||||
#define ACPI_DUMP_PATHNAME(a, b, c, d) acpi_ns_dump_pathname(a, b, c, d)
|
||||
#define ACPI_DUMP_BUFFER(a, b) acpi_ut_debug_dump_buffer((u8 *) a, b, DB_BYTE_DISPLAY, _COMPONENT)
|
||||
|
||||
#else
|
||||
/*
|
||||
* This is the non-debug case -- make everything go away,
|
||||
* leaving no executable debug code!
|
||||
*/
|
||||
#define ACPI_DEBUG_EXEC(a)
|
||||
#define ACPI_DEBUG_ONLY_MEMBERS(a)
|
||||
#define ACPI_FUNCTION_TRACE(a)
|
||||
#define ACPI_FUNCTION_TRACE_PTR(a, b)
|
||||
#define ACPI_FUNCTION_TRACE_U32(a, b)
|
||||
#define ACPI_FUNCTION_TRACE_STR(a, b)
|
||||
#define ACPI_FUNCTION_EXIT
|
||||
#define ACPI_FUNCTION_STATUS_EXIT(s)
|
||||
#define ACPI_FUNCTION_VALUE_EXIT(s)
|
||||
#define ACPI_FUNCTION_ENTRY()
|
||||
#define ACPI_DUMP_STACK_ENTRY(a)
|
||||
#define ACPI_DUMP_OPERANDS(a, b, c)
|
||||
#define ACPI_DUMP_ENTRY(a, b)
|
||||
#define ACPI_DUMP_TABLES(a, b)
|
||||
#define ACPI_DUMP_PATHNAME(a, b, c, d)
|
||||
#define ACPI_DUMP_BUFFER(a, b)
|
||||
#define ACPI_DEBUG_PRINT(pl)
|
||||
#define ACPI_DEBUG_PRINT_RAW(pl)
|
||||
|
||||
#define return_VOID return
|
||||
#define return_ACPI_STATUS(s) return(s)
|
||||
#define return_VALUE(s) return(s)
|
||||
#define return_UINT8(s) return(s)
|
||||
#define return_UINT32(s) return(s)
|
||||
#define return_PTR(s) return(s)
|
||||
|
||||
#endif /* ACPI_DEBUG_OUTPUT */
|
||||
|
||||
#if (!ACPI_REDUCED_HARDWARE)
|
||||
#define ACPI_HW_OPTIONAL_FUNCTION(addr) addr
|
||||
#else
|
||||
|
||||
@@ -218,6 +218,18 @@ acpi_ns_check_parameter_count(char *pathname,
|
||||
u32 user_param_count,
|
||||
const union acpi_predefined_info *info);
|
||||
|
||||
acpi_status
|
||||
acpi_ns_check_object_type(struct acpi_predefined_data *data,
|
||||
union acpi_operand_object **return_object_ptr,
|
||||
u32 expected_btypes, u32 package_index);
|
||||
|
||||
/*
|
||||
* nsprepkg - Validation of predefined name packages
|
||||
*/
|
||||
acpi_status
|
||||
acpi_ns_check_package(struct acpi_predefined_data *data,
|
||||
union acpi_operand_object **return_object_ptr);
|
||||
|
||||
/*
|
||||
* nsnames - Name and Scope manipulation
|
||||
*/
|
||||
@@ -333,8 +345,6 @@ acpi_ns_install_node(struct acpi_walk_state *walk_state,
|
||||
/*
|
||||
* nsutils - Utility functions
|
||||
*/
|
||||
u8 acpi_ns_valid_root_prefix(char prefix);
|
||||
|
||||
acpi_object_type acpi_ns_get_type(struct acpi_namespace_node *node);
|
||||
|
||||
u32 acpi_ns_local(acpi_object_type type);
|
||||
|
||||
@@ -307,7 +307,7 @@ struct acpi_object_addr_handler {
|
||||
struct acpi_namespace_node *node; /* Parent device */
|
||||
void *context;
|
||||
acpi_adr_space_setup setup;
|
||||
union acpi_operand_object *region_list; /* regions using this handler */
|
||||
union acpi_operand_object *region_list; /* Regions using this handler */
|
||||
union acpi_operand_object *next;
|
||||
};
|
||||
|
||||
|
||||
@@ -105,7 +105,28 @@ union acpi_parse_object *acpi_ps_find_name(union acpi_parse_object *scope,
|
||||
union acpi_parse_object *acpi_ps_get_parent(union acpi_parse_object *op);
|
||||
|
||||
/*
|
||||
* psopcode - AML Opcode information
|
||||
* psobject - support for parse object processing
|
||||
*/
|
||||
acpi_status
|
||||
acpi_ps_build_named_op(struct acpi_walk_state *walk_state,
|
||||
u8 *aml_op_start,
|
||||
union acpi_parse_object *unnamed_op,
|
||||
union acpi_parse_object **op);
|
||||
|
||||
acpi_status
|
||||
acpi_ps_create_op(struct acpi_walk_state *walk_state,
|
||||
u8 *aml_op_start, union acpi_parse_object **new_op);
|
||||
|
||||
acpi_status
|
||||
acpi_ps_complete_op(struct acpi_walk_state *walk_state,
|
||||
union acpi_parse_object **op, acpi_status status);
|
||||
|
||||
acpi_status
|
||||
acpi_ps_complete_final_op(struct acpi_walk_state *walk_state,
|
||||
union acpi_parse_object *op, acpi_status status);
|
||||
|
||||
/*
|
||||
* psopinfo - AML Opcode information
|
||||
*/
|
||||
const struct acpi_opcode_info *acpi_ps_get_opcode_info(u16 opcode);
|
||||
|
||||
@@ -211,8 +232,6 @@ void acpi_ps_free_op(union acpi_parse_object *op);
|
||||
|
||||
u8 acpi_ps_is_leading_char(u32 c);
|
||||
|
||||
u8 acpi_ps_is_prefix_char(u32 c);
|
||||
|
||||
#ifdef ACPI_FUTURE_USAGE
|
||||
u32 acpi_ps_get_name(union acpi_parse_object *op);
|
||||
#endif /* ACPI_FUTURE_USAGE */
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: acpredef - Information table for ACPI predefined methods and objects
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
@@ -51,13 +50,13 @@
|
||||
*
|
||||
* 1) PTYPE1 packages do not contain sub-packages.
|
||||
*
|
||||
* ACPI_PTYPE1_FIXED: Fixed length, 1 or 2 object types:
|
||||
* ACPI_PTYPE1_FIXED: Fixed-length length, 1 or 2 object types:
|
||||
* object type
|
||||
* count
|
||||
* object type
|
||||
* count
|
||||
*
|
||||
* ACPI_PTYPE1_VAR: Variable length:
|
||||
* ACPI_PTYPE1_VAR: Variable-length length:
|
||||
* object type (Int/Buf/Ref)
|
||||
*
|
||||
* ACPI_PTYPE1_OPTION: Package has some required and some optional elements
|
||||
@@ -85,10 +84,10 @@
|
||||
* count
|
||||
* (Used for _CST)
|
||||
*
|
||||
* ACPI_PTYPE2_FIXED: Each subpackage is of fixed length
|
||||
* ACPI_PTYPE2_FIXED: Each subpackage is of Fixed-length
|
||||
* (Used for _PRT)
|
||||
*
|
||||
* ACPI_PTYPE2_MIN: Each subpackage has a variable but minimum length
|
||||
* ACPI_PTYPE2_MIN: Each subpackage has a Variable-length but minimum length
|
||||
* (Used for _HPX)
|
||||
*
|
||||
* ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length
|
||||
@@ -124,7 +123,8 @@ enum acpi_return_package_types {
|
||||
* These are the names that can actually be evaluated via acpi_evaluate_object.
|
||||
* Not present in this table are the following:
|
||||
*
|
||||
* 1) Predefined/Reserved names that are never evaluated via acpi_evaluate_object:
|
||||
* 1) Predefined/Reserved names that are never evaluated via
|
||||
* acpi_evaluate_object:
|
||||
* _Lxx and _Exx GPE methods
|
||||
* _Qxx EC methods
|
||||
* _T_x compiler temporary variables
|
||||
@@ -149,6 +149,8 @@ enum acpi_return_package_types {
|
||||
* information about the expected structure of the package. This information
|
||||
* is saved here (rather than in a separate table) in order to minimize the
|
||||
* overall size of the stored data.
|
||||
*
|
||||
* Note: The additional braces are intended to promote portability.
|
||||
*/
|
||||
static const union acpi_predefined_info predefined_names[] = {
|
||||
{{"_AC0", 0, ACPI_RTYPE_INTEGER}},
|
||||
|
||||
@@ -347,18 +347,21 @@ extern struct acpi_rsdump_info *acpi_gbl_dump_resource_dispatch[];
|
||||
extern struct acpi_rsdump_info *acpi_gbl_dump_serial_bus_dispatch[];
|
||||
|
||||
/*
|
||||
* rsdump
|
||||
* rsdumpinfo
|
||||
*/
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_irq[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_prt[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_dma[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_start_dpf[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_end_dpf[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_io[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_io_flags[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_fixed_io[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_vendor[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_end_tag[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_memory24[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_memory32[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_memory_flags[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_fixed_memory32[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_address16[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_address32[];
|
||||
@@ -372,6 +375,7 @@ extern struct acpi_rsdump_info acpi_rs_dump_common_serial_bus[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[];
|
||||
extern struct acpi_rsdump_info acpi_rs_dump_general_flags[];
|
||||
#endif
|
||||
|
||||
#endif /* __ACRESRC_H__ */
|
||||
|
||||
@@ -483,39 +483,17 @@ acpi_ut_short_divide(u64 in_dividend,
|
||||
/*
|
||||
* utmisc
|
||||
*/
|
||||
void ut_convert_backslashes(char *pathname);
|
||||
|
||||
const char *acpi_ut_validate_exception(acpi_status status);
|
||||
|
||||
u8 acpi_ut_is_pci_root_bridge(char *id);
|
||||
|
||||
u8 acpi_ut_is_aml_table(struct acpi_table_header *table);
|
||||
|
||||
acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id);
|
||||
|
||||
void acpi_ut_release_owner_id(acpi_owner_id * owner_id);
|
||||
|
||||
acpi_status
|
||||
acpi_ut_walk_package_tree(union acpi_operand_object *source_object,
|
||||
void *target_object,
|
||||
acpi_pkg_callback walk_callback, void *context);
|
||||
|
||||
void acpi_ut_strupr(char *src_string);
|
||||
|
||||
void acpi_ut_strlwr(char *src_string);
|
||||
|
||||
int acpi_ut_stricmp(char *string1, char *string2);
|
||||
|
||||
void acpi_ut_print_string(char *string, u8 max_length);
|
||||
|
||||
u8 acpi_ut_valid_acpi_name(u32 name);
|
||||
|
||||
void acpi_ut_repair_name(char *name);
|
||||
|
||||
u8 acpi_ut_valid_acpi_char(char character, u32 position);
|
||||
|
||||
acpi_status acpi_ut_strtoul64(char *string, u32 base, u64 *ret_integer);
|
||||
|
||||
/* Values for Base above (16=Hex, 10=Decimal) */
|
||||
|
||||
#define ACPI_ANY_BASE 0
|
||||
@@ -531,16 +509,26 @@ acpi_ut_display_init_pathname(u8 type,
|
||||
char *path);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* utownerid - Support for Table/Method Owner IDs
|
||||
*/
|
||||
acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id);
|
||||
|
||||
void acpi_ut_release_owner_id(acpi_owner_id * owner_id);
|
||||
|
||||
/*
|
||||
* utresrc
|
||||
*/
|
||||
acpi_status
|
||||
acpi_ut_walk_aml_resources(u8 *aml,
|
||||
acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,
|
||||
u8 *aml,
|
||||
acpi_size aml_length,
|
||||
acpi_walk_aml_callback user_function,
|
||||
void **context);
|
||||
|
||||
acpi_status acpi_ut_validate_resource(void *aml, u8 *return_index);
|
||||
acpi_status
|
||||
acpi_ut_validate_resource(struct acpi_walk_state *walk_state,
|
||||
void *aml, u8 *return_index);
|
||||
|
||||
u32 acpi_ut_get_descriptor_length(void *aml);
|
||||
|
||||
@@ -553,6 +541,27 @@ u8 acpi_ut_get_resource_type(void *aml);
|
||||
acpi_status
|
||||
acpi_ut_get_resource_end_tag(union acpi_operand_object *obj_desc, u8 **end_tag);
|
||||
|
||||
/*
|
||||
* utstring - String and character utilities
|
||||
*/
|
||||
void acpi_ut_strupr(char *src_string);
|
||||
|
||||
void acpi_ut_strlwr(char *src_string);
|
||||
|
||||
int acpi_ut_stricmp(char *string1, char *string2);
|
||||
|
||||
acpi_status acpi_ut_strtoul64(char *string, u32 base, u64 *ret_integer);
|
||||
|
||||
void acpi_ut_print_string(char *string, u8 max_length);
|
||||
|
||||
void ut_convert_backslashes(char *pathname);
|
||||
|
||||
u8 acpi_ut_valid_acpi_name(u32 name);
|
||||
|
||||
u8 acpi_ut_valid_acpi_char(char character, u32 position);
|
||||
|
||||
void acpi_ut_repair_name(char *name);
|
||||
|
||||
/*
|
||||
* utmutex - mutex support
|
||||
*/
|
||||
|
||||
@@ -199,6 +199,12 @@ struct aml_resource_fixed_dma {
|
||||
struct aml_resource_large_header {
|
||||
AML_RESOURCE_LARGE_HEADER_COMMON};
|
||||
|
||||
/* General Flags for address space resource descriptors */
|
||||
|
||||
#define ACPI_RESOURCE_FLAG_DEC 2
|
||||
#define ACPI_RESOURCE_FLAG_MIF 4
|
||||
#define ACPI_RESOURCE_FLAG_MAF 8
|
||||
|
||||
struct aml_resource_memory24 {
|
||||
AML_RESOURCE_LARGE_HEADER_COMMON u8 flags;
|
||||
u16 minimum;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user