Viewing file: pr.h (5.23 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/****************************************************************************** * * Module Name: processor.h * $Revision: 13 $ * *****************************************************************************/
/* * 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 __PR_H__ #define __PR_H__
#include <bm.h>
/***************************************************************************** * Types & Other Defines *****************************************************************************/
#define PR_MAX_POWER_STATES 4 #define PR_MAX_THROTTLE_STATES 8 #define PR_MAX_PERF_STATES 32 #define PR_MAX_C2_LATENCY 100 #define PR_MAX_C3_LATENCY 1000
/* * Commands: * --------- */ #define PR_COMMAND_GET_POWER_INFO ((BM_COMMAND) 0x80) #define PR_COMMAND_SET_POWER_INFO ((BM_COMMAND) 0x81) #define PR_COMMAND_GET_PERF_INFO ((BM_COMMAND) 0x82) #define PR_COMMAND_GET_PERF_STATE ((BM_COMMAND) 0x83) #define PR_COMMAND_SET_PERF_LIMIT ((BM_COMMAND) 0x84)
/* * Notifications: * -------------- */ #define PR_NOTIFY_PERF_STATES ((BM_NOTIFY) 0x80) #define PR_NOTIFY_POWER_STATES ((BM_NOTIFY) 0x81)
/* * Performance Control: * -------------------- */ #define PR_PERF_DEC 0x00 #define PR_PERF_INC 0x01 #define PR_PERF_MAX 0xFF
/* * Power States: * ------------- */ #define PR_C0 0x00 #define PR_C1 0x01 #define PR_C2 0x02 #define PR_C3 0x03
#define PR_C1_FLAG 0x01; #define PR_C2_FLAG 0x02; #define PR_C3_FLAG 0x04;
/* * PR_CX_POLICY_VALUES: * -------------------- */ typedef struct { u32 time_threshold; u32 count_threshold; u32 bm_threshold; u32 target_state; u32 count; } PR_CX_POLICY_VALUES;
/* * PR_CX: * ------ */ typedef struct { u32 latency; u32 utilization; u8 is_valid; PR_CX_POLICY_VALUES promotion; PR_CX_POLICY_VALUES demotion; } PR_CX;
/* * PR_POWER: * --------- */ typedef struct { ACPI_PHYSICAL_ADDRESS p_lvl2; ACPI_PHYSICAL_ADDRESS p_lvl3; u32 bm_activity; u32 active_state; u32 default_state; u32 busy_metric; u32 state_count; PR_CX state[PR_MAX_POWER_STATES]; } PR_POWER;
/* * PR_PERFORMANCE_STATE: * --------------------- */ typedef struct { u32 performance; u32 power; } PR_PERFORMANCE_STATE;
/* * PR_PERFORMANCE: * --------------- */ typedef struct { u32 active_state; u32 thermal_limit; u32 power_limit; u32 state_count; PR_PERFORMANCE_STATE state[PR_MAX_PERF_STATES]; } PR_PERFORMANCE;
/* * PR_PBLOCK: * ---------- */ typedef struct { u32 length; ACPI_PHYSICAL_ADDRESS address; } PR_PBLOCK;
/* * PR_CONTEXT: * ----------- */ typedef struct { BM_HANDLE device_handle; acpi_handle acpi_handle; u32 uid; PR_PBLOCK pblk; PR_POWER power; PR_PERFORMANCE performance; } PR_CONTEXT;
/****************************************************************************** * Function Prototypes *****************************************************************************/
/* processor.c */
acpi_status pr_initialize(void);
acpi_status pr_terminate(void);
acpi_status pr_notify ( BM_NOTIFY notify_type, BM_HANDLE device_handle, void **context);
acpi_status pr_request( BM_REQUEST *request, void *context);
/* prpower.c */
void pr_power_idle (void);
acpi_status pr_power_add_device ( PR_CONTEXT *processor);
acpi_status pr_power_remove_device ( PR_CONTEXT *processor);
acpi_status pr_power_initialize (void);
acpi_status pr_power_terminate (void);
/* prperf.c */
acpi_status pr_perf_get_state ( PR_CONTEXT *processor, u32 *state);
acpi_status pr_perf_set_state ( PR_CONTEXT *processor, u32 state);
acpi_status pr_perf_set_limit ( PR_CONTEXT *processor, u32 limit);
acpi_status pr_perf_add_device ( PR_CONTEXT *processor);
acpi_status pr_perf_remove_device ( PR_CONTEXT *processor);
/* Processor Driver OSL */
acpi_status pr_osl_add_device ( PR_CONTEXT *processor);
acpi_status pr_osl_remove_device ( PR_CONTEXT *processor);
acpi_status pr_osl_generate_event ( u32 event, PR_CONTEXT *processor);
#endif /* __PR_H__ */
|