iwl-power.h 2.8 KB
Newer Older
M
Mohamed Abbas 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
/******************************************************************************
 *
 * Copyright(c) 2007 - 2008 Intel Corporation. All rights reserved.
 *
 * Portions of this file are derived from the ipw3945 project, as well
 * as portions of the ieee80211 subsystem header files.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * 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.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
 *
 * The full GNU General Public License is included in this distribution in the
 * file called LICENSE.
 *
 * Contact Information:
 * James P. Ketrenos <ipw2100-admin@linux.intel.com>
 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 *****************************************************************************/
#ifndef __iwl_power_setting_h__
#define __iwl_power_setting_h__

#include <net/mac80211.h>
32
#include "iwl-commands.h"
M
Mohamed Abbas 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

struct iwl_priv;

#define IWL_POWER_MODE_CAM	0x00    /* Continuously Aware Mode, always on */
#define IWL_POWER_INDEX_3	0x03
#define IWL_POWER_INDEX_5	0x05
#define IWL_POWER_AC		0x06
#define IWL_POWER_BATTERY	0x07
#define IWL_POWER_AUTO		0x08
#define IWL_POWER_LIMIT		0x08
#define IWL_POWER_MASK		0x0F
#define IWL_POWER_ENABLED	0x10

/* Power management (not Tx power) structures */

struct iwl_power_vec_entry {
	struct iwl4965_powertable_cmd cmd;
	u8 no_dtim;
};

struct iwl_power_mgr {
	spinlock_t lock;
	struct iwl_power_vec_entry pwr_range_0[IWL_POWER_AC];
	struct iwl_power_vec_entry pwr_range_1[IWL_POWER_AC];
	struct iwl_power_vec_entry pwr_range_2[IWL_POWER_AC];
	u32 dtim_period;
	/* final power level that used to calculate final power command */
	u8 power_mode;
	u8 user_power_setting; /* set by user through mac80211 or sysfs */
	u8 system_power_setting; /* set by kernel syatem tools */
	u8 critical_power_setting; /* set if driver over heated */
	u8 is_battery_active; /* DC/AC power */
	u8 power_disabled; /* flag to disable using power saving level */
};

int iwl_power_update_mode(struct iwl_priv *priv, u8 refresh);
int iwl_power_disable_management(struct iwl_priv *priv);
int iwl_power_enable_management(struct iwl_priv *priv);
int iwl_power_set_user_mode(struct iwl_priv *priv, u16 mode);
int iwl_power_set_system_mode(struct iwl_priv *priv, u16 mode);
void iwl_power_initialize(struct iwl_priv *priv);
int iwl_power_temperature_change(struct iwl_priv *priv);

#endif  /* __iwl_power_setting_h__ */