Lines Matching refs:trans
498 int (*start_fw)(struct iwl_trans *trans, const struct fw_img *fw,
500 int (*update_sf)(struct iwl_trans *trans,
502 void (*fw_alive)(struct iwl_trans *trans, u32 scd_addr);
503 void (*stop_device)(struct iwl_trans *trans, bool low_power);
505 void (*d3_suspend)(struct iwl_trans *trans, bool test);
506 int (*d3_resume)(struct iwl_trans *trans, enum iwl_d3_status *status,
509 int (*send_cmd)(struct iwl_trans *trans, struct iwl_host_cmd *cmd);
511 int (*tx)(struct iwl_trans *trans, struct sk_buff *skb,
513 void (*reclaim)(struct iwl_trans *trans, int queue, int ssn,
516 void (*txq_enable)(struct iwl_trans *trans, int queue, u16 ssn,
519 void (*txq_disable)(struct iwl_trans *trans, int queue,
522 int (*dbgfs_register)(struct iwl_trans *trans, struct dentry* dir);
523 int (*wait_tx_queue_empty)(struct iwl_trans *trans, u32 txq_bm);
524 void (*freeze_txq_timer)(struct iwl_trans *trans, unsigned long txqs,
527 void (*write8)(struct iwl_trans *trans, u32 ofs, u8 val);
528 void (*write32)(struct iwl_trans *trans, u32 ofs, u32 val);
529 u32 (*read32)(struct iwl_trans *trans, u32 ofs);
530 u32 (*read_prph)(struct iwl_trans *trans, u32 ofs);
531 void (*write_prph)(struct iwl_trans *trans, u32 ofs, u32 val);
532 int (*read_mem)(struct iwl_trans *trans, u32 addr,
534 int (*write_mem)(struct iwl_trans *trans, u32 addr,
536 void (*configure)(struct iwl_trans *trans,
538 void (*set_pmi)(struct iwl_trans *trans, bool state);
539 bool (*grab_nic_access)(struct iwl_trans *trans, bool silent,
541 void (*release_nic_access)(struct iwl_trans *trans,
543 void (*set_bits_mask)(struct iwl_trans *trans, u32 reg, u32 mask,
545 void (*ref)(struct iwl_trans *trans);
546 void (*unref)(struct iwl_trans *trans);
547 void (*suspend)(struct iwl_trans *trans);
548 void (*resume)(struct iwl_trans *trans);
550 struct iwl_trans_dump_data *(*dump_data)(struct iwl_trans *trans);
649 static inline void iwl_trans_configure(struct iwl_trans *trans, in iwl_trans_configure() argument
652 trans->op_mode = trans_cfg->op_mode; in iwl_trans_configure()
654 trans->ops->configure(trans, trans_cfg); in iwl_trans_configure()
657 static inline int _iwl_trans_start_hw(struct iwl_trans *trans, bool low_power) in _iwl_trans_start_hw() argument
661 return trans->ops->start_hw(trans, low_power); in _iwl_trans_start_hw()
664 static inline int iwl_trans_start_hw(struct iwl_trans *trans) in iwl_trans_start_hw() argument
666 return trans->ops->start_hw(trans, true); in iwl_trans_start_hw()
669 static inline void iwl_trans_op_mode_leave(struct iwl_trans *trans) in iwl_trans_op_mode_leave() argument
673 if (trans->ops->op_mode_leave) in iwl_trans_op_mode_leave()
674 trans->ops->op_mode_leave(trans); in iwl_trans_op_mode_leave()
676 trans->op_mode = NULL; in iwl_trans_op_mode_leave()
678 trans->state = IWL_TRANS_NO_FW; in iwl_trans_op_mode_leave()
681 static inline void iwl_trans_fw_alive(struct iwl_trans *trans, u32 scd_addr) in iwl_trans_fw_alive() argument
685 trans->state = IWL_TRANS_FW_ALIVE; in iwl_trans_fw_alive()
687 trans->ops->fw_alive(trans, scd_addr); in iwl_trans_fw_alive()
690 static inline int iwl_trans_start_fw(struct iwl_trans *trans, in iwl_trans_start_fw() argument
696 WARN_ON_ONCE(!trans->rx_mpdu_cmd); in iwl_trans_start_fw()
698 clear_bit(STATUS_FW_ERROR, &trans->status); in iwl_trans_start_fw()
699 return trans->ops->start_fw(trans, fw, run_in_rfkill); in iwl_trans_start_fw()
702 static inline int iwl_trans_update_sf(struct iwl_trans *trans, in iwl_trans_update_sf() argument
707 if (trans->ops->update_sf) in iwl_trans_update_sf()
708 return trans->ops->update_sf(trans, st_fwrd_space); in iwl_trans_update_sf()
713 static inline void _iwl_trans_stop_device(struct iwl_trans *trans, in _iwl_trans_stop_device() argument
718 trans->ops->stop_device(trans, low_power); in _iwl_trans_stop_device()
720 trans->state = IWL_TRANS_NO_FW; in _iwl_trans_stop_device()
723 static inline void iwl_trans_stop_device(struct iwl_trans *trans) in iwl_trans_stop_device() argument
725 _iwl_trans_stop_device(trans, true); in iwl_trans_stop_device()
728 static inline void iwl_trans_d3_suspend(struct iwl_trans *trans, bool test) in iwl_trans_d3_suspend() argument
731 trans->ops->d3_suspend(trans, test); in iwl_trans_d3_suspend()
734 static inline int iwl_trans_d3_resume(struct iwl_trans *trans, in iwl_trans_d3_resume() argument
739 return trans->ops->d3_resume(trans, status, test); in iwl_trans_d3_resume()
742 static inline void iwl_trans_ref(struct iwl_trans *trans) in iwl_trans_ref() argument
744 if (trans->ops->ref) in iwl_trans_ref()
745 trans->ops->ref(trans); in iwl_trans_ref()
748 static inline void iwl_trans_unref(struct iwl_trans *trans) in iwl_trans_unref() argument
750 if (trans->ops->unref) in iwl_trans_unref()
751 trans->ops->unref(trans); in iwl_trans_unref()
754 static inline void iwl_trans_suspend(struct iwl_trans *trans) in iwl_trans_suspend() argument
756 if (trans->ops->suspend) in iwl_trans_suspend()
757 trans->ops->suspend(trans); in iwl_trans_suspend()
760 static inline void iwl_trans_resume(struct iwl_trans *trans) in iwl_trans_resume() argument
762 if (trans->ops->resume) in iwl_trans_resume()
763 trans->ops->resume(trans); in iwl_trans_resume()
767 iwl_trans_dump_data(struct iwl_trans *trans) in iwl_trans_dump_data() argument
769 if (!trans->ops->dump_data) in iwl_trans_dump_data()
771 return trans->ops->dump_data(trans); in iwl_trans_dump_data()
774 static inline int iwl_trans_send_cmd(struct iwl_trans *trans, in iwl_trans_send_cmd() argument
780 test_bit(STATUS_RFKILL, &trans->status))) in iwl_trans_send_cmd()
783 if (unlikely(test_bit(STATUS_FW_ERROR, &trans->status))) in iwl_trans_send_cmd()
786 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) { in iwl_trans_send_cmd()
787 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_send_cmd()
792 lock_map_acquire_read(&trans->sync_cmd_lockdep_map); in iwl_trans_send_cmd()
794 ret = trans->ops->send_cmd(trans, cmd); in iwl_trans_send_cmd()
797 lock_map_release(&trans->sync_cmd_lockdep_map); in iwl_trans_send_cmd()
803 iwl_trans_alloc_tx_cmd(struct iwl_trans *trans) in iwl_trans_alloc_tx_cmd() argument
805 u8 *dev_cmd_ptr = kmem_cache_alloc(trans->dev_cmd_pool, GFP_ATOMIC); in iwl_trans_alloc_tx_cmd()
811 (dev_cmd_ptr + trans->dev_cmd_headroom); in iwl_trans_alloc_tx_cmd()
814 static inline void iwl_trans_free_tx_cmd(struct iwl_trans *trans, in iwl_trans_free_tx_cmd() argument
817 u8 *dev_cmd_ptr = (u8 *)dev_cmd - trans->dev_cmd_headroom; in iwl_trans_free_tx_cmd()
819 kmem_cache_free(trans->dev_cmd_pool, dev_cmd_ptr); in iwl_trans_free_tx_cmd()
822 static inline int iwl_trans_tx(struct iwl_trans *trans, struct sk_buff *skb, in iwl_trans_tx() argument
825 if (unlikely(test_bit(STATUS_FW_ERROR, &trans->status))) in iwl_trans_tx()
828 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) in iwl_trans_tx()
829 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_tx()
831 return trans->ops->tx(trans, skb, dev_cmd, queue); in iwl_trans_tx()
834 static inline void iwl_trans_reclaim(struct iwl_trans *trans, int queue, in iwl_trans_reclaim() argument
837 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) in iwl_trans_reclaim()
838 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_reclaim()
840 trans->ops->reclaim(trans, queue, ssn, skbs); in iwl_trans_reclaim()
843 static inline void iwl_trans_txq_disable(struct iwl_trans *trans, int queue, in iwl_trans_txq_disable() argument
846 trans->ops->txq_disable(trans, queue, configure_scd); in iwl_trans_txq_disable()
850 iwl_trans_txq_enable_cfg(struct iwl_trans *trans, int queue, u16 ssn, in iwl_trans_txq_enable_cfg() argument
856 if (unlikely((trans->state != IWL_TRANS_FW_ALIVE))) in iwl_trans_txq_enable_cfg()
857 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_txq_enable_cfg()
859 trans->ops->txq_enable(trans, queue, ssn, cfg, queue_wdg_timeout); in iwl_trans_txq_enable_cfg()
862 static inline void iwl_trans_txq_enable(struct iwl_trans *trans, int queue, in iwl_trans_txq_enable() argument
875 iwl_trans_txq_enable_cfg(trans, queue, ssn, &cfg, queue_wdg_timeout); in iwl_trans_txq_enable()
879 void iwl_trans_ac_txq_enable(struct iwl_trans *trans, int queue, int fifo, in iwl_trans_ac_txq_enable() argument
890 iwl_trans_txq_enable_cfg(trans, queue, 0, &cfg, queue_wdg_timeout); in iwl_trans_ac_txq_enable()
893 static inline void iwl_trans_freeze_txq_timer(struct iwl_trans *trans, in iwl_trans_freeze_txq_timer() argument
897 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) in iwl_trans_freeze_txq_timer()
898 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_freeze_txq_timer()
900 if (trans->ops->freeze_txq_timer) in iwl_trans_freeze_txq_timer()
901 trans->ops->freeze_txq_timer(trans, txqs, freeze); in iwl_trans_freeze_txq_timer()
904 static inline int iwl_trans_wait_tx_queue_empty(struct iwl_trans *trans, in iwl_trans_wait_tx_queue_empty() argument
907 if (unlikely(trans->state != IWL_TRANS_FW_ALIVE)) in iwl_trans_wait_tx_queue_empty()
908 IWL_ERR(trans, "%s bad state = %d\n", __func__, trans->state); in iwl_trans_wait_tx_queue_empty()
910 return trans->ops->wait_tx_queue_empty(trans, txqs); in iwl_trans_wait_tx_queue_empty()
913 static inline int iwl_trans_dbgfs_register(struct iwl_trans *trans, in iwl_trans_dbgfs_register() argument
916 return trans->ops->dbgfs_register(trans, dir); in iwl_trans_dbgfs_register()
919 static inline void iwl_trans_write8(struct iwl_trans *trans, u32 ofs, u8 val) in iwl_trans_write8() argument
921 trans->ops->write8(trans, ofs, val); in iwl_trans_write8()
924 static inline void iwl_trans_write32(struct iwl_trans *trans, u32 ofs, u32 val) in iwl_trans_write32() argument
926 trans->ops->write32(trans, ofs, val); in iwl_trans_write32()
929 static inline u32 iwl_trans_read32(struct iwl_trans *trans, u32 ofs) in iwl_trans_read32() argument
931 return trans->ops->read32(trans, ofs); in iwl_trans_read32()
934 static inline u32 iwl_trans_read_prph(struct iwl_trans *trans, u32 ofs) in iwl_trans_read_prph() argument
936 return trans->ops->read_prph(trans, ofs); in iwl_trans_read_prph()
939 static inline void iwl_trans_write_prph(struct iwl_trans *trans, u32 ofs, in iwl_trans_write_prph() argument
942 return trans->ops->write_prph(trans, ofs, val); in iwl_trans_write_prph()
945 static inline int iwl_trans_read_mem(struct iwl_trans *trans, u32 addr, in iwl_trans_read_mem() argument
948 return trans->ops->read_mem(trans, addr, buf, dwords); in iwl_trans_read_mem()
951 #define iwl_trans_read_mem_bytes(trans, addr, buf, bufsize) \ argument
955 iwl_trans_read_mem(trans, addr, buf, (bufsize) / sizeof(u32));\
958 static inline u32 iwl_trans_read_mem32(struct iwl_trans *trans, u32 addr) in iwl_trans_read_mem32() argument
962 if (WARN_ON(iwl_trans_read_mem(trans, addr, &value, 1))) in iwl_trans_read_mem32()
968 static inline int iwl_trans_write_mem(struct iwl_trans *trans, u32 addr, in iwl_trans_write_mem() argument
971 return trans->ops->write_mem(trans, addr, buf, dwords); in iwl_trans_write_mem()
974 static inline u32 iwl_trans_write_mem32(struct iwl_trans *trans, u32 addr, in iwl_trans_write_mem32() argument
977 return iwl_trans_write_mem(trans, addr, &val, 1); in iwl_trans_write_mem32()
980 static inline void iwl_trans_set_pmi(struct iwl_trans *trans, bool state) in iwl_trans_set_pmi() argument
982 if (trans->ops->set_pmi) in iwl_trans_set_pmi()
983 trans->ops->set_pmi(trans, state); in iwl_trans_set_pmi()
987 iwl_trans_set_bits_mask(struct iwl_trans *trans, u32 reg, u32 mask, u32 value) in iwl_trans_set_bits_mask() argument
989 trans->ops->set_bits_mask(trans, reg, mask, value); in iwl_trans_set_bits_mask()
992 #define iwl_trans_grab_nic_access(trans, silent, flags) \ argument
994 likely((trans)->ops->grab_nic_access(trans, silent, flags)))
997 iwl_trans_release_nic_access(struct iwl_trans *trans, unsigned long *flags) in __releases()
999 trans->ops->release_nic_access(trans, flags); in __releases()
1003 static inline void iwl_trans_fw_error(struct iwl_trans *trans) in iwl_trans_fw_error() argument
1005 if (WARN_ON_ONCE(!trans->op_mode)) in iwl_trans_fw_error()
1009 if (!test_and_set_bit(STATUS_FW_ERROR, &trans->status)) in iwl_trans_fw_error()
1010 iwl_op_mode_nic_error(trans->op_mode); in iwl_trans_fw_error()
1019 static inline void trans_lockdep_init(struct iwl_trans *trans) in trans_lockdep_init() argument
1024 lockdep_init_map(&trans->sync_cmd_lockdep_map, "sync_cmd_lockdep_map", in trans_lockdep_init()