Lines Matching refs:tcs_id
195 tcs_reg_addr(const struct rsc_drv *drv, int reg, int tcs_id)
197 return drv->tcs_base + drv->regs[RSC_DRV_TCS_OFFSET] * tcs_id + reg;
201 tcs_cmd_addr(const struct rsc_drv *drv, int reg, int tcs_id, int cmd_id)
203 return tcs_reg_addr(drv, reg, tcs_id) + drv->regs[RSC_DRV_CMD_OFFSET] * cmd_id;
206 static u32 read_tcs_cmd(const struct rsc_drv *drv, int reg, int tcs_id,
209 return readl_relaxed(tcs_cmd_addr(drv, reg, tcs_id, cmd_id));
212 static u32 read_tcs_reg(const struct rsc_drv *drv, int reg, int tcs_id)
214 return readl_relaxed(tcs_reg_addr(drv, reg, tcs_id));
217 static void write_tcs_cmd(const struct rsc_drv *drv, int reg, int tcs_id,
220 writel_relaxed(data, tcs_cmd_addr(drv, reg, tcs_id, cmd_id));
223 static void write_tcs_reg(const struct rsc_drv *drv, int reg, int tcs_id,
226 writel_relaxed(data, tcs_reg_addr(drv, reg, tcs_id));
229 static void write_tcs_reg_sync(const struct rsc_drv *drv, int reg, int tcs_id,
234 writel(data, tcs_reg_addr(drv, reg, tcs_id));
241 if (readl(tcs_reg_addr(drv, reg, tcs_id)) == data)
246 data, tcs_id, reg);
337 * @tcs_id: The global ID of this TCS.
351 int tcs_id)
358 if (tcs->mask & BIT(tcs_id))
359 return tcs->req[tcs_id - tcs->offset];
368 * @tcs_id: The global ID of this TCS.
382 static void __tcs_set_trigger(struct rsc_drv *drv, int tcs_id, bool trigger)
392 enable = read_tcs_reg(drv, reg, tcs_id);
394 write_tcs_reg_sync(drv, reg, tcs_id, enable);
396 write_tcs_reg_sync(drv, reg, tcs_id, enable);
401 write_tcs_reg_sync(drv, reg, tcs_id, enable);
403 write_tcs_reg(drv, reg, tcs_id, enable);
410 * @tcs_id: The global ID of this TCS.
416 static void enable_tcs_irq(struct rsc_drv *drv, int tcs_id, bool enable)
423 data |= BIT(tcs_id);
425 data &= ~BIT(tcs_id);
487 * @tcs_id: The global ID of this TCS.
494 static void __tcs_buffer_write(struct rsc_drv *drv, int tcs_id, int cmd_id,
516 write_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_MSGID], tcs_id, j, msgid);
517 write_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_ADDR], tcs_id, j, cmd->addr);
518 write_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_DATA], tcs_id, j, cmd->data);
519 trace_rpmh_send_msg(drv, tcs_id, msg->state, j, msgid, cmd);
522 cmd_enable |= read_tcs_reg(drv, drv->regs[RSC_DRV_CMD_ENABLE], tcs_id);
523 write_tcs_reg(drv, drv->regs[RSC_DRV_CMD_ENABLE], tcs_id, cmd_enable);
647 int tcs_id;
658 (tcs_id = claim_tcs_for_req(drv, tcs, msg)) >= 0,
661 tcs->req[tcs_id - tcs->offset] = msg;
662 set_bit(tcs_id, drv->tcs_in_use);
669 write_tcs_reg_sync(drv, drv->regs[RSC_DRV_CMD_ENABLE], tcs_id, 0);
670 enable_tcs_irq(drv, tcs_id, true);
682 __tcs_buffer_write(drv, tcs_id, 0, msg);
683 __tcs_set_trigger(drv, tcs_id, true);
692 * @tcs_id: If we return 0 from the function, we return the global ID of the
704 int *tcs_id, int *cmd_id)
721 *tcs_id = offset + tcs->offset;
743 int tcs_id = 0, cmd_id = 0;
751 ret = find_slots(tcs, msg, &tcs_id, &cmd_id);
753 __tcs_buffer_write(drv, tcs_id, cmd_id, msg);