• Home
  • Raw
  • Download

Lines Matching refs:trans

139 int iwl_pcie_rx_stop(struct iwl_trans *trans)  in iwl_pcie_rx_stop()  argument
141 iwl_write_direct32(trans, FH_MEM_RCSR_CHNL0_CONFIG_REG, 0); in iwl_pcie_rx_stop()
142 return iwl_poll_direct_bit(trans, FH_MEM_RSSR_RX_STATUS_REG, in iwl_pcie_rx_stop()
149 static void iwl_pcie_rxq_inc_wr_ptr(struct iwl_trans *trans) in iwl_pcie_rxq_inc_wr_ptr() argument
151 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rxq_inc_wr_ptr()
162 if (!trans->cfg->base_params->shadow_reg_enable && in iwl_pcie_rxq_inc_wr_ptr()
163 test_bit(STATUS_TPOWER_PMI, &trans->status)) { in iwl_pcie_rxq_inc_wr_ptr()
164 reg = iwl_read32(trans, CSR_UCODE_DRV_GP1); in iwl_pcie_rxq_inc_wr_ptr()
167 IWL_DEBUG_INFO(trans, "Rx queue requesting wakeup, GP1 = 0x%x\n", in iwl_pcie_rxq_inc_wr_ptr()
169 iwl_set_bit(trans, CSR_GP_CNTRL, in iwl_pcie_rxq_inc_wr_ptr()
177 iwl_write32(trans, FH_RSCSR_CHNL0_WPTR, rxq->write_actual); in iwl_pcie_rxq_inc_wr_ptr()
180 static void iwl_pcie_rxq_check_wrptr(struct iwl_trans *trans) in iwl_pcie_rxq_check_wrptr() argument
182 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rxq_check_wrptr()
190 iwl_pcie_rxq_inc_wr_ptr(trans); in iwl_pcie_rxq_check_wrptr()
208 static void iwl_pcie_rxq_restock(struct iwl_trans *trans) in iwl_pcie_rxq_restock() argument
210 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rxq_restock()
222 if (!test_bit(STATUS_DEVICE_ENABLED, &trans->status)) in iwl_pcie_rxq_restock()
252 iwl_pcie_rxq_inc_wr_ptr(trans); in iwl_pcie_rxq_restock()
266 static void iwl_pcie_rxq_alloc_rbs(struct iwl_trans *trans, gfp_t priority) in iwl_pcie_rxq_alloc_rbs() argument
268 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rxq_alloc_rbs()
292 IWL_DEBUG_INFO(trans, "alloc_pages failed, " in iwl_pcie_rxq_alloc_rbs()
298 IWL_CRIT(trans, "Failed to alloc_pages with %s." in iwl_pcie_rxq_alloc_rbs()
325 dma_map_page(trans->dev, page, 0, in iwl_pcie_rxq_alloc_rbs()
328 if (dma_mapping_error(trans->dev, rxb->page_dma)) { in iwl_pcie_rxq_alloc_rbs()
350 static void iwl_pcie_rxq_free_rbs(struct iwl_trans *trans) in iwl_pcie_rxq_free_rbs() argument
352 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rxq_free_rbs()
361 dma_unmap_page(trans->dev, rxq->pool[i].page_dma, in iwl_pcie_rxq_free_rbs()
377 static void iwl_pcie_rx_replenish(struct iwl_trans *trans, gfp_t gfp) in iwl_pcie_rx_replenish() argument
379 iwl_pcie_rxq_alloc_rbs(trans, gfp); in iwl_pcie_rx_replenish()
381 iwl_pcie_rxq_restock(trans); in iwl_pcie_rx_replenish()
389 iwl_pcie_rx_replenish(trans_pcie->trans, GFP_KERNEL); in iwl_pcie_rx_replenish_work()
392 static int iwl_pcie_rx_alloc(struct iwl_trans *trans) in iwl_pcie_rx_alloc() argument
394 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rx_alloc()
396 struct device *dev = trans->dev; in iwl_pcie_rx_alloc()
428 static void iwl_pcie_rx_hw_init(struct iwl_trans *trans, struct iwl_rxq *rxq) in iwl_pcie_rx_hw_init() argument
430 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rx_hw_init()
440 iwl_write_direct32(trans, FH_MEM_RCSR_CHNL0_CONFIG_REG, 0); in iwl_pcie_rx_hw_init()
442 iwl_write_direct32(trans, FH_MEM_RCSR_CHNL0_RBDCB_WPTR, 0); in iwl_pcie_rx_hw_init()
443 iwl_write_direct32(trans, FH_MEM_RCSR_CHNL0_FLUSH_RB_REQ, 0); in iwl_pcie_rx_hw_init()
444 iwl_write_direct32(trans, FH_RSCSR_CHNL0_RDPTR, 0); in iwl_pcie_rx_hw_init()
447 iwl_write_direct32(trans, FH_RSCSR_CHNL0_RBDCB_WPTR_REG, 0); in iwl_pcie_rx_hw_init()
450 iwl_write_direct32(trans, FH_RSCSR_CHNL0_RBDCB_BASE_REG, in iwl_pcie_rx_hw_init()
454 iwl_write_direct32(trans, FH_RSCSR_CHNL0_STTS_WPTR_REG, in iwl_pcie_rx_hw_init()
465 iwl_write_direct32(trans, FH_MEM_RCSR_CHNL0_CONFIG_REG, in iwl_pcie_rx_hw_init()
474 iwl_write8(trans, CSR_INT_COALESCING, IWL_HOST_INT_TIMEOUT_DEF); in iwl_pcie_rx_hw_init()
477 if (trans->cfg->host_interrupt_operation_mode) in iwl_pcie_rx_hw_init()
478 iwl_set_bit(trans, CSR_INT_COALESCING, IWL_HOST_INT_OPER_MODE); in iwl_pcie_rx_hw_init()
495 int iwl_pcie_rx_init(struct iwl_trans *trans) in iwl_pcie_rx_init() argument
497 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rx_init()
502 err = iwl_pcie_rx_alloc(trans); in iwl_pcie_rx_init()
512 iwl_pcie_rxq_free_rbs(trans); in iwl_pcie_rx_init()
525 iwl_pcie_rx_replenish(trans, GFP_KERNEL); in iwl_pcie_rx_init()
527 iwl_pcie_rx_hw_init(trans, rxq); in iwl_pcie_rx_init()
530 iwl_pcie_rxq_inc_wr_ptr(trans); in iwl_pcie_rx_init()
536 void iwl_pcie_rx_free(struct iwl_trans *trans) in iwl_pcie_rx_free() argument
538 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rx_free()
544 IWL_DEBUG_INFO(trans, "Free NULL rx context\n"); in iwl_pcie_rx_free()
551 iwl_pcie_rxq_free_rbs(trans); in iwl_pcie_rx_free()
554 dma_free_coherent(trans->dev, sizeof(__le32) * RX_QUEUE_SIZE, in iwl_pcie_rx_free()
560 dma_free_coherent(trans->dev, in iwl_pcie_rx_free()
564 IWL_DEBUG_INFO(trans, "Free rxq->rb_stts which is NULL\n"); in iwl_pcie_rx_free()
569 static void iwl_pcie_rx_handle_rb(struct iwl_trans *trans, in iwl_pcie_rx_handle_rb() argument
572 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rx_handle_rb()
582 dma_unmap_page(trans->dev, rxb->page_dma, max_len, DMA_FROM_DEVICE); in iwl_pcie_rx_handle_rb()
603 IWL_DEBUG_RX(trans, "cmd at offset %d: %s (0x%.2x)\n", in iwl_pcie_rx_handle_rb()
609 trace_iwlwifi_dev_rx(trans->dev, trans, pkt, len); in iwl_pcie_rx_handle_rb()
610 trace_iwlwifi_dev_rx_data(trans->dev, trans, pkt, len); in iwl_pcie_rx_handle_rb()
640 err = iwl_op_mode_rx(trans->op_mode, &rxcb, cmd); in iwl_pcie_rx_handle_rb()
658 iwl_pcie_hcmd_complete(trans, &rxcb, err); in iwl_pcie_rx_handle_rb()
660 IWL_WARN(trans, "Claim null rxb?\n"); in iwl_pcie_rx_handle_rb()
678 dma_map_page(trans->dev, rxb->page, 0, in iwl_pcie_rx_handle_rb()
681 if (dma_mapping_error(trans->dev, rxb->page_dma)) { in iwl_pcie_rx_handle_rb()
701 static void iwl_pcie_rx_handle(struct iwl_trans *trans) in iwl_pcie_rx_handle() argument
703 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_rx_handle()
719 IWL_DEBUG_RX(trans, "HW = SW = %d\n", r); in iwl_pcie_rx_handle()
735 IWL_DEBUG_RX(trans, "rxbuf: HW = %d, SW = %d (%p)\n", in iwl_pcie_rx_handle()
737 iwl_pcie_rx_handle_rb(trans, rxb); in iwl_pcie_rx_handle()
747 iwl_pcie_rx_replenish(trans, GFP_ATOMIC); in iwl_pcie_rx_handle()
759 iwl_pcie_rx_replenish(trans, GFP_ATOMIC); in iwl_pcie_rx_handle()
761 iwl_pcie_rxq_restock(trans); in iwl_pcie_rx_handle()
770 static void iwl_pcie_irq_handle_error(struct iwl_trans *trans) in iwl_pcie_irq_handle_error() argument
772 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_irq_handle_error()
775 if (trans->cfg->internal_wimax_coex && in iwl_pcie_irq_handle_error()
776 (!(iwl_read_prph(trans, APMG_CLK_CTRL_REG) & in iwl_pcie_irq_handle_error()
778 (iwl_read_prph(trans, APMG_PS_CTRL_REG) & in iwl_pcie_irq_handle_error()
780 clear_bit(STATUS_SYNC_HCMD_ACTIVE, &trans->status); in iwl_pcie_irq_handle_error()
781 iwl_op_mode_wimax_active(trans->op_mode); in iwl_pcie_irq_handle_error()
786 iwl_pcie_dump_csr(trans); in iwl_pcie_irq_handle_error()
787 iwl_dump_fh(trans, NULL); in iwl_pcie_irq_handle_error()
792 iwl_trans_fw_error(trans); in iwl_pcie_irq_handle_error()
795 clear_bit(STATUS_SYNC_HCMD_ACTIVE, &trans->status); in iwl_pcie_irq_handle_error()
799 static u32 iwl_pcie_int_cause_non_ict(struct iwl_trans *trans) in iwl_pcie_int_cause_non_ict() argument
803 lockdep_assert_held(&IWL_TRANS_GET_PCIE_TRANS(trans)->irq_lock); in iwl_pcie_int_cause_non_ict()
805 trace_iwlwifi_dev_irq(trans->dev); in iwl_pcie_int_cause_non_ict()
808 inta = iwl_read32(trans, CSR_INT); in iwl_pcie_int_cause_non_ict()
827 static u32 iwl_pcie_int_cause_ict(struct iwl_trans *trans) in iwl_pcie_int_cause_ict() argument
829 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_int_cause_ict()
834 trace_iwlwifi_dev_irq(trans->dev); in iwl_pcie_int_cause_ict()
840 trace_iwlwifi_dev_ict_read(trans->dev, trans_pcie->ict_index, read); in iwl_pcie_int_cause_ict()
850 IWL_DEBUG_ISR(trans, "ICT index %d value 0x%08X\n", in iwl_pcie_int_cause_ict()
857 trace_iwlwifi_dev_ict_read(trans->dev, trans_pcie->ict_index, in iwl_pcie_int_cause_ict()
881 struct iwl_trans *trans = dev_id; in iwl_pcie_irq_handler() local
882 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_irq_handler()
887 lock_map_acquire(&trans->sync_cmd_lockdep_map); in iwl_pcie_irq_handler()
895 inta = iwl_pcie_int_cause_ict(trans); in iwl_pcie_irq_handler()
897 inta = iwl_pcie_int_cause_non_ict(trans); in iwl_pcie_irq_handler()
900 IWL_DEBUG_ISR(trans, in iwl_pcie_irq_handler()
903 iwl_read32(trans, CSR_INT_MASK), in iwl_pcie_irq_handler()
904 iwl_read32(trans, CSR_FH_INT_STATUS)); in iwl_pcie_irq_handler()
906 IWL_DEBUG_ISR(trans, in iwl_pcie_irq_handler()
919 IWL_DEBUG_ISR(trans, "Ignore interrupt, inta == 0\n"); in iwl_pcie_irq_handler()
924 if (test_bit(STATUS_INT_ENABLED, &trans->status)) in iwl_pcie_irq_handler()
925 iwl_enable_interrupts(trans); in iwl_pcie_irq_handler()
927 lock_map_release(&trans->sync_cmd_lockdep_map); in iwl_pcie_irq_handler()
936 IWL_WARN(trans, "HARDWARE GONE?? INTA == 0x%08x\n", inta); in iwl_pcie_irq_handler()
952 iwl_write32(trans, CSR_INT, inta | ~trans_pcie->inta_mask); in iwl_pcie_irq_handler()
955 IWL_DEBUG_ISR(trans, "inta 0x%08x, enabled 0x%08x\n", in iwl_pcie_irq_handler()
956 inta, iwl_read32(trans, CSR_INT_MASK)); in iwl_pcie_irq_handler()
962 IWL_ERR(trans, "Hardware error detected. Restarting.\n"); in iwl_pcie_irq_handler()
965 iwl_disable_interrupts(trans); in iwl_pcie_irq_handler()
968 iwl_pcie_irq_handle_error(trans); in iwl_pcie_irq_handler()
978 IWL_DEBUG_ISR(trans, in iwl_pcie_irq_handler()
985 IWL_DEBUG_ISR(trans, "Alive interrupt\n"); in iwl_pcie_irq_handler()
997 hw_rfkill = iwl_is_rfkill_set(trans); in iwl_pcie_irq_handler()
998 IWL_WARN(trans, "RF_KILL bit toggled to %s.\n", in iwl_pcie_irq_handler()
1003 iwl_trans_pcie_rf_kill(trans, hw_rfkill); in iwl_pcie_irq_handler()
1005 set_bit(STATUS_RFKILL, &trans->status); in iwl_pcie_irq_handler()
1007 &trans->status)) in iwl_pcie_irq_handler()
1008 IWL_DEBUG_RF_KILL(trans, in iwl_pcie_irq_handler()
1012 clear_bit(STATUS_RFKILL, &trans->status); in iwl_pcie_irq_handler()
1020 IWL_ERR(trans, "Microcode CT kill error detected.\n"); in iwl_pcie_irq_handler()
1027 IWL_ERR(trans, "Microcode SW error detected. " in iwl_pcie_irq_handler()
1030 iwl_pcie_irq_handle_error(trans); in iwl_pcie_irq_handler()
1036 IWL_DEBUG_ISR(trans, "Wakeup interrupt\n"); in iwl_pcie_irq_handler()
1037 iwl_pcie_rxq_check_wrptr(trans); in iwl_pcie_irq_handler()
1038 iwl_pcie_txq_check_wrptrs(trans); in iwl_pcie_irq_handler()
1050 IWL_DEBUG_ISR(trans, "Rx interrupt\n"); in iwl_pcie_irq_handler()
1053 iwl_write32(trans, CSR_FH_INT_STATUS, in iwl_pcie_irq_handler()
1058 iwl_write32(trans, in iwl_pcie_irq_handler()
1073 iwl_write8(trans, CSR_INT_PERIODIC_REG, in iwl_pcie_irq_handler()
1084 iwl_write8(trans, CSR_INT_PERIODIC_REG, in iwl_pcie_irq_handler()
1090 iwl_pcie_rx_handle(trans); in iwl_pcie_irq_handler()
1096 iwl_write32(trans, CSR_FH_INT_STATUS, CSR_FH_INT_TX_MASK); in iwl_pcie_irq_handler()
1097 IWL_DEBUG_ISR(trans, "uCode load interrupt\n"); in iwl_pcie_irq_handler()
1106 IWL_ERR(trans, "Unhandled INTA bits 0x%08x\n", inta & ~handled); in iwl_pcie_irq_handler()
1111 IWL_WARN(trans, "Disabled INTA bits 0x%08x were pending\n", in iwl_pcie_irq_handler()
1117 if (test_bit(STATUS_INT_ENABLED, &trans->status)) in iwl_pcie_irq_handler()
1118 iwl_enable_interrupts(trans); in iwl_pcie_irq_handler()
1121 iwl_enable_rfkill_int(trans); in iwl_pcie_irq_handler()
1124 lock_map_release(&trans->sync_cmd_lockdep_map); in iwl_pcie_irq_handler()
1135 void iwl_pcie_free_ict(struct iwl_trans *trans) in iwl_pcie_free_ict() argument
1137 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_free_ict()
1140 dma_free_coherent(trans->dev, ICT_SIZE, in iwl_pcie_free_ict()
1153 int iwl_pcie_alloc_ict(struct iwl_trans *trans) in iwl_pcie_alloc_ict() argument
1155 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_alloc_ict()
1158 dma_zalloc_coherent(trans->dev, ICT_SIZE, in iwl_pcie_alloc_ict()
1166 iwl_pcie_free_ict(trans); in iwl_pcie_alloc_ict()
1170 IWL_DEBUG_ISR(trans, "ict dma addr %Lx ict vir addr %p\n", in iwl_pcie_alloc_ict()
1180 void iwl_pcie_reset_ict(struct iwl_trans *trans) in iwl_pcie_reset_ict() argument
1182 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_reset_ict()
1189 iwl_disable_interrupts(trans); in iwl_pcie_reset_ict()
1198 IWL_DEBUG_ISR(trans, "CSR_DRAM_INT_TBL_REG =0x%x\n", val); in iwl_pcie_reset_ict()
1200 iwl_write32(trans, CSR_DRAM_INT_TBL_REG, val); in iwl_pcie_reset_ict()
1203 iwl_write32(trans, CSR_INT, trans_pcie->inta_mask); in iwl_pcie_reset_ict()
1204 iwl_enable_interrupts(trans); in iwl_pcie_reset_ict()
1209 void iwl_pcie_disable_ict(struct iwl_trans *trans) in iwl_pcie_disable_ict() argument
1211 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); in iwl_pcie_disable_ict()
1220 struct iwl_trans *trans = data; in iwl_pcie_isr() local
1222 if (!trans) in iwl_pcie_isr()
1230 iwl_write32(trans, CSR_INT_MASK, 0x00000000); in iwl_pcie_isr()