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

Commit a078a1fd authored by Stanislaw Gruszka's avatar Stanislaw Gruszka Committed by John W. Linville
Browse files

iwlegacy: enable only rfkill interrupt when device is down



Add two below iwlwifi commits to iwlegacy:

commit 554d1d02
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Thu Dec 23 12:38:21 2010 +0100

    iwlagn: enable only rfkill interrupt when device is down

commit 3dd823e6
Author: Don Fry <donald.h.fry@intel.com>
Date:   Sun Feb 6 09:29:45 2011 -0800

    iwlagn: Re-enable RF_KILL interrupt when down

Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent ab42b404
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -149,6 +149,12 @@ static inline void iwl_legacy_disable_interrupts(struct iwl_priv *priv)
	IWL_DEBUG_ISR(priv, "Disabled interrupts\n");
	IWL_DEBUG_ISR(priv, "Disabled interrupts\n");
}
}


static inline void iwl_legacy_enable_rfkill_int(struct iwl_priv *priv)
{
	IWL_DEBUG_ISR(priv, "Enabling rfkill interrupt\n");
	iwl_write32(priv, CSR_INT_MASK, CSR_INT_BIT_RF_KILL);
}

static inline void iwl_legacy_enable_interrupts(struct iwl_priv *priv)
static inline void iwl_legacy_enable_interrupts(struct iwl_priv *priv)
{
{
	IWL_DEBUG_ISR(priv, "Enabling interrupts\n");
	IWL_DEBUG_ISR(priv, "Enabling interrupts\n");
+8 −4
Original line number Original line Diff line number Diff line
@@ -1072,6 +1072,9 @@ static void iwl4965_irq_tasklet(struct iwl_priv *priv)
	/* only Re-enable if diabled by irq */
	/* only Re-enable if diabled by irq */
	if (test_bit(STATUS_INT_ENABLED, &priv->status))
	if (test_bit(STATUS_INT_ENABLED, &priv->status))
		iwl_legacy_enable_interrupts(priv);
		iwl_legacy_enable_interrupts(priv);
	/* Re-enable RF_KILL if it occurred */
	else if (handled & CSR_INT_BIT_RF_KILL)
		iwl_legacy_enable_rfkill_int(priv);


#ifdef CONFIG_IWLWIFI_LEGACY_DEBUG
#ifdef CONFIG_IWLWIFI_LEGACY_DEBUG
	if (iwl_legacy_get_debug_level(priv) & (IWL_DL_ISR)) {
	if (iwl_legacy_get_debug_level(priv) & (IWL_DL_ISR)) {
@@ -2624,9 +2627,10 @@ void iwl4965_mac_stop(struct ieee80211_hw *hw)


	flush_workqueue(priv->workqueue);
	flush_workqueue(priv->workqueue);


	/* enable interrupts again in order to receive rfkill changes */
	/* User space software may expect getting rfkill changes
	 * even if interface is down */
	iwl_write32(priv, CSR_INT, 0xFFFFFFFF);
	iwl_write32(priv, CSR_INT, 0xFFFFFFFF);
	iwl_legacy_enable_interrupts(priv);
	iwl_legacy_enable_rfkill_int(priv);


	IWL_DEBUG_MAC80211(priv, "leave\n");
	IWL_DEBUG_MAC80211(priv, "leave\n");
}
}
@@ -3406,14 +3410,14 @@ iwl4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
	 * 8. Enable interrupts and read RFKILL state
	 * 8. Enable interrupts and read RFKILL state
	 *********************************************/
	 *********************************************/


	/* enable interrupts if needed: hw bug w/a */
	/* enable rfkill interrupt: hw bug w/a */
	pci_read_config_word(priv->pci_dev, PCI_COMMAND, &pci_cmd);
	pci_read_config_word(priv->pci_dev, PCI_COMMAND, &pci_cmd);
	if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
	if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
		pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
		pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
		pci_write_config_word(priv->pci_dev, PCI_COMMAND, pci_cmd);
		pci_write_config_word(priv->pci_dev, PCI_COMMAND, pci_cmd);
	}
	}


	iwl_legacy_enable_interrupts(priv);
	iwl_legacy_enable_rfkill_int(priv);


	/* If platform's RF_KILL switch is NOT set to KILL */
	/* If platform's RF_KILL switch is NOT set to KILL */
	if (iwl_read32(priv, CSR_GP_CNTRL) &
	if (iwl_read32(priv, CSR_GP_CNTRL) &