1. 11 Mar, 2019 3 commits
    • Rander Wang's avatar
      ASoC:hdac_hda:use correct format to setup hda codec · 03d0aa4d
      Rander Wang authored
      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: default avatarRander Wang <rander.wang@linux.intel.com>
      Acked-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      03d0aa4d
    • Rander Wang's avatar
      ASoC:soc-pcm:fix a codec fixup issue in TDM case · 570f18b6
      Rander Wang authored
      On HDaudio platforms, if playback is started when capture is working,
      there is no audible output.
      
      This can be root-caused to the use of the rx|tx_mask to store an HDaudio
      stream tag.
      
      If capture is stared before playback, rx_mask would be non-zero on HDaudio
      platform, then the channel number of playback, which is in the same codec
      dai with the capture, would be changed by soc_pcm_codec_params_fixup based
      on the tx_mask at first, then overwritten by this function based on rx_mask
      at last.
      
      According to the author of tx|rx_mask, tx_mask is for playback and rx_mask
      is for capture. And stream direction is checked at all other references of
      tx|rx_mask in ASoC, so here should be an error. This patch checks stream
      direction for tx|rx_mask for fixup function.
      
      This issue would affect not only HDaudio+ASoC, but also I2S codecs if the
      channel number based on rx_mask is not equal to the one for tx_mask. It could
      be rarely reproduecd because most drivers in kernel set the same channel number
      to tx|rx_mask or rx_mask is zero.
      
      Tested on all platforms using stream_tag & HDaudio and intel I2S platforms.
      Signed-off-by: default avatarRander Wang <rander.wang@linux.intel.com>
      Acked-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      570f18b6
    • Sylwester Nawrocki's avatar
      ASoC: samsung: i2s: Fix DAPM routes for capture stream · 42e4cedd
      Sylwester Nawrocki authored
      This patch sets missing stream_name of capture part of the DAI driver
      so we can define DAPM routing properly also for the capture stream.
      
      While at it "Playback" suffix is added to the playback stream names
      to clearly identify playback/capture.
      
      Together with related dts patch this fixes NULL pointer dereference
      when opening ALSA device for recording on Odroid XU3.
      
      Fixes: 64aba9bc ("ASoC: samsung: i2s: Add widgets and routes for DPCM support")
      Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      42e4cedd
  2. 04 Mar, 2019 3 commits
  3. 03 Mar, 2019 7 commits
  4. 28 Feb, 2019 2 commits
  5. 26 Feb, 2019 11 commits
  6. 22 Feb, 2019 6 commits
  7. 21 Feb, 2019 1 commit
  8. 20 Feb, 2019 7 commits