Lines Matching refs:tcs_id

57  * Multiply tcs_id by RSC_DRV_TCS_OFFSET to find a given TCS and add one
142 tcs_reg_addr(const struct rsc_drv *drv, int reg, int tcs_id)
144 return drv->tcs_base + RSC_DRV_TCS_OFFSET * tcs_id + reg;
148 tcs_cmd_addr(const struct rsc_drv *drv, int reg, int tcs_id, int cmd_id)
150 return tcs_reg_addr(drv, reg, tcs_id) + RSC_DRV_CMD_OFFSET * cmd_id;
153 static u32 read_tcs_cmd(const struct rsc_drv *drv, int reg, int tcs_id,
156 return readl_relaxed(tcs_cmd_addr(drv, reg, tcs_id, cmd_id));
159 static u32 read_tcs_reg(const struct rsc_drv *drv, int reg, int tcs_id)
161 return readl_relaxed(tcs_reg_addr(drv, reg, tcs_id));
164 static void write_tcs_cmd(const struct rsc_drv *drv, int reg, int tcs_id,
167 writel_relaxed(data, tcs_cmd_addr(drv, reg, tcs_id, cmd_id));
170 static void write_tcs_reg(const struct rsc_drv *drv, int reg, int tcs_id,
173 writel_relaxed(data, tcs_reg_addr(drv, reg, tcs_id));
176 static void write_tcs_reg_sync(const struct rsc_drv *drv, int reg, int tcs_id,
181 writel(data, tcs_reg_addr(drv, reg, tcs_id));
188 if (readl(tcs_reg_addr(drv, reg, tcs_id)) == data)
193 data, tcs_id, reg);
199 * @tcs_id: The global ID of this TCS.
207 static bool tcs_is_free(struct rsc_drv *drv, int tcs_id)
209 return !test_bit(tcs_id, drv->tcs_in_use);
301 * @tcs_id: The global ID of this TCS.
315 int tcs_id)
322 if (tcs->mask & BIT(tcs_id))
323 return tcs->req[tcs_id - tcs->offset];
332 * @tcs_id: The global ID of this TCS.
346 static void __tcs_set_trigger(struct rsc_drv *drv, int tcs_id, bool trigger)
355 enable = read_tcs_reg(drv, RSC_DRV_CONTROL, tcs_id);
357 write_tcs_reg_sync(drv, RSC_DRV_CONTROL, tcs_id, enable);
359 write_tcs_reg_sync(drv, RSC_DRV_CONTROL, tcs_id, enable);
364 write_tcs_reg_sync(drv, RSC_DRV_CONTROL, tcs_id, enable);
366 write_tcs_reg_sync(drv, RSC_DRV_CONTROL, tcs_id, enable);
373 * @tcs_id: The global ID of this TCS.
379 static void enable_tcs_irq(struct rsc_drv *drv, int tcs_id, bool enable)
385 data |= BIT(tcs_id);
387 data &= ~BIT(tcs_id);
468 * @tcs_id: The global ID of this TCS.
475 static void __tcs_buffer_write(struct rsc_drv *drv, int tcs_id, int cmd_id,
488 cmd_complete = read_tcs_reg(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, tcs_id);
497 write_tcs_cmd(drv, RSC_DRV_CMD_MSGID, tcs_id, j, msgid);
498 write_tcs_cmd(drv, RSC_DRV_CMD_ADDR, tcs_id, j, cmd->addr);
499 write_tcs_cmd(drv, RSC_DRV_CMD_DATA, tcs_id, j, cmd->data);
500 trace_rpmh_send_msg_rcuidle(drv, tcs_id, j, msgid, cmd);
503 write_tcs_reg(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, tcs_id, cmd_complete);
504 cmd_enable |= read_tcs_reg(drv, RSC_DRV_CMD_ENABLE, tcs_id);
505 write_tcs_reg(drv, RSC_DRV_CMD_ENABLE, tcs_id, cmd_enable);
534 int tcs_id = tcs->offset;
536 for (i = 0; i < tcs->num_tcs; i++, tcs_id++) {
537 if (tcs_is_free(drv, tcs_id))
540 curr_enabled = read_tcs_reg(drv, RSC_DRV_CMD_ENABLE, tcs_id);
543 addr = read_tcs_cmd(drv, RSC_DRV_CMD_ADDR, tcs_id, j);
631 int tcs_id;
642 (tcs_id = claim_tcs_for_req(drv, tcs, msg)) >= 0,
645 tcs->req[tcs_id - tcs->offset] = msg;
646 set_bit(tcs_id, drv->tcs_in_use);
653 write_tcs_reg_sync(drv, RSC_DRV_CMD_ENABLE, tcs_id, 0);
654 write_tcs_reg_sync(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, tcs_id, 0);
655 enable_tcs_irq(drv, tcs_id, true);
667 __tcs_buffer_write(drv, tcs_id, 0, msg);
668 __tcs_set_trigger(drv, tcs_id, true);
677 * @tcs_id: If we return 0 from the function, we return the global ID of the
689 int *tcs_id, int *cmd_id)
706 *tcs_id = offset + tcs->offset;
728 int tcs_id = 0, cmd_id = 0;
736 ret = find_slots(tcs, msg, &tcs_id, &cmd_id);
738 __tcs_buffer_write(drv, tcs_id, cmd_id, msg);