]> git.baikalelectronics.ru Git - kernel.git/commit
ASoC:hdac_hda:use correct format to setup hda codec
authorRander Wang <rander.wang@linux.intel.com>
Fri, 8 Mar 2019 08:38:58 +0000 (16:38 +0800)
committerMark Brown <broonie@kernel.org>
Mon, 11 Mar 2019 16:58:40 +0000 (16:58 +0000)
commit03d0aa4d4fddce4a5d865d819a4d98bfc3d451e6
tree595af41c458161133be9be09c958909564349aae
parent570f18b6a8d1f0e60e8caf30e66161b6438dcc91
ASoC:hdac_hda:use correct format to setup hda codec

The current implementation of the hdac_hda codec results in zero-valued
samples on capture and noise with headset playback when SOF is used on
platforms with an on-board HDaudio codec. This is root-caused to SOF
using be_hw_params_fixup, and the prepare() call using invalid runtime
fields to determine the format.

This patch moves the format handling to the hw_params() callback, as
done already for hdac_hdmi, to make sure the fixed-up information is
taken into account but keeps the codec initialization in prepare() as
the stream_tag is only available at that time. Moving everything in the
prepare() callback is possible but the code is less elegant so this
two-step solution was chosen.

The solution was tested with the SST driver with no regressions, and all
the issues with SOF playback and capture are solved.

Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/hdac_hda.c
sound/soc/codecs/hdac_hda.h