ASoC: Intel: add I2S function topology support#5657
ASoC: Intel: add I2S function topology support#5657bardliao wants to merge 6 commits intothesofproject:topic/sof-devfrom
Conversation
ujfalusi
left a comment
There was a problem hiding this comment.
only checked the first patch
| } | ||
|
|
||
| dev_err(dev, "%s: No match for SSP%d in NHLT table\n", __func__, | ||
| dev_dbg(dev, "%s: No match for SSP%d in NHLT table\n", __func__, |
There was a problem hiding this comment.
I would have this as separate patch?
we are also going to look for DMIC blobs in several nhlt, so change those prints as well?
There was a problem hiding this comment.
Not sure about the DMIC blobs. Maybe we can change the DMIC prints when we look for DMIC blobs in several nhlt?
There was a problem hiding this comment.
but we do after the second patch...
There could be NHLT blobs w/o DMIC (SSP fragment) and we would print error/warn?
There was a problem hiding this comment.
intel_nhlt_get_endpoint_blob() will be called for each NHLT blobs, but it uses dev_dbg already.
There was a problem hiding this comment.
you need to call out that in preparation for supporting multiple topology fragments per function which could end up calling this function multiple types with NHLT blobs from different fragments, downgrade the error message to debug level.
There was a problem hiding this comment.
Commit message updated. But do you mean to move the commit to before the ASoC: SOF: get nhlt from all topologies commit?
sound/soc/sof/ipc4-topology.c
Outdated
| channel_count, sample_rate, | ||
| dir, dev_type); | ||
| if (cfg) | ||
| break; |
There was a problem hiding this comment.
goto out; and remove the cfg check after the loop?
a0fd522 to
8d4c0c3
Compare
| } | ||
|
|
||
| dev_err(dev, "%s: No match for SSP%d in NHLT table\n", __func__, | ||
| dev_dbg(dev, "%s: No match for SSP%d in NHLT table\n", __func__, |
There was a problem hiding this comment.
but we do after the second patch...
There could be NHLT blobs w/o DMIC (SSP fragment) and we would print error/warn?
sound/soc/sof/ipc4-topology.c
Outdated
| dai_index); | ||
| if (dev_type < 0) | ||
| list_for_each_entry(nhlt, &ipc4_data->nhlt_list, list) { | ||
| dev_type = intel_nhlt_ssp_device_type(sdev->dev, nhlt->nhlt, |
There was a problem hiding this comment.
nitpick: nhlt->nhlt, can we do entry->nhlt instead? the outer nhlt is not nhlt as such.
| EXPORT_SYMBOL_GPL(sof_sdw_get_tplg_files); | ||
|
|
||
| int sof_i2s_get_tplg_files(struct snd_soc_card *card, const struct snd_soc_acpi_mach *mach, | ||
| const char *prefix, const char ***tplg_files, bool best_effort) |
There was a problem hiding this comment.
do you plan to support the best_effort with SSP machines?
| if (!(*tplg_files)[tplg_num]) | ||
| return -ENOMEM; | ||
| tplg_num++; | ||
| } |
There was a problem hiding this comment.
To my untrained eyes this looks like identical to what sof_sdw_get_tplg_files() would do, just that this lacks the SDW part, no?
Why not rename that function ad use it for all types as universal tool?
There was a problem hiding this comment.
Yeah, I thought about it. And yes, they look quite similar, but the existing topologies may use different PCM IDs for different machines. I think it would be better to use separated function to keep the flexibility to have different function topology names for different machines.
8d4c0c3 to
1af3d92
Compare
|
Tested HDMI in capture and I2S functional. observed the expected behavior. |
| } | ||
|
|
||
| dev_err(dev, "%s: No match for SSP%d in NHLT table\n", __func__, | ||
| dev_dbg(dev, "%s: No match for SSP%d in NHLT table\n", __func__, |
There was a problem hiding this comment.
you need to call out that in preparation for supporting multiple topology fragments per function which could end up calling this function multiple types with NHLT blobs from different fragments, downgrade the error message to debug level.
The existing code assumes there is only one NHLT blob either from BIOS or topology. As function topologies are used and each function topology contains a NHLT blob section, we need to search the matching NHLT blob from all the NHLT blobs. The commit suggests adding a list of NHLTs and search the NHLTs from the list. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
To support multiple topology fragments per function, this function could be called multiple types with different NHLT blobs from different fragments. Downgrade the error message to debug level since the SSP device type could be found from one of the nhlt. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
1af3d92 to
9fdc58f
Compare
lgirdwood
left a comment
There was a problem hiding this comment.
LGTM, one nitpick would be it could do with more inline commentary when it comes to how we are searching for files.
The existing code supports get_function_tplg_files callback for SoundWire machine driver only. Some common sections can be used to extend the support to other machines. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
…et_tplg_files The Intel SOF SDW machine drive also supports I2S interface. Add related supports for the sof_sdw_get_tplg_files() callback. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
… I2S machines Add sof_i2s_get_tplg_files() callback for Intel SOF I2S machines. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Use sof_i2s_get_tplg_files() for SOF es83x6 machines. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
9fdc58f to
fd2f6cc
Compare
Currently, function topology is only used by the SoundWire machines. Extend the support to the I2S machines.