Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7b63581 authored by Tomas Winkler's avatar Tomas Winkler Committed by John W. Linville
Browse files

iwlwifi: cleanup PCI register handling



This patch cleans up pci registers handling.

Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarZhu Yi <yi.zhu@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 926f0b2e
Loading
Loading
Loading
Loading
+7 −6
Original line number Original line Diff line number Diff line
@@ -98,16 +98,17 @@
#define IWL_RSSI_OFFSET	44
#define IWL_RSSI_OFFSET	44




#include "iwl-commands.h"


/* PCI registers */
/* PCI registers */
#define PCI_LINK_CTRL      0x0F0	/* 1 byte */
#define PCI_CFG_RETRY_TIMEOUT	0x041
#define PCI_POWER_SOURCE   0x0C8
#define PCI_CFG_POWER_SOURCE	0x0C8
#define PCI_REG_WUM8		0x0E8
#define PCI_REG_WUM8		0x0E8
#define PCI_CFG_LINK_CTRL	0x0F0


/* PCI register values */
/* PCI register values */
#define PCI_LINK_VAL_L0S_EN	0x01
#define PCI_CFG_LINK_CTRL_VAL_L0S_EN	0x01
#define PCI_LINK_VAL_L1_EN	0x02
#define PCI_CFG_LINK_CTRL_VAL_L1_EN	0x02
#define PCI_CFG_CMD_REG_INT_DIS_MSK	0x04
#define PCI_CFG_PMC_PME_FROM_D3COLD_SUPPORT         (0x80000000)
#define PCI_CFG_PMC_PME_FROM_D3COLD_SUPPORT         (0x80000000)


#define TFD_QUEUE_SIZE_MAX      (256)
#define TFD_QUEUE_SIZE_MAX      (256)
+3 −3
Original line number Original line Diff line number Diff line
@@ -399,7 +399,7 @@ static void iwl4965_nic_config(struct iwl_priv *priv)
	unsigned long flags;
	unsigned long flags;
	u32 val;
	u32 val;
	u16 radio_cfg;
	u16 radio_cfg;
	u8 val_link;
	u16 link;


	spin_lock_irqsave(&priv->lock, flags);
	spin_lock_irqsave(&priv->lock, flags);


@@ -410,10 +410,10 @@ static void iwl4965_nic_config(struct iwl_priv *priv)
				       val & ~(1 << 11));
				       val & ~(1 << 11));
	}
	}


	pci_read_config_byte(priv->pci_dev, PCI_LINK_CTRL, &val_link);
	pci_read_config_word(priv->pci_dev, PCI_CFG_LINK_CTRL, &link);


	/* L1 is enabled by BIOS */
	/* L1 is enabled by BIOS */
	if ((val_link & PCI_LINK_VAL_L1_EN) == PCI_LINK_VAL_L1_EN)
	if ((link & PCI_CFG_LINK_CTRL_VAL_L1_EN) == PCI_CFG_LINK_CTRL_VAL_L1_EN)
		/* diable L0S disabled L1A enabled */
		/* diable L0S disabled L1A enabled */
		iwl_set_bit(priv, CSR_GIO_REG, CSR_GIO_REG_VAL_L0S_ENABLED);
		iwl_set_bit(priv, CSR_GIO_REG, CSR_GIO_REG_VAL_L0S_ENABLED);
	else
	else
+3 −3
Original line number Original line Diff line number Diff line
@@ -208,14 +208,14 @@ static void iwl5000_nic_config(struct iwl_priv *priv)
{
{
	unsigned long flags;
	unsigned long flags;
	u16 radio_cfg;
	u16 radio_cfg;
	u8 val_link;
	u16 link;


	spin_lock_irqsave(&priv->lock, flags);
	spin_lock_irqsave(&priv->lock, flags);


	pci_read_config_byte(priv->pci_dev, PCI_LINK_CTRL, &val_link);
	pci_read_config_word(priv->pci_dev, PCI_CFG_LINK_CTRL, &link);


	/* L1 is enabled by BIOS */
	/* L1 is enabled by BIOS */
	if ((val_link & PCI_LINK_VAL_L1_EN) == PCI_LINK_VAL_L1_EN)
	if ((link & PCI_CFG_LINK_CTRL_VAL_L1_EN) == PCI_CFG_LINK_CTRL_VAL_L1_EN)
		/* diable L0S disabled L1A enabled */
		/* diable L0S disabled L1A enabled */
		iwl_set_bit(priv, CSR_GIO_REG, CSR_GIO_REG_VAL_L0S_ENABLED);
		iwl_set_bit(priv, CSR_GIO_REG, CSR_GIO_REG_VAL_L0S_ENABLED);
	else
	else
+5 −4
Original line number Original line Diff line number Diff line
@@ -1273,7 +1273,7 @@ int iwl4965_set_pwr_src(struct iwl_priv *priv, enum iwl_pwr_src src)


	if (src == IWL_PWR_SRC_VAUX) {
	if (src == IWL_PWR_SRC_VAUX) {
		u32 val;
		u32 val;
		ret = pci_read_config_dword(priv->pci_dev, PCI_POWER_SOURCE,
		ret = pci_read_config_dword(priv->pci_dev, PCI_CFG_POWER_SOURCE,
					    &val);
					    &val);


		if (val & PCI_CFG_PMC_PME_FROM_D3COLD_SUPPORT)
		if (val & PCI_CFG_PMC_PME_FROM_D3COLD_SUPPORT)
@@ -4229,9 +4229,6 @@ static int iwl4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e


	pci_set_drvdata(pdev, priv);
	pci_set_drvdata(pdev, priv);


	/* We disable the RETRY_TIMEOUT register (0x41) to keep
	 * PCI Tx retries from interfering with C3 CPU state */
	pci_write_config_byte(pdev, 0x41, 0x00);


	/***********************
	/***********************
	 * 3. Read REV register
	 * 3. Read REV register
@@ -4251,6 +4248,10 @@ static int iwl4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
		": Detected Intel Wireless WiFi Link %s REV=0x%X\n",
		": Detected Intel Wireless WiFi Link %s REV=0x%X\n",
		priv->cfg->name, priv->hw_rev);
		priv->cfg->name, priv->hw_rev);


	/* We disable the RETRY_TIMEOUT register (0x41) to keep
	 * PCI Tx retries from interfering with C3 CPU state */
	pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00);

	/* amp init */
	/* amp init */
	err = priv->cfg->ops->lib->apm_ops.init(priv);
	err = priv->cfg->ops->lib->apm_ops.init(priv);
	if (err < 0) {
	if (err < 0) {
+2 −2
Original line number Original line Diff line number Diff line
@@ -2026,8 +2026,8 @@ struct iwl4965_spectrum_notification {
 *   bit 2 - '0' PM have to walk up every DTIM
 *   bit 2 - '0' PM have to walk up every DTIM
 *           '1' PM could sleep over DTIM till listen Interval.
 *           '1' PM could sleep over DTIM till listen Interval.
 * PCI power managed
 * PCI power managed
 *   bit 3 - '0' (PCI_LINK_CTRL & 0x1)
 *   bit 3 - '0' (PCI_CFG_LINK_CTRL & 0x1)
 *           '1' !(PCI_LINK_CTRL & 0x1)
 *           '1' !(PCI_CFG_LINK_CTRL & 0x1)
 * Force sleep Modes
 * Force sleep Modes
 *   bit 31/30- '00' use both mac/xtal sleeps
 *   bit 31/30- '00' use both mac/xtal sleeps
 *              '01' force Mac sleep
 *              '01' force Mac sleep
Loading