]> git.hungrycats.org Git - linux/commitdiff
iwlagn: modify digital SVR for 1000
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Fri, 17 Jul 2009 16:30:14 +0000 (09:30 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 5 Oct 2009 16:33:10 +0000 (09:33 -0700)
commit 02c06e4abc0680afd31bf481a803541556757fb6 upstream.

On 1000, there are two Switching Voltage Regulators (SVR). The first one
apply digital voltage level (1.32V) for PCIe block and core. We need to
use this regulator to solve a stability issue related to noisy DC2DC
line in the silicon.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/wireless/iwlwifi/iwl-5000.c
drivers/net/wireless/iwlwifi/iwl-prph.h

index 2038e11240559b04c091a793c37bc021eb39f233..a9ea3b5d49d5826bcac2add1ad5863d3698b591e 100644 (file)
@@ -239,6 +239,13 @@ static void iwl5000_nic_config(struct iwl_priv *priv)
                                APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS,
                                ~APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS);
 
+       if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_1000) {
+               /* Setting digital SVR for 1000 card to 1.32V */
+               iwl_set_bits_mask_prph(priv, APMG_DIGITAL_SVR_REG,
+                                       APMG_SVR_DIGITAL_VOLTAGE_1_32,
+                                       ~APMG_SVR_VOLTAGE_CONFIG_BIT_MSK);
+       }
+
        spin_unlock_irqrestore(&priv->lock, flags);
 }
 
index 3b9cac3fd216701e3d8b0e8e62f8bbffe1d53ab7..d393e8f021024246594296dc4e6f764e5e4606e0 100644 (file)
@@ -80,6 +80,8 @@
 #define APMG_RFKILL_REG                        (APMG_BASE + 0x0014)
 #define APMG_RTC_INT_STT_REG           (APMG_BASE + 0x001c)
 #define APMG_RTC_INT_MSK_REG           (APMG_BASE + 0x0020)
+#define APMG_DIGITAL_SVR_REG           (APMG_BASE + 0x0058)
+#define APMG_ANALOG_SVR_REG            (APMG_BASE + 0x006C)
 
 #define APMG_CLK_VAL_DMA_CLK_RQT       (0x00000200)
 #define APMG_CLK_VAL_BSM_CLK_RQT       (0x00000800)
@@ -91,7 +93,8 @@
 #define APMG_PS_CTRL_VAL_PWR_SRC_VMAIN         (0x00000000)
 #define APMG_PS_CTRL_VAL_PWR_SRC_MAX           (0x01000000) /* 3945 only */
 #define APMG_PS_CTRL_VAL_PWR_SRC_VAUX          (0x02000000)
-
+#define APMG_SVR_VOLTAGE_CONFIG_BIT_MSK        (0x000001E0) /* bit 8:5 */
+#define APMG_SVR_DIGITAL_VOLTAGE_1_32          (0x00000060)
 
 #define APMG_PCIDEV_STT_VAL_L1_ACT_DIS         (0x00000800)