diff options
| author | Ben Cahill <ben.m.cahill@intel.com> | 2007-11-28 22:10:01 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:05:27 -0500 |
| commit | 5991b419f04dee78c36d43de6b6ff2d27934d707 (patch) | |
| tree | 968a0b30866ee3f4ac28895bfaf13cc8be328c50 | |
| parent | fcd427bbba10fc315d1c958b85bba74448db4eb4 (diff) | |
iwlwifi: document temperature calculation
Document temperature calculation
Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965-hw.h | 57 |
1 files changed, 46 insertions, 11 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965-hw.h b/drivers/net/wireless/iwlwifi/iwl-4965-hw.h index 3c09225c6623..78d9854f7506 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965-hw.h +++ b/drivers/net/wireless/iwlwifi/iwl-4965-hw.h | |||
| @@ -645,21 +645,43 @@ static inline int iwl4965_hw_valid_rtc_data_addr(u32 addr) | |||
| 645 | (addr < KDR_RTC_DATA_UPPER_BOUND); | 645 | (addr < KDR_RTC_DATA_UPPER_BOUND); |
| 646 | } | 646 | } |
| 647 | 647 | ||
| 648 | /********************* START TXPOWER *****************************************/ | 648 | /********************* START TEMPERATURE *************************************/ |
| 649 | |||
| 650 | enum { | ||
| 651 | CALIB_CH_GROUP_1 = 0, | ||
| 652 | CALIB_CH_GROUP_2 = 1, | ||
| 653 | CALIB_CH_GROUP_3 = 2, | ||
| 654 | CALIB_CH_GROUP_4 = 3, | ||
| 655 | CALIB_CH_GROUP_5 = 4, | ||
| 656 | CALIB_CH_GROUP_MAX | ||
| 657 | }; | ||
| 658 | 649 | ||
| 659 | /* Temperature calibration offset is 3% 0C in Kelvin */ | 650 | /* |
| 651 | * 4965 temperature calculation. | ||
| 652 | * | ||
| 653 | * The driver must calculate the device temperature before calculating | ||
| 654 | * a txpower setting (amplifier gain is temperature dependent). The | ||
| 655 | * calculation uses 4 measurements, 3 of which (R1, R2, R3) are calibration | ||
| 656 | * values used for the life of the driver, and one of which (R4) is the | ||
| 657 | * real-time temperature indicator. | ||
| 658 | * | ||
| 659 | * uCode provides all 4 values to the driver via the "initialize alive" | ||
| 660 | * notification (see struct iwl4965_init_alive_resp). After the runtime uCode | ||
| 661 | * image loads, uCode updates the R4 value via statistics notifications | ||
| 662 | * (see STATISTICS_NOTIFICATION), which occur after each received beacon | ||
| 663 | * when associated, or can be requested via REPLY_STATISTICS_CMD. | ||
| 664 | * | ||
| 665 | * NOTE: uCode provides the R4 value as a 23-bit signed value. Driver | ||
| 666 | * must sign-extend to 32 bits before applying formula below. | ||
| 667 | * | ||
| 668 | * Formula: | ||
| 669 | * | ||
| 670 | * degrees Kelvin = ((97 * 259 * (R4 - R2) / (R3 - R1)) / 100) + 8 | ||
| 671 | * | ||
| 672 | * NOTE: The basic formula is 259 * (R4-R2) / (R3-R1). The 97/100 is | ||
| 673 | * an additional correction, which should be centered around 0 degrees | ||
| 674 | * Celsius (273 degrees Kelvin). The 8 (3 percent of 273) compensates for | ||
| 675 | * centering the 97/100 correction around 0 degrees K. | ||
| 676 | * | ||
| 677 | * Add 273 to Kelvin value to find degrees Celsius, for comparing current | ||
| 678 | * temperature with factory-measured temperatures when calculating txpower | ||
| 679 | * settings. | ||
| 680 | */ | ||
| 660 | #define TEMPERATURE_CALIB_KELVIN_OFFSET 8 | 681 | #define TEMPERATURE_CALIB_KELVIN_OFFSET 8 |
| 661 | #define TEMPERATURE_CALIB_A_VAL 259 | 682 | #define TEMPERATURE_CALIB_A_VAL 259 |
| 662 | 683 | ||
| 684 | /* Limit range of calculated temperature to be between these Kelvin values */ | ||
| 663 | #define IWL_TX_POWER_TEMPERATURE_MIN (263) | 685 | #define IWL_TX_POWER_TEMPERATURE_MIN (263) |
| 664 | #define IWL_TX_POWER_TEMPERATURE_MAX (410) | 686 | #define IWL_TX_POWER_TEMPERATURE_MAX (410) |
| 665 | 687 | ||
| @@ -667,6 +689,19 @@ enum { | |||
| 667 | (((t) < IWL_TX_POWER_TEMPERATURE_MIN) || \ | 689 | (((t) < IWL_TX_POWER_TEMPERATURE_MIN) || \ |
| 668 | ((t) > IWL_TX_POWER_TEMPERATURE_MAX)) | 690 | ((t) > IWL_TX_POWER_TEMPERATURE_MAX)) |
| 669 | 691 | ||
| 692 | /********************* END TEMPERATURE ***************************************/ | ||
| 693 | |||
| 694 | /********************* START TXPOWER *****************************************/ | ||
| 695 | |||
| 696 | enum { | ||
| 697 | CALIB_CH_GROUP_1 = 0, | ||
| 698 | CALIB_CH_GROUP_2 = 1, | ||
| 699 | CALIB_CH_GROUP_3 = 2, | ||
| 700 | CALIB_CH_GROUP_4 = 3, | ||
| 701 | CALIB_CH_GROUP_5 = 4, | ||
| 702 | CALIB_CH_GROUP_MAX | ||
| 703 | }; | ||
| 704 | |||
| 670 | #define IWL_TX_POWER_MIMO_REGULATORY_COMPENSATION (6) | 705 | #define IWL_TX_POWER_MIMO_REGULATORY_COMPENSATION (6) |
| 671 | 706 | ||
| 672 | #define IWL_TX_POWER_TARGET_POWER_MIN (0) /* 0 dBm = 1 milliwatt */ | 707 | #define IWL_TX_POWER_TARGET_POWER_MIN (0) /* 0 dBm = 1 milliwatt */ |
