• Pierre-Louis Bossart's avatar
    ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire · e8444560
    Pierre-Louis Bossart authored
    The HDAudio ASoC support relies on the set_tdm_slots() helper to store
    the HDaudio stream tag in the tx_mask. This only works because of the
    pre-existing order in soc-pcm.c, where the hw_params() is handled for
    codec_dais *before* cpu_dais. When the order is reversed, the
    stream_tag is used as a mask in the codec fixup functions:
    
    	/* fixup params based on TDM slot masks */
    	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK &&
    	    codec_dai->tx_mask)
    		soc_pcm_codec_params_fixup(&codec_params,
    					   codec_dai->tx_mask);
    
    As a result of this confusion, the codec_params_fixup() ends-up
    generating bad channel masks, depending on what stream_tag was
    allocated.
    
    We could add a flag to state that the tx_mask is really not a mask,
    but it would be quite ugly to persist in overloading concepts.
    
    Instead, this patch suggests a more generic get/set 'stream' API based
    on the existing model for SoundWire. We can expand the concept to
    store 'stream' opaq...
    e8444560
max98373-sdw.c 25.7 KB