Lines Matching refs:trans
562 int (*start_fw)(struct iwl_trans *trans, const struct fw_img *fw,
564 int (*update_sf)(struct iwl_trans *trans,
566 void (*fw_alive)(struct iwl_trans *trans, u32 scd_addr);
567 void (*stop_device)(struct iwl_trans *trans, bool low_power);
569 void (*d3_suspend)(struct iwl_trans *trans, bool test);
570 int (*d3_resume)(struct iwl_trans *trans, enum iwl_d3_status *status,
573 int (*send_cmd)(struct iwl_trans *trans, struct iwl_host_cmd *cmd);
575 int (*tx)(struct iwl_trans *trans, struct sk_buff *skb,
577 void (*reclaim)(struct iwl_trans *trans, int queue, int ssn,
580 void (*txq_enable)(struct iwl_trans *trans, int queue, u16 ssn,
583 void (*txq_disable)(struct iwl_trans *trans, int queue,
586 int (*dbgfs_register)(struct iwl_trans *trans, struct dentry* dir);
587 int (*wait_tx_queue_empty)(struct iwl_trans *trans, u32 txq_bm);
588 void (*freeze_txq_timer)(struct iwl_trans *trans, unsigned long txqs,
591 void (*write8)(struct iwl_trans *trans, u32 ofs, u8 val);
592 void (*write32)(struct iwl_trans *trans, u32 ofs, u32 val);
593 u32 (*read32)(struct iwl_trans *trans, u32 ofs);
594 u32 (*read_prph)(struct iwl_trans *trans, u32 ofs);
595 void (*write_prph)(struct iwl_trans *trans, u32 ofs, u32 val);
596 int (*read_mem)(struct iwl_trans *trans, u32 addr,
598 int (*write_mem)(struct iwl_trans *trans, u32 addr,
600 void (*configure)(struct iwl_trans *trans,
602 void (*set_pmi)(struct iwl_trans *trans, bool state);
603 bool (*grab_nic_access)(struct iwl_trans *trans, bool silent,
605 void (*release_nic_access)(struct iwl_trans *trans,
607 void (*set_bits_mask)(struct iwl_trans *trans, u32 reg, u32 mask,
609 void (*ref)(struct iwl_trans *trans);
610 void (*unref)(struct iwl_trans *trans);
611 int (*suspend)(struct iwl_trans *trans);
612 void (*resume)(struct iwl_trans *trans);
614 struct iwl_trans_dump_data *(*dump_data)(struct iwl_trans *trans,
738 static inline void iwl_trans_configure(struct iwl_trans *trans, in iwl_trans_configure() argument
741 trans->op_mode = trans_cfg->op_mode; in iwl_trans_configure()
743 trans->ops->configure(trans, trans_cfg); in iwl_trans_configure()
746 static inline int _iwl_trans_start_hw(struct iwl_trans *trans, bool low_power) in _iwl_trans_start_hw() argument
750 return trans->ops->start_hw(trans, low_power); in _iwl_trans_start_hw()
753 static inline int iwl_trans_start_hw(struct iwl_trans *trans) in iwl_trans_start_hw() argument
755 return trans->ops->start_hw(trans, true); in iwl_trans_start_hw()
758 static inline void iwl_trans_op_mode_leave(struct iwl_trans *trans) in iwl_trans_op_mode_leave() argument
762 if (trans->ops->op_mode_leave) in iwl_trans_op_mode_leave()
763 trans->ops->op_mode_leave(trans); in iwl_trans_op_mode_leave()
765 trans->op_mode = NULL; in iwl_trans_op_mode_leave()
767 trans->state = IWL_TRANS_NO_FW; in iwl_trans_op_mode_leave()
770 static inline void iwl_trans_fw_alive(struct iwl_trans *trans, u32 scd_addr) in iwl_trans_fw_alive() argument
774 trans->state = IWL_TRANS_FW_ALIVE; in iwl_trans_fw_alive()
776 trans->ops->fw_alive(trans, scd_addr); in iwl_trans_fw_alive()
779 static inline int iwl_trans_start_fw(struct iwl_trans *trans, in iwl_trans_start_fw() argument
785 WARN_ON_ONCE(!trans->rx_mpdu_cmd); in iwl_trans_start_fw()
787 clear_bit(STATUS_FW_ERROR, &trans->status); in iwl_trans_start_fw()
788 return trans->ops->start_fw(trans, fw, run_in_rfkill); in iwl_trans_start_fw()
791 static inline int iwl_trans_update_sf(struct iwl_trans *trans, in iwl_trans_update_sf() argument
796 if (trans->ops->update_sf) in iwl_trans_update_sf()
797 return trans->ops->update_sf(trans, st_fwrd_space); in iwl_trans_update_sf()
802 static inline void _iwl_trans_stop_device(struct iwl_trans *trans, in _iwl_trans_stop_device() argument
807 trans->ops->stop_device(trans, low_power); in _iwl_trans_stop_device()
809 trans->state = IWL_TRANS_NO_FW; in _iwl_trans_stop_device()
812 static inline void iwl_trans_stop_device(struct iwl_trans *trans) in iwl_trans_stop_device() argument
814 _iwl_trans_stop_device(trans, true); in iwl_trans_stop_device()
817 static inline void iwl_trans_d3_suspend(struct iwl_trans *trans, bool test) in iwl_trans_d3_suspend() argument
820 if (trans->ops->d3_suspend) in iwl_trans_d3_suspend()
821 trans->ops->d3_suspend(trans, test); in iwl_trans_d3_suspend()
824 static inline int iwl_trans_d3_resume(struct iwl_trans *trans, in iwl_trans_d3_resume() argument
829 if (!trans->ops->d3_resume) in iwl_trans_d3_resume()
832 return trans->ops->d3_resume(trans, status, test); in iwl_trans_d3_resume()
835 static inline void iwl_trans_ref(struct iwl_trans *trans) in iwl_trans_ref() argument
837 if (trans->ops->ref) in iwl_trans_ref()
838 trans->ops->ref(trans); in iwl_trans_ref()
841 static inline void iwl_trans_unref(struct iwl_trans *trans) in iwl_trans_unref() argument
843 if (trans->ops->unref) in iwl_trans_unref()
844 trans->ops->unref(trans); in iwl_trans_unref()
847 static inline int iwl_trans_suspend(struct iwl_trans *trans) in iwl_trans_suspend() argument
849 if (!trans->ops->suspend) in iwl_trans_suspend()
852 return trans->ops->suspend(trans); in iwl_trans_suspend()
855 static inline void iwl_trans_resume(struct iwl_trans *trans) in iwl_trans_resume() argument
857 if (trans->ops->resume) in iwl_trans_resume()
858 trans->ops->resume(trans); in iwl_trans_resume()
862 iwl_trans_dump_data(struct iwl_trans *trans, in iwl_trans_dump_data() argument
865 if (!trans->ops->dump_data) in iwl_trans_dump_data()
867 return trans->ops->dump_data(trans, trigger); in iwl_trans_dump_data()
870 static inline int iwl_trans_send_cmd(struct iwl_trans *trans, in iwl_trans_send_cmd() argument
876 test_bit(STATUS_RFKILL, &trans->status))) in iwl_trans_send_cmd()
879 if (unlikely(test_bit(STATUS_FW_ERROR, &trans->status))) in iwl_trans_send_cmd()
882 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) { in iwl_trans_send_cmd()
883 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_send_cmd()
888 lock_map_acquire_read(&trans->sync_cmd_lockdep_map); in iwl_trans_send_cmd()
890 ret = trans->ops->send_cmd(trans, cmd); in iwl_trans_send_cmd()
893 lock_map_release(&trans->sync_cmd_lockdep_map); in iwl_trans_send_cmd()
899 iwl_trans_alloc_tx_cmd(struct iwl_trans *trans) in iwl_trans_alloc_tx_cmd() argument
901 u8 *dev_cmd_ptr = kmem_cache_alloc(trans->dev_cmd_pool, GFP_ATOMIC); in iwl_trans_alloc_tx_cmd()
907 (dev_cmd_ptr + trans->dev_cmd_headroom); in iwl_trans_alloc_tx_cmd()
910 static inline void iwl_trans_free_tx_cmd(struct iwl_trans *trans, in iwl_trans_free_tx_cmd() argument
913 u8 *dev_cmd_ptr = (u8 *)dev_cmd - trans->dev_cmd_headroom; in iwl_trans_free_tx_cmd()
915 kmem_cache_free(trans->dev_cmd_pool, dev_cmd_ptr); in iwl_trans_free_tx_cmd()
918 static inline int iwl_trans_tx(struct iwl_trans *trans, struct sk_buff *skb, in iwl_trans_tx() argument
921 if (unlikely(test_bit(STATUS_FW_ERROR, &trans->status))) in iwl_trans_tx()
924 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) in iwl_trans_tx()
925 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_tx()
927 return trans->ops->tx(trans, skb, dev_cmd, queue); in iwl_trans_tx()
930 static inline void iwl_trans_reclaim(struct iwl_trans *trans, int queue, in iwl_trans_reclaim() argument
933 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) in iwl_trans_reclaim()
934 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_reclaim()
936 trans->ops->reclaim(trans, queue, ssn, skbs); in iwl_trans_reclaim()
939 static inline void iwl_trans_txq_disable(struct iwl_trans *trans, int queue, in iwl_trans_txq_disable() argument
942 trans->ops->txq_disable(trans, queue, configure_scd); in iwl_trans_txq_disable()
946 iwl_trans_txq_enable_cfg(struct iwl_trans *trans, int queue, u16 ssn, in iwl_trans_txq_enable_cfg() argument
952 if (unlikely((trans->state != IWL_TRANS_FW_ALIVE))) in iwl_trans_txq_enable_cfg()
953 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_txq_enable_cfg()
955 trans->ops->txq_enable(trans, queue, ssn, cfg, queue_wdg_timeout); in iwl_trans_txq_enable_cfg()
958 static inline void iwl_trans_txq_enable(struct iwl_trans *trans, int queue, in iwl_trans_txq_enable() argument
971 iwl_trans_txq_enable_cfg(trans, queue, ssn, &cfg, queue_wdg_timeout); in iwl_trans_txq_enable()
975 void iwl_trans_ac_txq_enable(struct iwl_trans *trans, int queue, int fifo, in iwl_trans_ac_txq_enable() argument
986 iwl_trans_txq_enable_cfg(trans, queue, 0, &cfg, queue_wdg_timeout); in iwl_trans_ac_txq_enable()
989 static inline void iwl_trans_freeze_txq_timer(struct iwl_trans *trans, in iwl_trans_freeze_txq_timer() argument
993 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) in iwl_trans_freeze_txq_timer()
994 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_freeze_txq_timer()
996 if (trans->ops->freeze_txq_timer) in iwl_trans_freeze_txq_timer()
997 trans->ops->freeze_txq_timer(trans, txqs, freeze); in iwl_trans_freeze_txq_timer()
1000 static inline int iwl_trans_wait_tx_queue_empty(struct iwl_trans *trans, in iwl_trans_wait_tx_queue_empty() argument
1003 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) in iwl_trans_wait_tx_queue_empty()
1004 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_wait_tx_queue_empty()
1006 return trans->ops->wait_tx_queue_empty(trans, txqs); in iwl_trans_wait_tx_queue_empty()
1009 static inline int iwl_trans_dbgfs_register(struct iwl_trans *trans, in iwl_trans_dbgfs_register() argument
1012 return trans->ops->dbgfs_register(trans, dir); in iwl_trans_dbgfs_register()
1015 static inline void iwl_trans_write8(struct iwl_trans *trans, u32 ofs, u8 val) in iwl_trans_write8() argument
1017 trans->ops->write8(trans, ofs, val); in iwl_trans_write8()
1020 static inline void iwl_trans_write32(struct iwl_trans *trans, u32 ofs, u32 val) in iwl_trans_write32() argument
1022 trans->ops->write32(trans, ofs, val); in iwl_trans_write32()
1025 static inline u32 iwl_trans_read32(struct iwl_trans *trans, u32 ofs) in iwl_trans_read32() argument
1027 return trans->ops->read32(trans, ofs); in iwl_trans_read32()
1030 static inline u32 iwl_trans_read_prph(struct iwl_trans *trans, u32 ofs) in iwl_trans_read_prph() argument
1032 return trans->ops->read_prph(trans, ofs); in iwl_trans_read_prph()
1035 static inline void iwl_trans_write_prph(struct iwl_trans *trans, u32 ofs, in iwl_trans_write_prph() argument
1038 return trans->ops->write_prph(trans, ofs, val); in iwl_trans_write_prph()
1041 static inline int iwl_trans_read_mem(struct iwl_trans *trans, u32 addr, in iwl_trans_read_mem() argument
1044 return trans->ops->read_mem(trans, addr, buf, dwords); in iwl_trans_read_mem()
1047 #define iwl_trans_read_mem_bytes(trans, addr, buf, bufsize) \ argument
1051 iwl_trans_read_mem(trans, addr, buf, (bufsize) / sizeof(u32));\
1054 static inline u32 iwl_trans_read_mem32(struct iwl_trans *trans, u32 addr) in iwl_trans_read_mem32() argument
1058 if (WARN_ON(iwl_trans_read_mem(trans, addr, &value, 1))) in iwl_trans_read_mem32()
1064 static inline int iwl_trans_write_mem(struct iwl_trans *trans, u32 addr, in iwl_trans_write_mem() argument
1067 return trans->ops->write_mem(trans, addr, buf, dwords); in iwl_trans_write_mem()
1070 static inline u32 iwl_trans_write_mem32(struct iwl_trans *trans, u32 addr, in iwl_trans_write_mem32() argument
1073 return iwl_trans_write_mem(trans, addr, &val, 1); in iwl_trans_write_mem32()
1076 static inline void iwl_trans_set_pmi(struct iwl_trans *trans, bool state) in iwl_trans_set_pmi() argument
1078 if (trans->ops->set_pmi) in iwl_trans_set_pmi()
1079 trans->ops->set_pmi(trans, state); in iwl_trans_set_pmi()
1083 iwl_trans_set_bits_mask(struct iwl_trans *trans, u32 reg, u32 mask, u32 value) in iwl_trans_set_bits_mask() argument
1085 trans->ops->set_bits_mask(trans, reg, mask, value); in iwl_trans_set_bits_mask()
1088 #define iwl_trans_grab_nic_access(trans, silent, flags) \ argument
1090 likely((trans)->ops->grab_nic_access(trans, silent, flags)))
1093 iwl_trans_release_nic_access(struct iwl_trans *trans, unsigned long *flags) in __releases()
1095 trans->ops->release_nic_access(trans, flags); in __releases()
1099 static inline void iwl_trans_fw_error(struct iwl_trans *trans) in iwl_trans_fw_error() argument
1101 if (WARN_ON_ONCE(!trans->op_mode)) in iwl_trans_fw_error()
1105 if (!test_and_set_bit(STATUS_FW_ERROR, &trans->status)) in iwl_trans_fw_error()
1106 iwl_op_mode_nic_error(trans->op_mode); in iwl_trans_fw_error()
1117 void iwl_trans_free(struct iwl_trans *trans);