mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-05 10:56:48 +07:00
iwlwifi: trans: configure the scheduler enable register
Currently the firmware is handling this, but that is wrong as it then needs to assume a certain command queue, therefore this should be in the driver; add it here so it can be removed from the firmware in the future. Signed-off-by: Avri Altman <avri.altman@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
64ba893066
commit
002a9e2677
@ -281,6 +281,7 @@
|
||||
#define SCD_CHAINEXT_EN (SCD_BASE + 0x244)
|
||||
#define SCD_AGGR_SEL (SCD_BASE + 0x248)
|
||||
#define SCD_INTERRUPT_MASK (SCD_BASE + 0x108)
|
||||
#define SCD_EN_CTRL (SCD_BASE + 0x254)
|
||||
|
||||
static inline unsigned int SCD_QUEUE_WRPTR(unsigned int chnl)
|
||||
{
|
||||
|
@ -109,4 +109,10 @@ static inline void iwl_scd_deactivate_fifos(struct iwl_trans *trans)
|
||||
{
|
||||
iwl_write_prph(trans, SCD_TXFACT, 0);
|
||||
}
|
||||
|
||||
static inline void iwl_scd_enable_set_active(struct iwl_trans *trans,
|
||||
u32 value)
|
||||
{
|
||||
iwl_write_prph(trans, SCD_EN_CTRL, value);
|
||||
}
|
||||
#endif
|
||||
|
@ -1078,6 +1078,10 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, u16 ssn,
|
||||
if (cfg) {
|
||||
fifo = cfg->fifo;
|
||||
|
||||
/* Disable the scheduler prior configuring the cmd queue */
|
||||
if (txq_id == trans_pcie->cmd_queue)
|
||||
iwl_scd_enable_set_active(trans, 0);
|
||||
|
||||
/* Stop this Tx queue before configuring it */
|
||||
iwl_scd_txq_set_inactive(trans, txq_id);
|
||||
|
||||
@ -1135,6 +1139,10 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, u16 ssn,
|
||||
(cfg->fifo << SCD_QUEUE_STTS_REG_POS_TXF) |
|
||||
(1 << SCD_QUEUE_STTS_REG_POS_WSL) |
|
||||
SCD_QUEUE_STTS_REG_MSK);
|
||||
|
||||
/* enable the scheduler for this queue (only) */
|
||||
if (txq_id == trans_pcie->cmd_queue)
|
||||
iwl_scd_enable_set_active(trans, BIT(txq_id));
|
||||
}
|
||||
|
||||
trans_pcie->txq[txq_id].active = true;
|
||||
|
Loading…
Reference in New Issue
Block a user