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

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

iwlwifi-5000: add nic config handler for 5000 HW



This patch adds nic config handler for 5000 HW Family

Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f1f69415
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -86,6 +86,38 @@ static int iwl5000_apm_init(struct iwl_priv *priv)
	return ret;
}

static void iwl5000_nic_init(struct iwl_priv *priv)
{
	unsigned long flags;
	u16 radio_cfg;
	u8 val_link;

	spin_lock_irqsave(&priv->lock, flags);

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

	/* disable L1 entry -- workaround for pre-B1 */
	pci_write_config_byte(priv->pci_dev, PCI_LINK_CTRL, val_link & ~0x02);

	radio_cfg = iwl_eeprom_query16(priv, EEPROM_RADIO_CONFIG);

	/* write radio config values to register */
	if (EEPROM_RF_CFG_TYPE_MSK(radio_cfg) < EEPROM_5000_RF_CFG_TYPE_MAX)
		iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG,
			    EEPROM_RF_CFG_TYPE_MSK(radio_cfg) |
			    EEPROM_RF_CFG_STEP_MSK(radio_cfg) |
			    EEPROM_RF_CFG_DASH_MSK(radio_cfg));

	/* set CSR_HW_CONFIG_REG for uCode use */
	iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG,
		    CSR_HW_IF_CONFIG_REG_BIT_RADIO_SI |
		    CSR_HW_IF_CONFIG_REG_BIT_MAC_SI);

	spin_unlock_irqrestore(&priv->lock, flags);
}



/*
 * EEPROM
 */
@@ -407,6 +439,7 @@ static struct iwl_lib_ops iwl5000_lib = {
	.txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl,
	.apm_ops = {
		.init =	iwl5000_apm_init,
		.config = iwl5000_nic_init,
		.set_pwr_src = iwl4965_set_pwr_src,
	},
	.eeprom_ops = {
+1 −0
Original line number Diff line number Diff line
@@ -295,6 +295,7 @@ struct iwl_eeprom_calib_info {

#define EEPROM_3945_RF_CFG_TYPE_MAX  0x0
#define EEPROM_4965_RF_CFG_TYPE_MAX  0x1
#define EEPROM_5000_RF_CFG_TYPE_MAX  0x3

/*
 * Per-channel regulatory data.