Lines Matching full:cdns

206 static inline u32 cdns_readl(struct sdw_cdns *cdns, int offset)
208 return readl(cdns->registers + offset);
211 static inline void cdns_writel(struct sdw_cdns *cdns, int offset, u32 value)
213 writel(value, cdns->registers + offset);
216 static inline u32 cdns_ip_readl(struct sdw_cdns *cdns, int offset)
218 return cdns_readl(cdns, cdns->ip_offset + offset);
221 static inline void cdns_ip_writel(struct sdw_cdns *cdns, int offset, u32 value)
223 return cdns_writel(cdns, cdns->ip_offset + offset, value);
226 static inline void cdns_updatel(struct sdw_cdns *cdns,
231 tmp = cdns_readl(cdns, offset);
233 cdns_writel(cdns, offset, tmp);
236 static inline void cdns_ip_updatel(struct sdw_cdns *cdns,
239 cdns_updatel(cdns, cdns->ip_offset + offset, mask, val);
242 static int cdns_set_wait(struct sdw_cdns *cdns, int offset, u32 mask, u32 value)
249 reg_read = readl(cdns->registers + offset);
260 static int cdns_clear_bit(struct sdw_cdns *cdns, int offset, u32 value)
262 writel(value, cdns->registers + offset);
265 return cdns_set_wait(cdns, offset, value, 0);
272 static int cdns_config_update(struct sdw_cdns *cdns)
276 if (sdw_cdns_is_clock_stop(cdns)) {
277 dev_err(cdns->dev, "Cannot program MCP_CONFIG_UPDATE in ClockStopMode\n");
281 ret = cdns_clear_bit(cdns, CDNS_MCP_CONFIG_UPDATE,
284 dev_err(cdns->dev, "Config update timedout\n");
291 * @cdns: Cadence instance
293 void sdw_cdns_config_update(struct sdw_cdns *cdns)
296 cdns_writel(cdns, CDNS_MCP_CONFIG_UPDATE, CDNS_MCP_CONFIG_UPDATE_BIT);
302 * @cdns: Cadence instance
304 int sdw_cdns_config_update_set_wait(struct sdw_cdns *cdns)
307 return cdns_set_wait(cdns, CDNS_MCP_CONFIG_UPDATE,
319 static ssize_t cdns_sprintf(struct sdw_cdns *cdns,
323 "%4x\t%8x\n", reg, cdns_readl(cdns, reg));
328 struct sdw_cdns *cdns = s->private;
341 ret += cdns_sprintf(cdns, buf, ret, i);
347 ret += cdns_sprintf(cdns, buf, ret, i);
351 ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_SSP_CTRL0);
352 ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_SSP_CTRL1);
353 ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_CLK_CTRL0);
354 ret += cdns_sprintf(cdns, buf, ret, CDNS_MCP_CLK_CTRL1);
359 num_ports = cdns->num_ports;
366 ret += cdns_sprintf(cdns, buf, ret, j);
377 ret += cdns_sprintf(cdns, buf, ret, j);
383 ret += cdns_sprintf(cdns, buf, ret,
391 ret += cdns_sprintf(cdns, buf, ret, CDNS_PDI_CONFIG(i));
401 struct sdw_cdns *cdns = data;
410 ret = sdw_cdns_exit_reset(cdns);
412 dev_dbg(cdns->dev, "link hw_reset done: %d\n", ret);
421 struct sdw_cdns *cdns = data;
428 bus = &cdns->bus;
436 dev_err_ratelimited(cdns->dev,
455 cdns_ip_updatel(cdns, CDNS_IP_MCP_CMDCTRL,
460 ret = cdns_clear_bit(cdns, CDNS_MCP_CONFIG_UPDATE, CDNS_MCP_CONFIG_UPDATE_BIT);
465 ret = sdw_bread_no_pm_unlocked(&cdns->bus, 0xf, SDW_SCP_DEVID_0);
466 dev_info(cdns->dev, "parity error injection, read: %d\n", ret);
469 cdns_ip_updatel(cdns, CDNS_IP_MCP_CMDCTRL,
474 ret = cdns_clear_bit(cdns, CDNS_MCP_CONFIG_UPDATE, CDNS_MCP_CONFIG_UPDATE_BIT);
500 struct sdw_cdns *cdns = data;
501 unsigned int pdi_out_num = cdns->pcm.num_bd + cdns->pcm.num_out;
509 cdns->pdi_loopback_source = value;
517 struct sdw_cdns *cdns = data;
518 unsigned int pdi_in_num = cdns->pcm.num_bd + cdns->pcm.num_in;
526 cdns->pdi_loopback_target = value;
534 * @cdns: Cadence instance
537 void sdw_cdns_debugfs_init(struct sdw_cdns *cdns, struct dentry *root)
539 debugfs_create_file("cdns-registers", 0400, root, cdns, &cdns_reg_fops);
541 debugfs_create_file("cdns-hw-reset", 0200, root, cdns,
544 debugfs_create_file("cdns-parity-error-injection", 0200, root, cdns,
547 cdns->pdi_loopback_source = -1;
548 cdns->pdi_loopback_target = -1;
550 debugfs_create_file("cdns-pdi-loopback-source", 0200, root, cdns,
553 debugfs_create_file("cdns-pdi-loopback-target", 0200, root, cdns,
565 cdns_fill_msg_resp(struct sdw_cdns *cdns,
573 if (!(cdns->response_buf[i] & CDNS_MCP_RESP_ACK)) {
575 dev_vdbg(cdns->dev, "Msg Ack not received, cmd %d\n", i);
577 if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) {
579 dev_err_ratelimited(cdns->dev, "Msg NACK received, cmd %d\n", i);
584 dev_err_ratelimited(cdns->dev, "Msg NACKed for Slave %d\n", msg->dev_num);
589 dev_dbg_ratelimited(cdns->dev, "Msg ignored for Slave %d\n", msg->dev_num);
597 cdns->response_buf[i]);
603 static void cdns_read_response(struct sdw_cdns *cdns)
609 BUILD_BUG_ON(ARRAY_SIZE(cdns->response_buf) < CDNS_MCP_CMD_LEN + 2);
611 num_resp = cdns_readl(cdns, CDNS_MCP_FIFOSTAT);
613 if (num_resp > ARRAY_SIZE(cdns->response_buf)) {
614 dev_warn(cdns->dev, "RX AVAIL %d too long\n", num_resp);
615 num_resp = ARRAY_SIZE(cdns->response_buf);
621 cdns->response_buf[i] = cdns_ip_readl(cdns, cmd_base);
627 _cdns_xfer_msg(struct sdw_cdns *cdns, struct sdw_msg *msg, int cmd,
635 if (cdns->msg_count != count) {
636 cdns_writel(cdns, CDNS_MCP_FIFOLEVEL, count);
637 cdns->msg_count = count;
653 cdns_ip_writel(cdns, base, data);
661 time = wait_for_completion_timeout(&cdns->tx_complete,
664 dev_err(cdns->dev, "IO transfer timed out, cmd %d device %d addr %x len %d\n",
669 cdns_read_response(cdns);
674 return cdns_fill_msg_resp(cdns, msg, count, offset);
678 cdns_program_scp_addr(struct sdw_cdns *cdns, struct sdw_msg *msg)
686 if (cdns->msg_count != CDNS_SCP_RX_FIFOLEVEL) {
687 cdns_writel(cdns, CDNS_MCP_FIFOLEVEL, CDNS_SCP_RX_FIFOLEVEL);
688 cdns->msg_count = CDNS_SCP_RX_FIFOLEVEL;
702 cdns_ip_writel(cdns, base, data[0]);
704 cdns_ip_writel(cdns, base, data[1]);
706 time = wait_for_completion_timeout(&cdns->tx_complete,
709 dev_err(cdns->dev, "SCP Msg trf timed out\n");
716 if (!(cdns->response_buf[i] & CDNS_MCP_RESP_ACK)) {
718 dev_err(cdns->dev, "Program SCP Ack not received\n");
719 if (cdns->response_buf[i] & CDNS_MCP_RESP_NACK) {
721 dev_err(cdns->dev, "Program SCP NACK received\n");
728 dev_err_ratelimited(cdns->dev,
734 dev_dbg_ratelimited(cdns->dev,
742 static int cdns_prep_msg(struct sdw_cdns *cdns, struct sdw_msg *msg, int *cmd)
747 ret = cdns_program_scp_addr(cdns, msg);
764 dev_err(cdns->dev, "Invalid msg cmd: %d\n", msg->flags);
774 struct sdw_cdns *cdns = bus_to_cdns(bus);
777 ret = cdns_prep_msg(cdns, msg, &cmd);
782 ret = _cdns_xfer_msg(cdns, msg, cmd, i * CDNS_MCP_CMD_LEN,
791 return _cdns_xfer_msg(cdns, msg, cmd, i * CDNS_MCP_CMD_LEN,
799 struct sdw_cdns *cdns = bus_to_cdns(bus);
808 ret = cdns_prep_msg(cdns, msg, &cmd);
812 return _cdns_xfer_msg(cdns, msg, cmd, 0, msg->len, true);
818 struct sdw_cdns *cdns = bus_to_cdns(bus);
820 return cdns_readl(cdns, CDNS_MCP_SLAVE_STAT);
828 static int cdns_update_slave_status(struct sdw_cdns *cdns,
874 val = cdns_readl(cdns, CDNS_MCP_SLAVE_STAT);
898 mutex_lock(&cdns->status_update_lock);
899 ret = sdw_handle_slave_status(&cdns->bus, status);
900 mutex_unlock(&cdns->status_update_lock);
914 struct sdw_cdns *cdns = dev_id;
918 if (!cdns->link_up)
921 int_status = cdns_readl(cdns, CDNS_MCP_INTSTAT);
931 struct sdw_bus *bus = &cdns->bus;
934 cdns_read_response(cdns);
937 cdns_fill_msg_resp(cdns, defer->msg,
941 complete(&cdns->tx_complete);
947 dev_err_ratelimited(cdns->dev, "Parity error\n");
952 dev_err_ratelimited(cdns->dev, "Bus clash for control word\n");
960 dev_err_ratelimited(cdns->dev, "Bus clash for data word\n");
963 if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL &&
968 port_intstat = cdns_readl(cdns, CDNS_MCP_PORT_INTSTAT);
969 dev_err_ratelimited(cdns->dev, "DP interrupt: PortIntStat %8x\n",
973 cdns_writel(cdns, CDNS_MCP_PORT_INTSTAT, port_intstat);
978 cdns_updatel(cdns, CDNS_MCP_INTMASK,
990 if (cdns->interrupt_enabled)
991 schedule_work(&cdns->work);
994 cdns_writel(cdns, CDNS_MCP_INTSTAT, int_status);
1001 struct sdw_cdns *cdns =
1008 val = cdns_readl(cdns, CDNS_MCP_SLAVE_STAT);
1013 dev_dbg(cdns->dev, "Peripheral %d status: %d\n", i, status[i]);
1017 mutex_lock(&cdns->status_update_lock);
1018 ret = sdw_handle_slave_status(&cdns->bus, status);
1019 mutex_unlock(&cdns->status_update_lock);
1021 dev_err(cdns->dev, "%s: sdw_handle_slave_status failed: %d\n", __func__, ret);
1028 * @work: cdns worker thread
1032 struct sdw_cdns *cdns =
1043 cdns_writel(cdns, CDNS_MCP_INTSTAT, CDNS_MCP_INT_SLAVE_MASK);
1045 slave0 = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT0);
1046 slave1 = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT1);
1052 cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT0, slave0);
1053 cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT1, slave1);
1058 dev_dbg_ratelimited(cdns->dev, "Slave status change: 0x%llx\n", slave_intstat);
1061 cdns_update_slave_status(cdns, slave_intstat);
1085 device0_status = cdns_readl(cdns, CDNS_MCP_SLAVE_STAT);
1090 dev_dbg_ratelimited(cdns->dev,
1096 dev_err_ratelimited(cdns->dev,
1103 cdns_updatel(cdns, CDNS_MCP_INTMASK,
1109 void sdw_cdns_check_self_clearing_bits(struct sdw_cdns *cdns, const char *string,
1120 ip_mcp_control = cdns_ip_readl(cdns, CDNS_IP_MCP_CONTROL);
1124 dev_err(cdns->dev, "%s failed: IP_MCP_CONTROL_SW_RST is not cleared\n", string);
1126 mcp_control = cdns_readl(cdns, CDNS_MCP_CONTROL);
1130 dev_err(cdns->dev, "%s failed: MCP_CONTROL_CMD_RST is not cleared\n", string);
1132 dev_err(cdns->dev, "%s failed: MCP_CONTROL_SOFT_RST is not cleared\n", string);
1134 dev_err(cdns->dev, "%s failed: MCP_CONTROL_CLK_STOP_CLR is not cleared\n", string);
1136 mcp_config_update = cdns_readl(cdns, CDNS_MCP_CONFIG_UPDATE);
1138 dev_err(cdns->dev, "%s failed: MCP_CONFIG_UPDATE_BIT is not cleared\n", string);
1143 dev_err(cdns->dev, "%s failed: MCP_CONTROL_HW_RST is not cleared\n", string);
1147 dev_dbg(cdns->dev, "%s: MCP_CONTROL_HW_RST is not cleared at iteration %d\n", string, i);
1151 mcp_control = cdns_readl(cdns, CDNS_MCP_CONTROL);
1163 * @cdns: Cadence instance
1165 int sdw_cdns_exit_reset(struct sdw_cdns *cdns)
1170 cdns_updatel(cdns, CDNS_MCP_CONTROL,
1175 return cdns_config_update(cdns);
1181 * @cdns: Cadence instance
1184 static void cdns_enable_slave_interrupts(struct sdw_cdns *cdns, bool state)
1188 mask = cdns_readl(cdns, CDNS_MCP_INTMASK);
1194 cdns_writel(cdns, CDNS_MCP_INTMASK, mask);
1199 * @cdns: Cadence instance
1202 int sdw_cdns_enable_interrupt(struct sdw_cdns *cdns, bool state)
1222 if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL)
1242 slave_state = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT0);
1243 cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT0, slave_state);
1244 slave_state = cdns_readl(cdns, CDNS_MCP_SLAVE_INTSTAT1);
1245 cdns_writel(cdns, CDNS_MCP_SLAVE_INTSTAT1, slave_state);
1247 cdns->interrupt_enabled = state;
1259 cancel_work_sync(&cdns->work);
1261 cdns_writel(cdns, CDNS_MCP_SLAVE_INTMASK0, slave_intmask0);
1262 cdns_writel(cdns, CDNS_MCP_SLAVE_INTMASK1, slave_intmask1);
1263 cdns_writel(cdns, CDNS_MCP_INTMASK, mask);
1269 static int cdns_allocate_pdi(struct sdw_cdns *cdns,
1279 pdi = devm_kcalloc(cdns->dev, num, sizeof(*pdi), GFP_KERNEL);
1294 * @cdns: Cadence instance
1297 int sdw_cdns_pdi_init(struct sdw_cdns *cdns,
1303 cdns->pcm.num_bd = config.pcm_bd;
1304 cdns->pcm.num_in = config.pcm_in;
1305 cdns->pcm.num_out = config.pcm_out;
1308 stream = &cdns->pcm;
1311 ret = cdns_allocate_pdi(cdns, &stream->bd, stream->num_bd);
1315 ret = cdns_allocate_pdi(cdns, &stream->in, stream->num_in);
1319 ret = cdns_allocate_pdi(cdns, &stream->out, stream->num_out);
1325 cdns->num_ports = stream->num_pdi;
1346 static int cdns_init_clock_ctrl(struct sdw_cdns *cdns)
1348 struct sdw_bus *bus = &cdns->bus;
1354 dev_dbg(cdns->dev, "mclk %d max %d row %d col %d\n",
1361 dev_err(cdns->dev, "Default frame_rate %d or row %d is invalid\n",
1370 cdns_updatel(cdns, CDNS_MCP_CLK_CTRL0,
1372 cdns_updatel(cdns, CDNS_MCP_CLK_CTRL1,
1385 cdns_writel(cdns, CDNS_MCP_FRAME_SHAPE_INIT, val);
1389 cdns_writel(cdns, CDNS_MCP_SSP_CTRL0, ssp_interval);
1390 cdns_writel(cdns, CDNS_MCP_SSP_CTRL1, ssp_interval);
1397 * @cdns: Cadence instance
1399 int sdw_cdns_soft_reset(struct sdw_cdns *cdns)
1403 cdns_updatel(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_SOFT_RST,
1406 ret = cdns_config_update(cdns);
1408 dev_err(cdns->dev, "%s: config update failed\n", __func__);
1412 ret = cdns_set_wait(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_SOFT_RST, 0);
1414 dev_err(cdns->dev, "%s: Soft Reset timed out\n", __func__);
1422 * @cdns: Cadence instance
1424 int sdw_cdns_init(struct sdw_cdns *cdns)
1429 ret = cdns_init_clock_ctrl(cdns);
1433 sdw_cdns_check_self_clearing_bits(cdns, __func__, false, 0);
1436 cdns->msg_count = cdns_readl(cdns, CDNS_MCP_FIFOLEVEL);
1439 cdns_updatel(cdns, CDNS_MCP_CONTROL, CDNS_MCP_CONTROL_CMD_RST,
1443 cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL, CDNS_IP_MCP_CONTROL_CMD_ACCEPT,
1447 cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL,
1452 val = cdns_readl(cdns, CDNS_MCP_CONFIG);
1457 cdns_writel(cdns, CDNS_MCP_CONFIG, val);
1460 val = cdns_ip_readl(cdns, CDNS_IP_MCP_CONFIG);
1472 if (cdns->bus.multi_link)
1480 cdns_ip_writel(cdns, CDNS_IP_MCP_CONFIG, val);
1490 struct sdw_cdns *cdns = bus_to_cdns(bus);
1495 dev_err(cdns->dev, "NULL curr_dr_freq\n");
1508 cdns_updatel(cdns, mcp_clkctrl_off, CDNS_MCP_CLK_MCLKD_MASK, divider);
1517 struct sdw_cdns *cdns = bus_to_cdns(bus);
1525 if (target_num == cdns->pdi_loopback_target &&
1526 cdns->pdi_loopback_source != -1) {
1527 source_num = cdns->pdi_loopback_source;
1539 dpn_config = cdns_readl(cdns, dpn_config_off_source);
1548 cdns_writel(cdns, dpn_config_off_target, dpn_config);
1557 struct sdw_cdns *cdns = bus_to_cdns(bus);
1574 if (target_num == cdns->pdi_loopback_target &&
1575 cdns->pdi_loopback_source != -1) {
1576 source_num = cdns->pdi_loopback_source;
1608 dpn_config = cdns_readl(cdns, dpn_config_off_source);
1613 cdns_writel(cdns, dpn_config_off_target, dpn_config);
1620 dpn_offsetctrl = cdns_readl(cdns, dpn_offsetctrl_off_source);
1622 cdns_writel(cdns, dpn_offsetctrl_off_target, dpn_offsetctrl);
1630 dpn_hctrl = cdns_readl(cdns, dpn_hctrl_off_source);
1632 cdns_writel(cdns, dpn_hctrl_off_target, dpn_hctrl);
1637 dpn_samplectrl = cdns_readl(cdns, dpn_samplectrl_off_source);
1638 cdns_writel(cdns, dpn_samplectrl_off_target, dpn_samplectrl);
1646 struct sdw_cdns *cdns = bus_to_cdns(bus);
1655 cdns_writel(cdns, dpn_chnen_off, ch_mask);
1669 * @cdns: Cadence instance
1671 bool sdw_cdns_is_clock_stop(struct sdw_cdns *cdns)
1673 return !!(cdns_readl(cdns, CDNS_MCP_STAT) & CDNS_MCP_STAT_CLK_STOP);
1680 * @cdns: Cadence instance
1683 int sdw_cdns_clock_stop(struct sdw_cdns *cdns, bool block_wake)
1689 sdw_cdns_check_self_clearing_bits(cdns, __func__, false, 0);
1692 if (sdw_cdns_is_clock_stop(cdns)) {
1693 dev_dbg(cdns->dev, "Clock is already stopped\n");
1702 cdns_enable_slave_interrupts(cdns, false);
1710 cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL,
1714 list_for_each_entry(slave, &cdns->bus.slaves, node) {
1723 ret = cdns_config_update(cdns);
1725 dev_err(cdns->dev, "%s: config_update failed\n", __func__);
1731 ret = sdw_bus_prep_clk_stop(&cdns->bus);
1733 dev_err(cdns->dev, "prepare clock stop failed %d\n", ret);
1742 ret = sdw_bus_clk_stop(&cdns->bus);
1744 dev_err(cdns->dev, "bus clock stop failed %d\n", ret);
1748 ret = cdns_set_wait(cdns, CDNS_MCP_STAT,
1752 dev_err(cdns->dev, "Clock stop failed %d\n", ret);
1761 * @cdns: Cadence instance
1765 int sdw_cdns_clock_restart(struct sdw_cdns *cdns, bool bus_reset)
1770 cdns_enable_slave_interrupts(cdns, true);
1772 ret = cdns_clear_bit(cdns, CDNS_MCP_CONTROL,
1775 dev_err(cdns->dev, "Couldn't exit from clock stop\n");
1779 ret = cdns_set_wait(cdns, CDNS_MCP_STAT, CDNS_MCP_STAT_CLK_STOP, 0);
1781 dev_err(cdns->dev, "clock stop exit failed %d\n", ret);
1785 cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL,
1788 cdns_ip_updatel(cdns, CDNS_IP_MCP_CONTROL, CDNS_IP_MCP_CONTROL_CMD_ACCEPT,
1794 cdns_ip_updatel(cdns, CDNS_IP_MCP_CONFIG,
1798 ret = cdns_config_update(cdns);
1800 dev_err(cdns->dev, "%s: config_update failed\n", __func__);
1804 ret = sdw_bus_exit_clk_stop(&cdns->bus);
1806 dev_err(cdns->dev, "bus failed to exit clock stop %d\n", ret);
1815 * @cdns: Cadence instance
1817 int sdw_cdns_probe(struct sdw_cdns *cdns)
1819 init_completion(&cdns->tx_complete);
1820 cdns->bus.port_ops = &cdns_port_ops;
1822 mutex_init(&cdns->status_update_lock);
1824 INIT_WORK(&cdns->work, cdns_update_slave_status_work);
1825 INIT_DELAYED_WORK(&cdns->attach_dwork, cdns_check_attached_status_dwork);
1834 struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
1837 dai_runtime = cdns->dai_runtime_array[dai->id];
1855 dai_runtime->bus = &cdns->bus;
1856 dai_runtime->link_id = cdns->instance;
1861 cdns->dai_runtime_array[dai->id] = dai_runtime;
1873 cdns->dai_runtime_array[dai->id] = NULL;
1882 * @cdns: Cadence instance
1890 static struct sdw_cdns_pdi *cdns_find_pdi(struct sdw_cdns *cdns,
1907 * @cdns: Cadence instance
1912 void sdw_cdns_config_stream(struct sdw_cdns *cdns,
1920 if (cdns->bus.params.m_data_mode != SDW_PORT_DATA_MODE_NORMAL)
1926 cdns_updatel(cdns, offset,
1938 cdns_writel(cdns, CDNS_PDI_CONFIG(pdi->num), val);
1945 * @cdns: Cadence instance
1951 struct sdw_cdns_pdi *sdw_cdns_alloc_pdi(struct sdw_cdns *cdns,
1958 pdi = cdns_find_pdi(cdns, stream->num_in, stream->in,
1961 pdi = cdns_find_pdi(cdns, stream->num_out, stream->out,
1966 pdi = cdns_find_pdi(cdns, stream->num_bd, stream->bd,