• Guenter Roeck's avatar
    ASoC: topology: Improve backwards compatibility with v4 topology files · ac9391da
    Guenter Roeck authored
    Commit dc31e741 ("ASoC: topology: ABI - Add the types for BE
    DAI") introduced sound topology files version 5. Initially, this
    change made the topology code incompatible with v4 topology files.
    Backwards compatibility with v4 configuration files was
    subsequently added with commit 288b8da7 ("ASoC: topology:
    Support topology file of ABI v4").
    
    Unfortunately, backwards compatibility was never fully implemented.
    
    First, the manifest size in (Skylake) v4 configuration files is set
    to 0, which causes manifest_new_ver() to bail out with error messages
    similar to the following.
    
    snd_soc_skl 0000:00:1f.3: ASoC: invalid manifest size
    snd_soc_skl 0000:00:1f.3: tplg component load failed-22
    snd_soc_skl 0000:00:1f.3: Failed to init topology!
    snd_soc_skl 0000:00:1f.3: ASoC: failed to probe component -22
    skl_n88l25_m98357a skl_n88l25_m98357a: ASoC: failed to instantiate card -22
    skl_n88l25_m98357a: probe of skl_n88l25_m98357a failed with error -22
    
    After this problem is fixed, the following error message is seen instead.
    
    snd_soc_skl 0000:00:1f.3: ASoC: old version of manifest
    snd_soc_skl 0000:00:1f.3: Invalid descriptor token 1093938482
    snd_soc_skl 0000:00:1f.3: ASoC: failed to load widget media0_in cpr 0
    snd_soc_skl 0000:00:1f.3: tPlg component load failed-22
    
    This message is seen because backwards compatibility for loading widgets
    was never implemented.
    
    The lack of audio support when running the upstream kernel on recent
    Chromebooks has been reported in various forums, and can be traced back
    to this problem. Attempts to fix the problem, usually by providing v5
    configuration files, were only partially successful.
    
    Let's implement backward compatibility properly to solve the problem
    for good.
    Signed-off-by: default avatarGuenter Roeck <groeck@chromium.org>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    ac9391da
soc-topology.c 69.6 KB