Lines Matching full:cdns
198 static inline u32 cdns_readl(struct sdw_cdns *cdns, int offset) in cdns_readl() argument
200 return readl(cdns->registers + offset); in cdns_readl()
203 static inline void cdns_writel(struct sdw_cdns *cdns, int offset, u32 value) in cdns_writel() argument
205 writel(value, cdns->registers + offset); in cdns_writel()
208 static inline void cdns_updatel(struct sdw_cdns *cdns, in cdns_updatel() argument
213 tmp = cdns_readl(cdns, offset); in cdns_updatel()
215 cdns_writel(cdns, offset, tmp); in cdns_updatel()
218 static int cdns_set_wait(struct sdw_cdns *cdns, int offset, u32 mask, u32 value) in cdns_set_wait() argument
225 reg_read = readl(cdns->registers + offset); in cdns_set_wait()
236 static int cdns_clear_bit(struct sdw_cdns *cdns, int offset, u32 value) in cdns_clear_bit() argument
238 writel(value, cdns->registers + offset); in cdns_clear_bit()
241 return cdns_set_wait(cdns, offset, value, 0); in cdns_clear_bit()
248 static int cdns_config_update(struct sdw_cdns *cdns) in cdns_config_update() argument
252 if (sdw_cdns_is_clock_stop(cdns)) { in cdns_config_update()
253 dev_err(cdns->dev, "Cannot program MCP_CONFIG_UPDATE in ClockStopMode\n"); in cdns_config_update()
257 ret = cdns_clear_bit(cdns, CDNS_MCP_CONFIG_UPDATE, in cdns_config_update()
260 dev_err(cdns->dev, "Config update timedout\n"); in cdns_config_update()
272 static ssize_t cdns_sprintf(struct sdw_cdns *cdns, in cdns_sprintf() argument
276 "%4x\t%8x\n", reg, cdns_readl(cdns, reg)); in cdns_sprintf()
281 struct sdw_cdns *cdns = s->private; in cdns_reg_show() local
295 ret += cdns_sprintf(cdns, buf, ret, i); in cdns_reg_show()
301 ret += cdns_sprintf(cdns, buf, ret, i); in cdns_reg_show()
305 ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_SSP_CTRL0); in cdns_reg_show()
306 ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_SSP_CTRL1); in cdns_reg_show()
307 ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_CLK_CTRL0); in cdns_reg_show()
308 ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_CLK_CTRL1); in cdns_reg_show()
313 num_ports = cdns->num_ports; in cdns_reg_show()
320 ret += cdns_sprintf(cdns, buf, ret, j); in cdns_reg_show()
331 ret += cdns_sprintf(cdns, buf, ret, j); in cdns_reg_show()
337 ret += cdns_sprintf(cdns, buf, ret, in cdns_reg_show()
345 ret += cdns_sprintf(cdns, buf, ret, CDNS_PDI_CONFIG(i)); in cdns_reg_show()
356 struct sdw_cdns *cdns = data; in cdns_hw_reset() local
365 ret = sdw_cdns_exit_reset(cdns); in cdns_hw_reset()
367 dev_dbg(cdns->dev, "link hw_reset done: %d\n", ret); in cdns_hw_reset()
376 struct sdw_cdns *cdns = data; in cdns_parity_error_injection() local
383 bus = &cdns->bus; in cdns_parity_error_injection()
391 dev_err_ratelimited(cdns->dev, in cdns_parity_error_injection()
411 cdns_updatel(cdns, CDNS_MCP_CMDCTRL, in cdns_parity_error_injection()
416 cdns_updatel(cdns, CDNS_MCP_CONFIG_UPDATE, in cdns_parity_error_injection()
421 ret = sdw_bread_no_pm_unlocked(&cdns->bus, 0xf, SDW_SCP_DEVID_0); in cdns_parity_error_injection()
422 dev_info(cdns->dev, "parity error injection, read: %d\n", ret); in cdns_parity_error_injection()
425 cdns_updatel(cdns, CDNS_MCP_CMDCTRL, in cdns_parity_error_injection()
430 cdns_updatel(cdns, CDNS_MCP_CONFIG_UPDATE, in cdns_parity_error_injection()
455 * @cdns: Cadence instance
458 void sdw_cdns_debugfs_init(struct sdw_cdns *cdns, struct dentry *root) in sdw_cdns_debugfs_init() argument
460 debugfs_create_file("cdns-registers", 0400, root, cdns, &cdns_reg_fops); in sdw_cdns_debugfs_init()
462 debugfs_create_file("cdns-hw-reset", 0200, root, cdns, in sdw_cdns_debugfs_init()
465 debugfs_create_file("cdns-parity-error-injection", 0200, root, cdns, in sdw_cdns_debugfs_init()
476 cdns_fill_msg_resp(struct sdw_cdns *cdns, in cdns_fill_msg_resp() argument
484 if (!(cdns->response_buf[i] & CDNS_MCP_RESP_ACK)) { in cdns_fill_msg_resp()
486 dev_dbg_ratelimited(cdns->dev, "Msg Ack not received\n"); in cdns_fill_msg_resp()
488 if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) { in cdns_fill_msg_resp()
490 dev_err_ratelimited(cdns->dev, "Msg NACK received\n"); in cdns_fill_msg_resp()
495 dev_err_ratelimited(cdns->dev, "Msg NACKed for Slave %d\n", msg->dev_num); in cdns_fill_msg_resp()
500 dev_dbg_ratelimited(cdns->dev, "Msg ignored for Slave %d\n", msg->dev_num); in cdns_fill_msg_resp()
508 cdns->response_buf[i]); in cdns_fill_msg_resp()
515 _cdns_xfer_msg(struct sdw_cdns *cdns, struct sdw_msg *msg, int cmd, in _cdns_xfer_msg() argument
523 if (cdns->msg_count != count) { in _cdns_xfer_msg()
524 cdns_writel(cdns, CDNS_MCP_FIFOLEVEL, count); in _cdns_xfer_msg()
525 cdns->msg_count = count; in _cdns_xfer_msg()
541 cdns_writel(cdns, base, data); in _cdns_xfer_msg()
549 time = wait_for_completion_timeout(&cdns->tx_complete, in _cdns_xfer_msg()
552 dev_err(cdns->dev, "IO transfer timed out, cmd %d device %d addr %x len %d\n", in _cdns_xfer_msg()
558 return cdns_fill_msg_resp(cdns, msg, count, offset); in _cdns_xfer_msg()
562 cdns_program_scp_addr(struct sdw_cdns *cdns, struct sdw_msg *msg) in cdns_program_scp_addr() argument
570 if (cdns->msg_count != CDNS_SCP_RX_FIFOLEVEL) { in cdns_program_scp_addr()
571 cdns_writel(cdns, CDNS_MCP_FIFOLEVEL, CDNS_SCP_RX_FIFOLEVEL); in cdns_program_scp_addr()
572 cdns->msg_count = CDNS_SCP_RX_FIFOLEVEL; in cdns_program_scp_addr()
586 cdns_writel(cdns, base, data[0]); in cdns_program_scp_addr()
588 cdns_writel(cdns, base, data[1]); in cdns_program_scp_addr()
590 time = wait_for_completion_timeout(&cdns->tx_complete, in cdns_program_scp_addr()
593 dev_err(cdns->dev, "SCP Msg trf timed out\n"); in cdns_program_scp_addr()
600 if (!(cdns->response_buf[i] & CDNS_MCP_RESP_ACK)) { in cdns_program_scp_addr()
602 dev_err(cdns->dev, "Program SCP Ack not received\n"); in cdns_program_scp_addr()
603 if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) { in cdns_program_scp_addr()
605 dev_err(cdns->dev, "Program SCP NACK received\n"); in cdns_program_scp_addr()
612 dev_err_ratelimited(cdns->dev, in cdns_program_scp_addr()
618 dev_dbg_ratelimited(cdns->dev, in cdns_program_scp_addr()
626 static int cdns_prep_msg(struct sdw_cdns *cdns, struct sdw_msg *msg, int *cmd) in cdns_prep_msg() argument
631 ret = cdns_program_scp_addr(cdns, msg); in cdns_prep_msg()
648 dev_err(cdns->dev, "Invalid msg cmd: %d\n", msg->flags); in cdns_prep_msg()
658 struct sdw_cdns *cdns = bus_to_cdns(bus); in cdns_xfer_msg() local
661 ret = cdns_prep_msg(cdns, msg, &cmd); in cdns_xfer_msg()
666 ret = _cdns_xfer_msg(cdns, msg, cmd, i * CDNS_MCP_CMD_LEN, in cdns_xfer_msg()
675 ret = _cdns_xfer_msg(cdns, msg, cmd, i * CDNS_MCP_CMD_LEN, in cdns_xfer_msg()
687 struct sdw_cdns *cdns = bus_to_cdns(bus); in cdns_xfer_msg_defer() local
694 ret = cdns_prep_msg(cdns, msg, &cmd); in cdns_xfer_msg_defer()
698 cdns->defer = defer; in cdns_xfer_msg_defer()
699 cdns->defer->length = msg->len; in cdns_xfer_msg_defer()
701 return _cdns_xfer_msg(cdns, msg, cmd, 0, msg->len, true); in cdns_xfer_msg_defer()
708 struct sdw_cdns *cdns = bus_to_cdns(bus); in cdns_reset_page_addr() local
715 return cdns_program_scp_addr(cdns, &msg); in cdns_reset_page_addr()
723 static void cdns_read_response(struct sdw_cdns *cdns) in cdns_read_response() argument
728 num_resp = cdns_readl(cdns, CDNS_MCP_FIFOSTAT); in cdns_read_response()
734 cdns->response_buf[i] = cdns_readl(cdns, cmd_base); in cdns_read_response()
739 static int cdns_update_slave_status(struct sdw_cdns *cdns, in cdns_update_slave_status() argument
785 dev_warn_ratelimited(cdns->dev, in cdns_update_slave_status()
790 val = cdns_readl(cdns, CDNS_MCP_SLAVE_STAT); in cdns_update_slave_status()
809 dev_warn_ratelimited(cdns->dev, in cdns_update_slave_status()
817 return sdw_handle_slave_status(&cdns->bus, status); in cdns_update_slave_status()
829 struct sdw_cdns *cdns = dev_id; in sdw_cdns_irq() local
834 if (!cdns->link_up) in sdw_cdns_irq()
837 int_status = cdns_readl(cdns, CDNS_MCP_INTSTAT); in sdw_cdns_irq()
847 cdns_read_response(cdns); in sdw_cdns_irq()
849 if (cdns->defer) { in sdw_cdns_irq()
850 cdns_fill_msg_resp(cdns, cdns->defer->msg, in sdw_cdns_irq()
851 cdns->defer->length, 0); in sdw_cdns_irq()
852 complete(&cdns->defer->complete); in sdw_cdns_irq()
853 cdns->defer = NULL; in sdw_cdns_irq()
855 complete(&cdns->tx_complete); in sdw_cdns_irq()
861 dev_err_ratelimited(cdns->dev, "Parity error\n"); in sdw_cdns_irq()
866 dev_err_ratelimited(cdns->dev, "Bus clash for control word\n"); in sdw_cdns_irq()
874 dev_err_ratelimited(cdns->dev, "Bus clash for data word\n"); in sdw_cdns_irq()
877 if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL && in sdw_cdns_irq()
882 port_intstat = cdns_readl(cdns, CDNS_MCP_PORT_INTSTAT); in sdw_cdns_irq()
883 dev_err_ratelimited(cdns->dev, "DP interrupt: PortIntStat %8x\n", in sdw_cdns_irq()
887 cdns_writel(cdns, CDNS_MCP_PORT_INTSTAT, port_intstat); in sdw_cdns_irq()
892 cdns_updatel(cdns, CDNS_MCP_INTMASK, in sdw_cdns_irq()
904 if (cdns->interrupt_enabled) in sdw_cdns_irq()
905 schedule_work(&cdns->work); in sdw_cdns_irq()
908 cdns_writel(cdns, CDNS_MCP_INTSTAT, int_status); in sdw_cdns_irq()
917 * @work: cdns worker thread
921 struct sdw_cdns *cdns = in cdns_update_slave_status_work() local
925 dev_dbg_ratelimited(cdns->dev, "Slave status change\n"); in cdns_update_slave_status_work()
927 slave0 = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT0); in cdns_update_slave_status_work()
928 slave1 = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT1); in cdns_update_slave_status_work()
930 cdns_update_slave_status(cdns, slave0, slave1); in cdns_update_slave_status_work()
931 cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT0, slave0); in cdns_update_slave_status_work()
932 cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT1, slave1); in cdns_update_slave_status_work()
935 cdns_writel(cdns, CDNS_MCP_INTSTAT, CDNS_MCP_INT_SLAVE_MASK); in cdns_update_slave_status_work()
936 cdns_updatel(cdns, CDNS_MCP_INTMASK, in cdns_update_slave_status_work()
947 * @cdns: Cadence instance
949 int sdw_cdns_exit_reset(struct sdw_cdns *cdns) in sdw_cdns_exit_reset() argument
952 cdns_updatel(cdns, CDNS_MCP_CONTROL, in sdw_cdns_exit_reset()
957 cdns_updatel(cdns, CDNS_MCP_CONTROL, in sdw_cdns_exit_reset()
962 cdns_updatel(cdns, CDNS_MCP_CONFIG_UPDATE, in sdw_cdns_exit_reset()
974 * @cdns: Cadence instance
977 static void cdns_enable_slave_interrupts(struct sdw_cdns *cdns, bool state) in cdns_enable_slave_interrupts() argument
981 mask = cdns_readl(cdns, CDNS_MCP_INTMASK); in cdns_enable_slave_interrupts()
987 cdns_writel(cdns, CDNS_MCP_INTMASK, mask); in cdns_enable_slave_interrupts()
992 * @cdns: Cadence instance
995 int sdw_cdns_enable_interrupt(struct sdw_cdns *cdns, bool state) in sdw_cdns_enable_interrupt() argument
1015 if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL) in sdw_cdns_enable_interrupt()
1035 slave_state = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT0); in sdw_cdns_enable_interrupt()
1036 cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT0, slave_state); in sdw_cdns_enable_interrupt()
1037 slave_state = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT1); in sdw_cdns_enable_interrupt()
1038 cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT1, slave_state); in sdw_cdns_enable_interrupt()
1040 cdns->interrupt_enabled = state; in sdw_cdns_enable_interrupt()
1052 cancel_work_sync(&cdns->work); in sdw_cdns_enable_interrupt()
1054 cdns_writel(cdns, CDNS_MCP_SLAVE_INTMASK0, slave_intmask0); in sdw_cdns_enable_interrupt()
1055 cdns_writel(cdns, CDNS_MCP_SLAVE_INTMASK1, slave_intmask1); in sdw_cdns_enable_interrupt()
1056 cdns_writel(cdns, CDNS_MCP_INTMASK, mask); in sdw_cdns_enable_interrupt()
1062 static int cdns_allocate_pdi(struct sdw_cdns *cdns, in cdns_allocate_pdi() argument
1072 pdi = devm_kcalloc(cdns->dev, num, sizeof(*pdi), GFP_KERNEL); in cdns_allocate_pdi()
1087 * @cdns: Cadence instance
1090 int sdw_cdns_pdi_init(struct sdw_cdns *cdns, in sdw_cdns_pdi_init() argument
1097 cdns->pcm.num_bd = config.pcm_bd; in sdw_cdns_pdi_init()
1098 cdns->pcm.num_in = config.pcm_in; in sdw_cdns_pdi_init()
1099 cdns->pcm.num_out = config.pcm_out; in sdw_cdns_pdi_init()
1100 cdns->pdm.num_bd = config.pdm_bd; in sdw_cdns_pdi_init()
1101 cdns->pdm.num_in = config.pdm_in; in sdw_cdns_pdi_init()
1102 cdns->pdm.num_out = config.pdm_out; in sdw_cdns_pdi_init()
1105 stream = &cdns->pcm; in sdw_cdns_pdi_init()
1110 ret = cdns_allocate_pdi(cdns, &stream->bd, in sdw_cdns_pdi_init()
1117 ret = cdns_allocate_pdi(cdns, &stream->in, in sdw_cdns_pdi_init()
1124 ret = cdns_allocate_pdi(cdns, &stream->out, in sdw_cdns_pdi_init()
1131 cdns->num_ports = stream->num_pdi; in sdw_cdns_pdi_init()
1134 stream = &cdns->pdm; in sdw_cdns_pdi_init()
1135 ret = cdns_allocate_pdi(cdns, &stream->bd, in sdw_cdns_pdi_init()
1142 ret = cdns_allocate_pdi(cdns, &stream->in, in sdw_cdns_pdi_init()
1149 ret = cdns_allocate_pdi(cdns, &stream->out, in sdw_cdns_pdi_init()
1157 cdns->num_ports += stream->num_pdi; in sdw_cdns_pdi_init()
1178 static void cdns_init_clock_ctrl(struct sdw_cdns *cdns) in cdns_init_clock_ctrl() argument
1180 struct sdw_bus *bus = &cdns->bus; in cdns_init_clock_ctrl()
1189 cdns_updatel(cdns, CDNS_MCP_CLK_CTRL0, in cdns_init_clock_ctrl()
1191 cdns_updatel(cdns, CDNS_MCP_CLK_CTRL1, in cdns_init_clock_ctrl()
1200 cdns_writel(cdns, CDNS_MCP_FRAME_SHAPE_INIT, val); in cdns_init_clock_ctrl()
1204 cdns_writel(cdns, CDNS_MCP_SSP_CTRL0, ssp_interval); in cdns_init_clock_ctrl()
1205 cdns_writel(cdns, CDNS_MCP_SSP_CTRL1, ssp_interval); in cdns_init_clock_ctrl()
1210 * @cdns: Cadence instance
1212 int sdw_cdns_init(struct sdw_cdns *cdns) in sdw_cdns_init() argument
1216 cdns_init_clock_ctrl(cdns); in sdw_cdns_init()
1219 cdns->msg_count = cdns_readl(cdns, CDNS_MCP_FIFOLEVEL); in sdw_cdns_init()
1222 cdns_updatel(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_CMD_RST, in sdw_cdns_init()
1226 cdns_updatel(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_CMD_ACCEPT, in sdw_cdns_init()
1230 val = cdns_readl(cdns, CDNS_MCP_CONFIG); in sdw_cdns_init()
1245 if (cdns->bus.multi_link) in sdw_cdns_init()
1253 cdns_writel(cdns, CDNS_MCP_CONFIG, val); in sdw_cdns_init()
1263 struct sdw_cdns *cdns = bus_to_cdns(bus); in cdns_bus_conf() local
1268 dev_err(cdns->dev, "NULL curr_dr_freq\n"); in cdns_bus_conf()
1281 cdns_updatel(cdns, mcp_clkctrl_off, CDNS_MCP_CLK_MCLKD_MASK, divider); in cdns_bus_conf()
1290 struct sdw_cdns *cdns = bus_to_cdns(bus); in cdns_port_params() local
1298 dpn_config = cdns_readl(cdns, dpn_config_off); in cdns_port_params()
1304 cdns_writel(cdns, dpn_config_off, dpn_config); in cdns_port_params()
1313 struct sdw_cdns *cdns = bus_to_cdns(bus); in cdns_transport_params() local
1337 dpn_config = cdns_readl(cdns, dpn_config_off); in cdns_transport_params()
1340 cdns_writel(cdns, dpn_config_off, dpn_config); in cdns_transport_params()
1344 cdns_writel(cdns, dpn_offsetctrl_off, dpn_offsetctrl); in cdns_transport_params()
1350 cdns_writel(cdns, dpn_hctrl_off, dpn_hctrl); in cdns_transport_params()
1351 cdns_writel(cdns, dpn_samplectrl_off, (t_params->sample_interval - 1)); in cdns_transport_params()
1359 struct sdw_cdns *cdns = bus_to_cdns(bus); in cdns_port_enable() local
1368 cdns_writel(cdns, dpn_chnen_off, ch_mask); in cdns_port_enable()
1382 * @cdns: Cadence instance
1384 bool sdw_cdns_is_clock_stop(struct sdw_cdns *cdns) in sdw_cdns_is_clock_stop() argument
1386 return !!(cdns_readl(cdns, CDNS_MCP_STAT) & CDNS_MCP_STAT_CLK_STOP); in sdw_cdns_is_clock_stop()
1393 * @cdns: Cadence instance
1396 int sdw_cdns_clock_stop(struct sdw_cdns *cdns, bool block_wake) in sdw_cdns_clock_stop() argument
1403 if (sdw_cdns_is_clock_stop(cdns)) { in sdw_cdns_clock_stop()
1404 dev_dbg(cdns->dev, "Clock is already stopped\n"); in sdw_cdns_clock_stop()
1413 cdns_enable_slave_interrupts(cdns, false); in sdw_cdns_clock_stop()
1421 cdns_updatel(cdns, CDNS_MCP_CONTROL, in sdw_cdns_clock_stop()
1425 list_for_each_entry(slave, &cdns->bus.slaves, node) { in sdw_cdns_clock_stop()
1440 cdns_updatel(cdns, CDNS_MCP_CONTROL, in sdw_cdns_clock_stop()
1444 cdns_updatel(cdns, CDNS_MCP_CONTROL, in sdw_cdns_clock_stop()
1448 ret = cdns_config_update(cdns); in sdw_cdns_clock_stop()
1450 dev_err(cdns->dev, "%s: config_update failed\n", __func__); in sdw_cdns_clock_stop()
1456 ret = sdw_bus_prep_clk_stop(&cdns->bus); in sdw_cdns_clock_stop()
1458 dev_err(cdns->dev, "prepare clock stop failed %d\n", ret); in sdw_cdns_clock_stop()
1467 ret = sdw_bus_clk_stop(&cdns->bus); in sdw_cdns_clock_stop()
1469 dev_err(cdns->dev, "bus clock stop failed %d", ret); in sdw_cdns_clock_stop()
1473 ret = cdns_set_wait(cdns, CDNS_MCP_STAT, in sdw_cdns_clock_stop()
1477 dev_err(cdns->dev, "Clock stop failed %d\n", ret); in sdw_cdns_clock_stop()
1486 * @cdns: Cadence instance
1490 int sdw_cdns_clock_restart(struct sdw_cdns *cdns, bool bus_reset) in sdw_cdns_clock_restart() argument
1495 cdns_enable_slave_interrupts(cdns, true); in sdw_cdns_clock_restart()
1497 ret = cdns_clear_bit(cdns, CDNS_MCP_CONTROL, in sdw_cdns_clock_restart()
1500 dev_err(cdns->dev, "Couldn't exit from clock stop\n"); in sdw_cdns_clock_restart()
1504 ret = cdns_set_wait(cdns, CDNS_MCP_STAT, CDNS_MCP_STAT_CLK_STOP, 0); in sdw_cdns_clock_restart()
1506 dev_err(cdns->dev, "clock stop exit failed %d\n", ret); in sdw_cdns_clock_restart()
1510 cdns_updatel(cdns, CDNS_MCP_CONTROL, in sdw_cdns_clock_restart()
1517 cdns_updatel(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_CMD_ACCEPT, 0); in sdw_cdns_clock_restart()
1522 cdns_updatel(cdns, CDNS_MCP_CONFIG, in sdw_cdns_clock_restart()
1526 ret = cdns_config_update(cdns); in sdw_cdns_clock_restart()
1528 dev_err(cdns->dev, "%s: config_update failed\n", __func__); in sdw_cdns_clock_restart()
1532 ret = sdw_bus_exit_clk_stop(&cdns->bus); in sdw_cdns_clock_restart()
1534 dev_err(cdns->dev, "bus failed to exit clock stop %d\n", ret); in sdw_cdns_clock_restart()
1543 * @cdns: Cadence instance
1545 int sdw_cdns_probe(struct sdw_cdns *cdns) in sdw_cdns_probe() argument
1547 init_completion(&cdns->tx_complete); in sdw_cdns_probe()
1548 cdns->bus.port_ops = &cdns_port_ops; in sdw_cdns_probe()
1550 INIT_WORK(&cdns->work, cdns_update_slave_status_work); in sdw_cdns_probe()
1558 struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai); in cdns_set_sdw_stream() local
1585 dma->bus = &cdns->bus; in cdns_set_sdw_stream()
1586 dma->link_id = cdns->instance; in cdns_set_sdw_stream()
1611 * @cdns: Cadence instance
1620 static struct sdw_cdns_pdi *cdns_find_pdi(struct sdw_cdns *cdns, in cdns_find_pdi() argument
1638 * @cdns: Cadence instance
1643 void sdw_cdns_config_stream(struct sdw_cdns *cdns, in sdw_cdns_config_stream() argument
1651 if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL) in sdw_cdns_config_stream()
1655 cdns_updatel(cdns, offset, in sdw_cdns_config_stream()
1662 cdns_writel(cdns, CDNS_PDI_CONFIG(pdi->num), val); in sdw_cdns_config_stream()
1669 * @cdns: Cadence instance
1675 struct sdw_cdns_pdi *sdw_cdns_alloc_pdi(struct sdw_cdns *cdns, in sdw_cdns_alloc_pdi() argument
1682 pdi = cdns_find_pdi(cdns, 0, stream->num_in, stream->in, in sdw_cdns_alloc_pdi()
1685 pdi = cdns_find_pdi(cdns, 0, stream->num_out, stream->out, in sdw_cdns_alloc_pdi()
1690 pdi = cdns_find_pdi(cdns, 2, stream->num_bd, stream->bd, in sdw_cdns_alloc_pdi()