|
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; |
@@ -1594,6 +1597,17 @@ static int sof_ipc3_widget_setup_comp_dai(struct snd_sof_widget *swidget) |
1594 | 1597 | if (ret < 0) |
1595 | 1598 | goto free; |
1596 | 1599 |
|
| 1600 | + /* Subtract the base to match the FW dai index. */ |
| 1601 | + if (comp_dai->type == SOF_DAI_INTEL_ALH) { |
| 1602 | + if (comp_dai->dai_index < INTEL_ALH_DAI_INDEX_BASE) { |
| 1603 | + dev_err(sdev->dev, |
| 1604 | + "Invalid ALH dai index %d, only Pin numbers >= %d can be used\n", |
| 1605 | + comp_dai->dai_index, INTEL_ALH_DAI_INDEX_BASE); |
| 1606 | + return -EINVAL; |
| 1607 | + } |
| 1608 | + comp_dai->dai_index -= INTEL_ALH_DAI_INDEX_BASE; |
| 1609 | + } |
| 1610 | + |
1597 | 1611 | dev_dbg(scomp->dev, "dai %s: type %d index %d\n", |
1598 | 1612 | swidget->widget->name, comp_dai->type, comp_dai->dai_index); |
1599 | 1613 | sof_dbg_comp_config(scomp, &comp_dai->config); |
@@ -2167,8 +2181,16 @@ static int sof_ipc3_dai_config(struct snd_sof_dev *sdev, struct snd_sof_widget * |
2167 | 2181 | case SOF_DAI_INTEL_ALH: |
2168 | 2182 | if (data) { |
2169 | 2183 | /* save the dai_index during hw_params and reuse it for hw_free */ |
2170 | | - if (flags & SOF_DAI_CONFIG_FLAGS_HW_PARAMS) |
2171 | | - config->dai_index = data->dai_index; |
| 2184 | + if (flags & SOF_DAI_CONFIG_FLAGS_HW_PARAMS) { |
| 2185 | + /* Subtract the base to match the FW dai index. */ |
| 2186 | + if (data->dai_index < INTEL_ALH_DAI_INDEX_BASE) { |
| 2187 | + dev_err(sdev->dev, |
| 2188 | + "Invalid ALH dai index %d, only Pin numbers >= %d can be used\n", |
| 2189 | + config->dai_index, INTEL_ALH_DAI_INDEX_BASE); |
| 2190 | + return -EINVAL; |
| 2191 | + } |
| 2192 | + config->dai_index = data->dai_index - INTEL_ALH_DAI_INDEX_BASE; |
| 2193 | + } |
2172 | 2194 | config->alh.stream_id = data->dai_data; |
2173 | 2195 | } |
2174 | 2196 | break; |
|
0 commit comments