⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bm.h

📁 ARM S3C2410 linux2.4 内核源码
💻 H
字号:
/***************************************************************************** * * Module name: bm.h *   $Revision: 41 $ * *****************************************************************************//* *  Copyright (C) 2000, 2001 Andrew Grover * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#ifndef __BM_H__#define __BM_H__#include <actypes.h>#include <acexcep.h>/***************************************************************************** *                               Types & Defines *****************************************************************************//* * Output Flags (Debug): * --------------------- */#define BM_PRINT_ALL		(0x00000000)#define BM_PRINT_GROUP		(0x00000001)#define BM_PRINT_LINKAGE	(0x00000002)#define BM_PRINT_IDENTIFICATION	(0x00000004)#define BM_PRINT_POWER		(0x00000008)#define BM_PRINT_PRESENT	(0x00000010)/* * BM_COMMAND: * ----------- */typedef u32			BM_COMMAND;#define BM_COMMAND_UNKNOWN	((BM_COMMAND) 0x00)#define BM_COMMAND_GET_POWER_STATE ((BM_COMMAND) 0x01)#define BM_COMMAND_SET_POWER_STATE ((BM_COMMAND) 0x02)#define BM_COMMAND_DEVICE_SPECIFIC ((BM_COMMAND) 0x80)/* * BM_NOTIFY: * ---------- * Standard ACPI notification values, from section 5.6.3 of the ACPI 2.0 * specification.  Note that the Bus Manager internally handles all * standard ACPI notifications -- driver modules are never sent these * values (see "Bus Manager Notifications", below). */typedef u32			BM_NOTIFY;#define BM_NOTIFY_BUS_CHECK	((BM_NOTIFY) 0x00)#define BM_NOTIFY_DEVICE_CHECK	((BM_NOTIFY) 0x01)#define BM_NOTIFY_DEVICE_WAKE	((BM_NOTIFY) 0x02)#define BM_NOTIFY_EJECT_REQUEST	((BM_NOTIFY) 0x03)#define BM_NOTIFY_DEVICE_CHECK_LIGHT ((BM_NOTIFY) 0x04)#define BM_NOTIFY_FREQUENCY_MISMATCH ((BM_NOTIFY) 0x05)#define BM_NOTIFY_BUS_MODE_MISMATCH ((BM_NOTIFY) 0x06)#define BM_NOTIFY_POWER_FAULT	((BM_NOTIFY) 0x07)/* * These are a higher-level abstraction of ACPI notifications, intended * for consumption by driver modules to facilitate Pn_p. */#define BM_NOTIFY_UNKNOWN	((BM_NOTIFY) 0x00)#define BM_NOTIFY_DEVICE_ADDED	((BM_NOTIFY) 0x01)#define BM_NOTIFY_DEVICE_REMOVED ((BM_NOTIFY) 0x02)/* * BM_HANDLE: * ---------- */typedef u32			BM_HANDLE;#define BM_HANDLE_ROOT		((BM_HANDLE) 0x00000000)#define BM_HANDLE_UNKNOWN	((BM_HANDLE) 0xFFFFFFFF)#define BM_HANDLES_MAX		100/* * BM_HANDLE_LIST: * --------------- */typedef struct{	u32			count;	BM_HANDLE		handles[BM_HANDLES_MAX];} BM_HANDLE_LIST;/* * BM_DEVICE_TYPE: * --------------- */typedef u32			BM_DEVICE_TYPE;#define BM_TYPE_UNKNOWN		((BM_DEVICE_TYPE) 0x00000000)#define BM_TYPE_SYSTEM		((BM_DEVICE_TYPE) 0x00000001)#define BM_TYPE_SCOPE		((BM_DEVICE_TYPE) 0x00000002)#define BM_TYPE_PROCESSOR	((BM_DEVICE_TYPE) 0x00000003)#define BM_TYPE_THERMAL_ZONE	((BM_DEVICE_TYPE) 0x00000004)#define BM_TYPE_POWER_RESOURCE	((BM_DEVICE_TYPE) 0x00000005)#define BM_TYPE_DEVICE		((BM_DEVICE_TYPE) 0x00000006)#define BM_TYPE_FIXED_BUTTON	((BM_DEVICE_TYPE) 0x00000007)/* * BM_DEVICE_UID: * -------------- */typedef char			BM_DEVICE_UID[9];#define BM_UID_UNKNOWN		'0'/* * BM_DEVICE_HID: * -------------- */typedef char			BM_DEVICE_HID[9];#define BM_HID_UNKNOWN		'\0'#define BM_HID_POWER_BUTTON	"PNP0C0C"#define BM_HID_SLEEP_BUTTON	"PNP0C0E"/* * BM_DEVICE_ADR: * -------------- */typedef u32			BM_DEVICE_ADR;#define BM_ADDRESS_UNKNOWN	0/* * BM_DEVICE_FLAGS: * ---------------- * The encoding of BM_DEVICE_FLAGS is illustrated below. * Note that a set bit (1) indicates the property is TRUE * (e.g. if bit 0 is set then the device has dynamic status). * +--+------------+-+-+-+-+-+-+-+ * |31| Bits 30:7  |6|5|4|3|2|1|0| * +--+------------+-+-+-+-+-+-+-+ *   |       |      | | | | | | | *   |       |      | | | | | | +- Dynamic status? *   |       |      | | | | | +--- Identifiable? *   |       |      | | | | +----- Configurable? *   |       |      | | | +------- Power Control? *   |       |      | | +--------- Ejectable? *   |       |      | +----------- Docking Station? *   |       |      +------------- Fixed-Feature? *   |       +-------------------- <Reserved> *   +---------------------------- Driver Control? * * Dynamic status:  Device has a _STA object. * Identifiable:    Device has a _HID and/or _ADR and possibly other *                  identification objects defined. * Configurable:    Device has a _CRS and possibly other configuration *                  objects defined. * Power Control:   Device has a _PR0 and/or _PS0 and possibly other *                  power management objects defined. * Ejectable:       Device has an _EJD and/or _EJx and possibly other *                  dynamic insertion/removal objects defined. * Docking Station: Device has a _DCK object defined. * Fixed-Feature:   Device does not exist in the namespace; was *                  enumerated as a fixed-feature (e.g. power button). * Driver Control:  A driver has been installed for this device. */typedef u32			BM_DEVICE_FLAGS;#define BM_FLAGS_UNKNOWN	((BM_DEVICE_FLAGS) 0x00000000)#define BM_FLAGS_DYNAMIC_STATUS	((BM_DEVICE_FLAGS) 0x00000001)#define BM_FLAGS_IDENTIFIABLE	((BM_DEVICE_FLAGS) 0x00000002)#define BM_FLAGS_CONFIGURABLE	((BM_DEVICE_FLAGS) 0x00000004)#define BM_FLAGS_POWER_CONTROL	((BM_DEVICE_FLAGS) 0x00000008)#define BM_FLAGS_EJECTABLE	((BM_DEVICE_FLAGS) 0x00000010)#define BM_FLAGS_DOCKING_STATION ((BM_DEVICE_FLAGS) 0x00000020)#define BM_FLAGS_FIXED_FEATURE	((BM_DEVICE_FLAGS) 0x00000040)#define BM_FLAGS_DRIVER_CONTROL	((BM_DEVICE_FLAGS) 0x80000000)/* * Device PM Flags: * ---------------- * +-----------+-+-+-+-+-+-+-+ * | Bits 31:7 |6|5|4|3|2|1|0| * +-----------+-+-+-+-+-+-+-+ *       |      | | | | | | | *       |      | | | | | | +- D0 Support? *       |      | | | | | +--- D1 Support? *       |      | | | | +----- D2 Support? *       |      | | | +------- D3 Support? *       |      | | +--------- Power State Queriable? *       |      | +----------- Inrush Current? *       |      +------------- Wake Capable? *       +-------------------- <Reserved> * * D0-D3 Support:   Device supports corresponding Dx state. * Power State:     Device has a _PSC (current power state) object defined. * Inrush Current:  Device has an _IRC (inrush current) object defined. * Wake Capable:    Device has a _PRW (wake-capable) object defined. */#define BM_FLAGS_D0_SUPPORT	((BM_DEVICE_FLAGS) 0x00000001)#define BM_FLAGS_D1_SUPPORT	((BM_DEVICE_FLAGS) 0x00000002)#define BM_FLAGS_D2_SUPPORT	((BM_DEVICE_FLAGS) 0x00000004)#define BM_FLAGS_D3_SUPPORT	((BM_DEVICE_FLAGS) 0x00000008)#define BM_FLAGS_POWER_STATE	((BM_DEVICE_FLAGS) 0x00000010)#define BM_FLAGS_INRUSH_CURRENT	((BM_DEVICE_FLAGS) 0x00000020)#define BM_FLAGS_WAKE_CAPABLE	((BM_DEVICE_FLAGS) 0x00000040)/* * BM_DEVICE_STATUS: * ----------------- * The encoding of BM_DEVICE_STATUS is illustrated below. * Note that a set bit (1) indicates the property is TRUE * (e.g. if bit 0 is set then the device is present). * +-----------+-+-+-+-+-+ * | Bits 31:4 |4|3|2|1|0| * +-----------+-+-+-+-+-+ *       |      | | | | | *       |      | | | | +- Present? *       |      | | | +--- Enabled? *       |      | | +----- Show in UI? *       |      | +------- Functioning? *       |      +--------- Battery Present? *       +---------------- <Reserved> */typedef u32			BM_DEVICE_STATUS;#define BM_STATUS_UNKNOWN	((BM_DEVICE_STATUS) 0x00000000)#define BM_STATUS_PRESENT	((BM_DEVICE_STATUS) 0x00000001)#define BM_STATUS_ENABLED	((BM_DEVICE_STATUS) 0x00000002)#define BM_STATUS_SHOW_UI	((BM_DEVICE_STATUS) 0x00000004)#define BM_STATUS_FUNCTIONING	((BM_DEVICE_STATUS) 0x00000008)#define BM_STATUS_BATTERY_PRESENT ((BM_DEVICE_STATUS) 0x00000010)#define BM_STATUS_DEFAULT	((BM_DEVICE_STATUS) 0x0000000F)/* * BM_POWER_STATE: * --------------- */typedef u32			BM_POWER_STATE;/* * BM_DEVICE_ID: * ------------- */typedef struct{	BM_DEVICE_TYPE		type;	BM_DEVICE_UID		uid;	BM_DEVICE_HID		hid;	BM_DEVICE_ADR		adr;} BM_DEVICE_ID;/* * BM_DEVICE_POWER: * ---------------- * Structure containing basic device power management information. */typedef struct{	BM_DEVICE_FLAGS		flags;	BM_POWER_STATE		state;	BM_DEVICE_FLAGS		dx_supported[ACPI_S_STATE_COUNT];} BM_DEVICE_POWER;/* * BM_DEVICE: * ---------- */typedef struct{	BM_HANDLE		handle;	acpi_handle  		acpi_handle;	BM_DEVICE_FLAGS		flags;	BM_DEVICE_STATUS	status;	BM_DEVICE_ID		id;	BM_DEVICE_POWER		power;} BM_DEVICE;/* * BM_SEARCH: * ---------- * Structure used for searching the ACPI Bus Manager's device hierarchy. */typedef struct{	BM_DEVICE_ID		criteria;	BM_HANDLE_LIST		results;} BM_SEARCH;/* * BM_REQUEST: * ----------- * Structure used for sending requests to/through the ACPI Bus Manager. */typedef struct{	acpi_status		status;	BM_COMMAND		command;	BM_HANDLE		handle;	acpi_buffer		buffer;} BM_REQUEST;/* * Driver Registration: * -------------------- *//* Driver Context */typedef void *			BM_DRIVER_CONTEXT;/* Notification Callback Function */typedefacpi_status (*BM_DRIVER_NOTIFY) (	BM_NOTIFY		notify_type,	BM_HANDLE		device_handle,	BM_DRIVER_CONTEXT	*context);/* Request Callback Function */typedefacpi_status (*BM_DRIVER_REQUEST) (	BM_REQUEST		*request,	BM_DRIVER_CONTEXT	context);/* Driver Registration */typedef struct{	BM_DRIVER_NOTIFY	notify;	BM_DRIVER_REQUEST	request;	BM_DRIVER_CONTEXT	context;} BM_DRIVER;/* * BM_NODE: * -------- * Structure used to maintain the device hierarchy. */typedef struct _BM_NODE{	BM_DEVICE		device;	BM_DRIVER		driver;	struct _BM_NODE		*parent;	struct _BM_NODE		*next;	struct	{		struct _BM_NODE		*head;		struct _BM_NODE		*tail;	}			scope;} BM_NODE;/* * BM_NODE_LIST: * ------------- * Structure used to maintain an array of node pointers. */typedef struct{	u32			count;	BM_NODE			*nodes[BM_HANDLES_MAX];} BM_NODE_LIST;/***************************************************************************** *                                  Macros *****************************************************************************//* * Device Presence: * ---------------- * Note that status (_STA) means something different for power resources * (they're assumed to always be present). */#define BM_DEVICE_PRESENT(d)	((d->id.type!=BM_TYPE_POWER_RESOURCE)?(d->status & BM_STATUS_PRESENT):TRUE)#define BM_NODE_PRESENT(n)	((n->device.id.type!=BM_TYPE_POWER_RESOURCE)?(n->device.status & BM_STATUS_PRESENT):TRUE)/* * Device Flags: * ------------- */#define BM_IS_DRIVER_CONTROL(d)	(d->flags & BM_FLAGS_DRIVER_CONTROL)#define BM_IS_POWER_CONTROL(d)	(d->flags & BM_FLAGS_POWER_CONTROL) /* * Device Power Flags: * ------------------- */#define BM_IS_POWER_STATE(d)	(d->power.flags & BM_FLAGS_POWER_STATE)/***************************************************************************** *                             Function Prototypes *****************************************************************************//* bm.c */acpi_statusbm_initialize (void);acpi_statusbm_terminate (void);acpi_statusbm_get_status (	BM_DEVICE		*device);acpi_statusbm_get_handle (	acpi_handle             acpi_handle,	BM_HANDLE               *device_handle);acpi_statusbm_get_node (	BM_HANDLE               device_handle,	acpi_handle             acpi_handle,	BM_NODE			**node);/* bmsearch.c */acpi_statusbm_search(	BM_HANDLE               device_handle,	BM_DEVICE_ID            *criteria,	BM_HANDLE_LIST          *results);/* bmnotify.c */voidbm_notify (	acpi_handle             acpi_handle,	u32                     notify_value,	void                    *context);/* bm_request.c */acpi_statusbm_request (	BM_REQUEST		*request_info);/* bmdriver.c */acpi_statusbm_get_device_power_state (	BM_HANDLE               device_handle,	BM_POWER_STATE		*state);acpi_statusbm_set_device_power_state (	BM_HANDLE               device_handle,	BM_POWER_STATE		state);acpi_statusbm_get_device_status (	BM_HANDLE               device_handle,	BM_DEVICE_STATUS        *device_status);acpi_statusbm_get_device_info (	BM_HANDLE               device_handle,	BM_DEVICE		**device_info);acpi_statusbm_get_device_context (	BM_HANDLE               device_handle,	BM_DRIVER_CONTEXT	*context);acpi_statusbm_register_driver (	BM_DEVICE_ID		*criteria,	BM_DRIVER		*driver);acpi_statusbm_unregister_driver (	BM_DEVICE_ID		*criteria,	BM_DRIVER		*driver);/* bmpm.c */acpi_statusbm_get_pm_capabilities (	BM_NODE			*node);acpi_statusbm_get_power_state (	BM_NODE			*node);acpi_statusbm_set_power_state (	BM_NODE			*node,	BM_POWER_STATE          target_state);/* bmpower.c */acpi_statusbm_pr_initialize (void);acpi_statusbm_pr_terminate (void);	/* bmutils.c */acpi_statusbm_cast_buffer (	acpi_buffer             *buffer,	void                    **pointer,	u32                     length);acpi_statusbm_copy_to_buffer (	acpi_buffer             *buffer,	void                    *data,	u32                     length);acpi_statusbm_extract_package_data (	acpi_object             *package,	acpi_buffer             *format,	acpi_buffer             *buffer);acpi_statusbm_evaluate_object (	acpi_handle             acpi_handle,	acpi_string             pathname,	acpi_object_list        *arguments,	acpi_buffer             *buffer);acpi_statusbm_evaluate_simple_integer (	acpi_handle             acpi_handle,	acpi_string             pathname,	u32                     *data);acpi_statusbm_evaluate_reference_list (	acpi_handle             acpi_handle,	acpi_string             pathname,	BM_HANDLE_LIST          *reference_list);/* ACPI Bus Driver OSL */acpi_statusbm_osl_generate_event (	BM_HANDLE		device_handle,	char			*device_type,	char			*device_instance,	u32			event_type,	u32			event_data);#endif  /* __BM_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -