mirror of https://gitee.com/openkylin/linux.git
iwlwifi: add iwl_hw_detect function to iwl core
This patch add iwl_hw_detect function to iwl core Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
91238714af
commit
b661c8190e
|
@ -739,7 +739,6 @@ int iwl4965_hw_nic_init(struct iwl_priv *priv)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct iwl4965_rx_queue *rxq = &priv->rxq;
|
struct iwl4965_rx_queue *rxq = &priv->rxq;
|
||||||
u8 rev_id;
|
|
||||||
u8 val_link;
|
u8 val_link;
|
||||||
u32 val;
|
u32 val;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -751,18 +750,11 @@ int iwl4965_hw_nic_init(struct iwl_priv *priv)
|
||||||
iwl_write32(priv, CSR_INT_COALESCING, 512 / 32);
|
iwl_write32(priv, CSR_INT_COALESCING, 512 / 32);
|
||||||
spin_unlock_irqrestore(&priv->lock, flags);
|
spin_unlock_irqrestore(&priv->lock, flags);
|
||||||
|
|
||||||
/* Determine HW type */
|
|
||||||
ret = pci_read_config_byte(priv->pci_dev, PCI_REVISION_ID, &rev_id);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
IWL_DEBUG_INFO("HW Revision ID = 0x%X\n", rev_id);
|
|
||||||
|
|
||||||
ret = priv->cfg->ops->lib->apm_ops.set_pwr_src(priv, IWL_PWR_SRC_VMAIN);
|
ret = priv->cfg->ops->lib->apm_ops.set_pwr_src(priv, IWL_PWR_SRC_VMAIN);
|
||||||
|
|
||||||
spin_lock_irqsave(&priv->lock, flags);
|
spin_lock_irqsave(&priv->lock, flags);
|
||||||
|
|
||||||
if ((rev_id & 0x80) == 0x80 && (rev_id & 0x7f) < 8) {
|
if ((priv->rev_id & 0x80) == 0x80 && (priv->rev_id & 0x7f) < 8) {
|
||||||
pci_read_config_dword(priv->pci_dev, PCI_REG_WUM8, &val);
|
pci_read_config_dword(priv->pci_dev, PCI_REG_WUM8, &val);
|
||||||
/* Enable No Snoop field */
|
/* Enable No Snoop field */
|
||||||
pci_write_config_dword(priv->pci_dev, PCI_REG_WUM8,
|
pci_write_config_dword(priv->pci_dev, PCI_REG_WUM8,
|
||||||
|
|
|
@ -1003,6 +1003,9 @@ struct iwl_priv {
|
||||||
|
|
||||||
/* pci hardware address support */
|
/* pci hardware address support */
|
||||||
void __iomem *hw_base;
|
void __iomem *hw_base;
|
||||||
|
u32 hw_rev;
|
||||||
|
u32 hw_wa_rev;
|
||||||
|
u8 rev_id;
|
||||||
|
|
||||||
/* uCode images, save to reload in case of failure */
|
/* uCode images, save to reload in case of failure */
|
||||||
struct fw_desc ucode_code; /* runtime inst */
|
struct fw_desc ucode_code; /* runtime inst */
|
||||||
|
|
|
@ -36,6 +36,7 @@ struct iwl_priv; /* FIXME: remove */
|
||||||
#include "iwl-eeprom.h"
|
#include "iwl-eeprom.h"
|
||||||
#include "iwl-4965.h" /* FIXME: remove */
|
#include "iwl-4965.h" /* FIXME: remove */
|
||||||
#include "iwl-core.h"
|
#include "iwl-core.h"
|
||||||
|
#include "iwl-io.h"
|
||||||
#include "iwl-rfkill.h"
|
#include "iwl-rfkill.h"
|
||||||
#include "iwl-power.h"
|
#include "iwl-power.h"
|
||||||
|
|
||||||
|
@ -73,6 +74,14 @@ struct ieee80211_hw *iwl_alloc_all(struct iwl_cfg *cfg,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(iwl_alloc_all);
|
EXPORT_SYMBOL(iwl_alloc_all);
|
||||||
|
|
||||||
|
void iwl_hw_detect(struct iwl_priv *priv)
|
||||||
|
{
|
||||||
|
priv->hw_rev = _iwl_read32(priv, CSR_HW_REV);
|
||||||
|
priv->hw_wa_rev = _iwl_read32(priv, CSR_HW_REV_WA_REG);
|
||||||
|
pci_read_config_byte(priv->pci_dev, PCI_REVISION_ID, &priv->rev_id);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(iwl_hw_detect);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* iwlcore_clear_stations_table - Clear the driver's station table
|
* iwlcore_clear_stations_table - Clear the driver's station table
|
||||||
*
|
*
|
||||||
|
|
|
@ -159,6 +159,7 @@ struct iwl_cfg {
|
||||||
|
|
||||||
struct ieee80211_hw *iwl_alloc_all(struct iwl_cfg *cfg,
|
struct ieee80211_hw *iwl_alloc_all(struct iwl_cfg *cfg,
|
||||||
struct ieee80211_ops *hw_ops);
|
struct ieee80211_ops *hw_ops);
|
||||||
|
void iwl_hw_detect(struct iwl_priv *priv);
|
||||||
|
|
||||||
void iwlcore_clear_stations_table(struct iwl_priv *priv);
|
void iwlcore_clear_stations_table(struct iwl_priv *priv);
|
||||||
void iwlcore_reset_qos(struct iwl_priv *priv);
|
void iwlcore_reset_qos(struct iwl_priv *priv);
|
||||||
|
|
|
@ -194,6 +194,11 @@
|
||||||
#define CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW (0x08000000)
|
#define CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW (0x08000000)
|
||||||
|
|
||||||
|
|
||||||
|
/* HW REV */
|
||||||
|
#define CSR_HW_REV_TYPE_MSK (0x00000F0)
|
||||||
|
#define CSR_HW_REV_TYPE_3945 (0x00000D0)
|
||||||
|
#define CSR_HW_REV_TYPE_4965 (0x0000000)
|
||||||
|
|
||||||
/* EEPROM REG */
|
/* EEPROM REG */
|
||||||
#define CSR_EEPROM_REG_READ_VALID_MSK (0x00000001)
|
#define CSR_EEPROM_REG_READ_VALID_MSK (0x00000001)
|
||||||
#define CSR_EEPROM_REG_BIT_CMD (0x00000002)
|
#define CSR_EEPROM_REG_BIT_CMD (0x00000002)
|
||||||
|
|
|
@ -7459,8 +7459,10 @@ static int iwl4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
|
||||||
(unsigned long long) pci_resource_len(pdev, 0));
|
(unsigned long long) pci_resource_len(pdev, 0));
|
||||||
IWL_DEBUG_INFO("pci_resource_base = %p\n", priv->hw_base);
|
IWL_DEBUG_INFO("pci_resource_base = %p\n", priv->hw_base);
|
||||||
|
|
||||||
|
iwl_hw_detect(priv);
|
||||||
printk(KERN_INFO DRV_NAME
|
printk(KERN_INFO DRV_NAME
|
||||||
": Detected Intel Wireless WiFi Link %s\n", priv->cfg->name);
|
": Detected Intel Wireless WiFi Link %s REV=0x%X\n",
|
||||||
|
priv->cfg->name, priv->hw_rev);
|
||||||
|
|
||||||
/* amp init */
|
/* amp init */
|
||||||
err = priv->cfg->ops->lib->apm_ops.init(priv);
|
err = priv->cfg->ops->lib->apm_ops.init(priv);
|
||||||
|
|
Loading…
Reference in New Issue