Lines Matching refs:tcs_id

143 tcs_reg_addr(const struct rsc_drv *drv, int reg, int tcs_id)  in tcs_reg_addr()  argument
145 return drv->tcs_base + RSC_DRV_TCS_OFFSET * tcs_id + reg; in tcs_reg_addr()
149 tcs_cmd_addr(const struct rsc_drv *drv, int reg, int tcs_id, int cmd_id) in tcs_cmd_addr() argument
151 return tcs_reg_addr(drv, reg, tcs_id) + RSC_DRV_CMD_OFFSET * cmd_id; in tcs_cmd_addr()
154 static u32 read_tcs_cmd(const struct rsc_drv *drv, int reg, int tcs_id, in read_tcs_cmd() argument
157 return readl_relaxed(tcs_cmd_addr(drv, reg, tcs_id, cmd_id)); in read_tcs_cmd()
160 static u32 read_tcs_reg(const struct rsc_drv *drv, int reg, int tcs_id) in read_tcs_reg() argument
162 return readl_relaxed(tcs_reg_addr(drv, reg, tcs_id)); in read_tcs_reg()
165 static void write_tcs_cmd(const struct rsc_drv *drv, int reg, int tcs_id, in write_tcs_cmd() argument
168 writel_relaxed(data, tcs_cmd_addr(drv, reg, tcs_id, cmd_id)); in write_tcs_cmd()
171 static void write_tcs_reg(const struct rsc_drv *drv, int reg, int tcs_id, in write_tcs_reg() argument
174 writel_relaxed(data, tcs_reg_addr(drv, reg, tcs_id)); in write_tcs_reg()
177 static void write_tcs_reg_sync(const struct rsc_drv *drv, int reg, int tcs_id, in write_tcs_reg_sync() argument
182 writel(data, tcs_reg_addr(drv, reg, tcs_id)); in write_tcs_reg_sync()
189 if (readl(tcs_reg_addr(drv, reg, tcs_id)) == data) in write_tcs_reg_sync()
194 data, tcs_id, reg); in write_tcs_reg_sync()
208 static bool tcs_is_free(struct rsc_drv *drv, int tcs_id) in tcs_is_free() argument
210 return !test_bit(tcs_id, drv->tcs_in_use); in tcs_is_free()
316 int tcs_id) in get_req_from_tcs() argument
323 if (tcs->mask & BIT(tcs_id)) in get_req_from_tcs()
324 return tcs->req[tcs_id - tcs->offset]; in get_req_from_tcs()
347 static void __tcs_set_trigger(struct rsc_drv *drv, int tcs_id, bool trigger) in __tcs_set_trigger() argument
356 enable = read_tcs_reg(drv, RSC_DRV_CONTROL, tcs_id); in __tcs_set_trigger()
358 write_tcs_reg_sync(drv, RSC_DRV_CONTROL, tcs_id, enable); in __tcs_set_trigger()
360 write_tcs_reg_sync(drv, RSC_DRV_CONTROL, tcs_id, enable); in __tcs_set_trigger()
365 write_tcs_reg_sync(drv, RSC_DRV_CONTROL, tcs_id, enable); in __tcs_set_trigger()
367 write_tcs_reg_sync(drv, RSC_DRV_CONTROL, tcs_id, enable); in __tcs_set_trigger()
380 static void enable_tcs_irq(struct rsc_drv *drv, int tcs_id, bool enable) in enable_tcs_irq() argument
386 data |= BIT(tcs_id); in enable_tcs_irq()
388 data &= ~BIT(tcs_id); in enable_tcs_irq()
476 static void __tcs_buffer_write(struct rsc_drv *drv, int tcs_id, int cmd_id, in __tcs_buffer_write() argument
489 cmd_complete = read_tcs_reg(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, tcs_id); in __tcs_buffer_write()
498 write_tcs_cmd(drv, RSC_DRV_CMD_MSGID, tcs_id, j, msgid); in __tcs_buffer_write()
499 write_tcs_cmd(drv, RSC_DRV_CMD_ADDR, tcs_id, j, cmd->addr); in __tcs_buffer_write()
500 write_tcs_cmd(drv, RSC_DRV_CMD_DATA, tcs_id, j, cmd->data); in __tcs_buffer_write()
504 write_tcs_reg(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, tcs_id, cmd_complete); in __tcs_buffer_write()
505 cmd_enable |= read_tcs_reg(drv, RSC_DRV_CMD_ENABLE, tcs_id); in __tcs_buffer_write()
506 write_tcs_reg(drv, RSC_DRV_CMD_ENABLE, tcs_id, cmd_enable); in __tcs_buffer_write()
535 int tcs_id = tcs->offset; in check_for_req_inflight() local
537 for (i = 0; i < tcs->num_tcs; i++, tcs_id++) { in check_for_req_inflight()
538 if (tcs_is_free(drv, tcs_id)) in check_for_req_inflight()
541 curr_enabled = read_tcs_reg(drv, RSC_DRV_CMD_ENABLE, tcs_id); in check_for_req_inflight()
544 addr = read_tcs_cmd(drv, RSC_DRV_CMD_ADDR, tcs_id, j); in check_for_req_inflight()
632 int tcs_id; in rpmh_rsc_send_data() local
643 (tcs_id = claim_tcs_for_req(drv, tcs, msg)) >= 0, in rpmh_rsc_send_data()
646 tcs->req[tcs_id - tcs->offset] = msg; in rpmh_rsc_send_data()
647 set_bit(tcs_id, drv->tcs_in_use); in rpmh_rsc_send_data()
654 write_tcs_reg_sync(drv, RSC_DRV_CMD_ENABLE, tcs_id, 0); in rpmh_rsc_send_data()
655 write_tcs_reg_sync(drv, RSC_DRV_CMD_WAIT_FOR_CMPL, tcs_id, 0); in rpmh_rsc_send_data()
656 enable_tcs_irq(drv, tcs_id, true); in rpmh_rsc_send_data()
668 __tcs_buffer_write(drv, tcs_id, 0, msg); in rpmh_rsc_send_data()
669 __tcs_set_trigger(drv, tcs_id, true); in rpmh_rsc_send_data()
690 int *tcs_id, int *cmd_id) in find_slots() argument
707 *tcs_id = offset + tcs->offset; in find_slots()
729 int tcs_id = 0, cmd_id = 0; in rpmh_rsc_write_ctrl_data() local
737 ret = find_slots(tcs, msg, &tcs_id, &cmd_id); in rpmh_rsc_write_ctrl_data()
739 __tcs_buffer_write(drv, tcs_id, cmd_id, msg); in rpmh_rsc_write_ctrl_data()