|
20 | 20 | /* size of tplg ABI in bytes */
|
21 | 21 | #define SOF_IPC3_TPLG_ABI_SIZE 3
|
22 | 22 |
|
| 23 | +/* Base of SOF_DAI_INTEL_ALH, this should be aligned with SOC_SDW_INTEL_BIDIR_PDI_BASE */ |
| 24 | +#define INTEL_ALH_DAI_INDEX_BASE 2 |
| 25 | + |
23 | 26 | struct sof_widget_data {
|
24 | 27 | int ctrl_type;
|
25 | 28 | int ipc_cmd;
|
@@ -1557,6 +1560,17 @@ static int sof_ipc3_widget_setup_comp_dai(struct snd_sof_widget *swidget)
|
1557 | 1560 | if (ret < 0)
|
1558 | 1561 | goto free;
|
1559 | 1562 |
|
| 1563 | + /* Subtract the base to match the FW dai index. */ |
| 1564 | + if (comp_dai->type == SOF_DAI_INTEL_ALH) { |
| 1565 | + if (comp_dai->dai_index < INTEL_ALH_DAI_INDEX_BASE) { |
| 1566 | + dev_err(sdev->dev, |
| 1567 | + "Invalid ALH dai index %d, only Pin numbers >= %d can be used\n", |
| 1568 | + comp_dai->dai_index, INTEL_ALH_DAI_INDEX_BASE); |
| 1569 | + return -EINVAL; |
| 1570 | + } |
| 1571 | + comp_dai->dai_index -= INTEL_ALH_DAI_INDEX_BASE; |
| 1572 | + } |
| 1573 | + |
1560 | 1574 | dev_dbg(scomp->dev, "dai %s: type %d index %d\n",
|
1561 | 1575 | swidget->widget->name, comp_dai->type, comp_dai->dai_index);
|
1562 | 1576 | sof_dbg_comp_config(scomp, &comp_dai->config);
|
@@ -2127,8 +2141,16 @@ static int sof_ipc3_dai_config(struct snd_sof_dev *sdev, struct snd_sof_widget *
|
2127 | 2141 | case SOF_DAI_INTEL_ALH:
|
2128 | 2142 | if (data) {
|
2129 | 2143 | /* save the dai_index during hw_params and reuse it for hw_free */
|
2130 |
| - if (flags & SOF_DAI_CONFIG_FLAGS_HW_PARAMS) |
2131 |
| - config->dai_index = data->dai_index; |
| 2144 | + if (flags & SOF_DAI_CONFIG_FLAGS_HW_PARAMS) { |
| 2145 | + /* Subtract the base to match the FW dai index. */ |
| 2146 | + if (data->dai_index < INTEL_ALH_DAI_INDEX_BASE) { |
| 2147 | + dev_err(sdev->dev, |
| 2148 | + "Invalid ALH dai index %d, only Pin numbers >= %d can be used\n", |
| 2149 | + config->dai_index, INTEL_ALH_DAI_INDEX_BASE); |
| 2150 | + return -EINVAL; |
| 2151 | + } |
| 2152 | + config->dai_index = data->dai_index - INTEL_ALH_DAI_INDEX_BASE; |
| 2153 | + } |
2132 | 2154 | config->alh.stream_id = data->dai_data;
|
2133 | 2155 | }
|
2134 | 2156 | break;
|
|
0 commit comments