|
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