Commit eef31718 authored by Emmanuel Grumbach's avatar Emmanuel Grumbach

iwlwifi: pcie: clean up ICT allocation code

Since iwl_trans_pcie_alloc_ict is called in the PCIe
allocation code, we always set CSR_INT_BIT_RX_PERIODIC.
Move that bit to the default list of interrupts we enable
and simplify the code.
Also use dma_zalloc_ and avoid to memset the memory
afterwards.
trans_pcie->ict_index is 0 since trans_pcie has just been
kzalloced, remove the redundant assignment.
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent cf4ef654
...@@ -198,7 +198,8 @@ ...@@ -198,7 +198,8 @@
CSR_INT_BIT_RF_KILL | \ CSR_INT_BIT_RF_KILL | \
CSR_INT_BIT_SW_RX | \ CSR_INT_BIT_SW_RX | \
CSR_INT_BIT_WAKEUP | \ CSR_INT_BIT_WAKEUP | \
CSR_INT_BIT_ALIVE) CSR_INT_BIT_ALIVE | \
CSR_INT_BIT_RX_PERIODIC)
/* interrupt flags in FH (flow handler) (PCI busmaster DMA) */ /* interrupt flags in FH (flow handler) (PCI busmaster DMA) */
#define CSR_FH_INT_BIT_ERR (1 << 31) /* Error */ #define CSR_FH_INT_BIT_ERR (1 << 31) /* Error */
......
...@@ -1048,7 +1048,7 @@ int iwl_pcie_alloc_ict(struct iwl_trans *trans) ...@@ -1048,7 +1048,7 @@ int iwl_pcie_alloc_ict(struct iwl_trans *trans)
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
trans_pcie->ict_tbl = trans_pcie->ict_tbl =
dma_alloc_coherent(trans->dev, ICT_SIZE, dma_zalloc_coherent(trans->dev, ICT_SIZE,
&trans_pcie->ict_tbl_dma, &trans_pcie->ict_tbl_dma,
GFP_KERNEL); GFP_KERNEL);
if (!trans_pcie->ict_tbl) if (!trans_pcie->ict_tbl)
...@@ -1060,17 +1060,10 @@ int iwl_pcie_alloc_ict(struct iwl_trans *trans) ...@@ -1060,17 +1060,10 @@ int iwl_pcie_alloc_ict(struct iwl_trans *trans)
return -EINVAL; return -EINVAL;
} }
IWL_DEBUG_ISR(trans, "ict dma addr %Lx\n", IWL_DEBUG_ISR(trans, "ict dma addr %Lx ict vir addr %p\n",
(unsigned long long)trans_pcie->ict_tbl_dma); (unsigned long long)trans_pcie->ict_tbl_dma,
trans_pcie->ict_tbl);
IWL_DEBUG_ISR(trans, "ict vir addr %p\n", trans_pcie->ict_tbl);
/* reset table and index to all 0 */
memset(trans_pcie->ict_tbl, 0, ICT_SIZE);
trans_pcie->ict_index = 0;
/* add periodic RX interrupt */
trans_pcie->inta_mask |= CSR_INT_BIT_RX_PERIODIC;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment