Lines Matching refs:ctrl
24 void slim_msg_response(struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len) in slim_msg_response() argument
30 spin_lock_irqsave(&ctrl->txn_lock, flags); in slim_msg_response()
31 txn = idr_find(&ctrl->tid_idr, tid); in slim_msg_response()
32 spin_unlock_irqrestore(&ctrl->txn_lock, flags); in slim_msg_response()
39 dev_err(ctrl->dev, "Got response to invalid TID:%d, len:%d\n", in slim_msg_response()
44 slim_free_txn_tid(ctrl, txn); in slim_msg_response()
50 pm_runtime_mark_last_busy(ctrl->dev); in slim_msg_response()
51 pm_runtime_put_autosuspend(ctrl->dev); in slim_msg_response()
63 int slim_alloc_txn_tid(struct slim_controller *ctrl, struct slim_msg_txn *txn) in slim_alloc_txn_tid() argument
68 spin_lock_irqsave(&ctrl->txn_lock, flags); in slim_alloc_txn_tid()
69 ret = idr_alloc_cyclic(&ctrl->tid_idr, txn, 1, in slim_alloc_txn_tid()
72 spin_unlock_irqrestore(&ctrl->txn_lock, flags); in slim_alloc_txn_tid()
76 spin_unlock_irqrestore(&ctrl->txn_lock, flags); in slim_alloc_txn_tid()
87 void slim_free_txn_tid(struct slim_controller *ctrl, struct slim_msg_txn *txn) in slim_free_txn_tid() argument
91 spin_lock_irqsave(&ctrl->txn_lock, flags); in slim_free_txn_tid()
92 idr_remove(&ctrl->tid_idr, txn->tid); in slim_free_txn_tid()
93 spin_unlock_irqrestore(&ctrl->txn_lock, flags); in slim_free_txn_tid()
110 int slim_do_transfer(struct slim_controller *ctrl, struct slim_msg_txn *txn) in slim_do_transfer() argument
121 if (ctrl->sched.clk_state == SLIM_CLK_ENTERING_PAUSE && in slim_do_transfer()
128 ret = pm_runtime_get_sync(ctrl->dev); in slim_do_transfer()
129 if (ctrl->sched.clk_state != SLIM_CLK_ACTIVE) { in slim_do_transfer()
130 dev_err(ctrl->dev, "ctrl wrong state:%d, ret:%d\n", in slim_do_transfer()
131 ctrl->sched.clk_state, ret); in slim_do_transfer()
140 ret = slim_alloc_txn_tid(ctrl, txn); in slim_do_transfer()
150 ret = ctrl->xfer_msg(ctrl, txn); in slim_do_transfer()
152 slim_free_txn_tid(ctrl, txn); in slim_do_transfer()
160 slim_free_txn_tid(ctrl, txn); in slim_do_transfer()
165 dev_err(ctrl->dev, "Tx:MT:0x%x, MC:0x%x, LA:0x%x failed:%d\n", in slim_do_transfer()
174 pm_runtime_mark_last_busy(ctrl->dev); in slim_do_transfer()
175 pm_runtime_put_autosuspend(ctrl->dev); in slim_do_transfer()
181 static int slim_val_inf_sanity(struct slim_controller *ctrl, in slim_val_inf_sanity() argument
208 dev_err(ctrl->dev, "Sanity check failed:msg:offset:0x%x, mc:%d\n", in slim_val_inf_sanity()
240 struct slim_controller *ctrl = sbdev->ctrl; in slim_xfer_msg() local
244 if (!ctrl) in slim_xfer_msg()
247 ret = slim_val_inf_sanity(ctrl, msg, mc); in slim_xfer_msg()
253 dev_dbg(ctrl->dev, "SB xfer msg:os:%x, len:%d, MC:%x, sl:%x\n", in slim_xfer_msg()
272 return slim_do_transfer(ctrl, txn); in slim_xfer_msg()