1. 19 May, 2014 2 commits
  2. 14 May, 2014 1 commit
  3. 13 May, 2014 1 commit
  4. 07 May, 2014 1 commit
  5. 05 May, 2014 3 commits
    • Anssi Hannula's avatar
      ALSA: hda - hdmi: Set infoframe and channel mapping even without sink · 561a7d6e
      Anssi Hannula authored
      Currently infoframe contents and channel mapping are only set when a
      sink (monitor) is present.
      
      However, this does not make much sense, since
      1) We can make a very reasonable guess on CA after 18e39186 ("ALSA:
         hda - hdmi: Fallback to ALSA allocation when selecting CA") or by
         relying on a previously valid ELD (or we may be using a
         user-specified channel map).
      2) Not setting infoframe contents and channel count simply means they
         are left at a possibly incorrect state - playback is still allowed
         to proceed (with missing or wrongly mapped channels).
      
      Reasons for monitor_present being 0 include disconnected cable, video
      driver issues, or codec not being spec-compliant. Note that in
      actual disconnected-cable case it should not matter if these settings
      are wrong as they will be re-set after jack detection, though.
      
      Change the behavior to allow the infoframe contents and the channel
      mapping to be set even without a sink/monitor, either based on the
      previous valid ELD contents, if any, or based on sensible defaults
      (standard channel layouts or provided custom map, sink type HDMI).
      Signed-off-by: default avatarAnssi Hannula <anssi.hannula@iki.fi>
      Tested-by: default avatarStephan Raue <stephan@openelec.tv>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      561a7d6e
    • Takashi Iwai's avatar
      Merge branch 'for-linus' into for-next · 59991da4
      Takashi Iwai authored
      ... for applying the further HDMI fixes.
      59991da4
    • Anssi Hannula's avatar
      ALSA: hda - hdmi: Set converter channel count even without sink · f06ab794
      Anssi Hannula authored
      Since commit 1df5a06a ("ALSA: hda - hdmi: Fix programmed active channel
      count") channel count is no longer being set if monitor_present is 0.
      This is because setting the count was moved after the CA value is
      determined, which is only after the monitor_present check in
      hdmi_setup_audio_infoframe().
      
      Unfortunately, in some cases, such as with a non-spec-compliant codec or
      with a problematic video driver, monitor_present is always 0. As a
      specific example, this seems to happen with gen1 ATV (SiI1390 codec),
      causing left-channel-only stereo playback (multi-channel playback has
      apparently never worked with this codec despite it reporting 8 channels,
      reason unknown).
      
      Simply setting converter channel count without setting the pin infoframe
      and channel mapping as well does not theoretically make much sense as
      this will just mean they are out-of-sync and multichannel playback will
      have a wrong channel mapping.
      
      However, adding back just setting the converter channel count even in
      no-monitor case is the safest change which at least fixes the stereo
      playback regression on SiI1390 codec. Do that.
      Signed-off-by: default avatarAnssi Hannula <anssi.hannula@iki.fi>
      Reported-by: default avatarStephan Raue <stephan@openelec.tv>
      Tested-by: default avatarStephan Raue <stephan@openelec.tv>
      Cc: <stable@vger.kernel.org> # 3.12+
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      f06ab794
  6. 02 May, 2014 4 commits
  7. 30 Apr, 2014 1 commit
  8. 29 Apr, 2014 3 commits
  9. 28 Apr, 2014 6 commits
  10. 22 Apr, 2014 5 commits
  11. 21 Apr, 2014 1 commit
    • Jarkko Nikula's avatar
      ASoC: dapm: Fix widget double free with auto-disable DAPM kcontrol · 2697e4fb
      Jarkko Nikula authored
      Commit 9e1fda4ae158 ("ASoC: dapm: Implement mixer input auto-disable")
      is trying to free the widget it allocated by snd_soc_dapm_new_control()
      call in dapm_kcontrol_data_alloc() by adding kfree(data->widget) to
      dapm_kcontrol_free().
      
      This is causing a widget double free with auto-disabled DAPM kcontrols
      in sound card unregistration because widgets are already freed before
      dapm_kcontrol_free() is called.
      
      Reason for that is all widgets are added into dapm->card->widgets list
      in snd_soc_dapm_new_control() and freed in dapm_free_widgets() during
      execution of snd_soc_dapm_free().
      
      Now snd_soc_dapm_free() calls for different DAPM contexts happens before
      snd_card_free() call from where the call chain to dapm_kcontrol_free()
      begins:
      
      soc_cleanup_card_resources()
        soc_remove_dai_links()
          soc_remove_link_dais()
            snd_soc_dapm_free(&cpu_dai->dapm)
          soc_remove_link_components()
            soc_remove_platform()
              snd_soc_dapm_free(&platform->dapm)
            soc_remove_codec()
              snd_soc_dapm_free(&codec->dapm)
        snd_soc_dapm_free(&card->dapm)
        snd_card_free()
          snd_card_do_free()
            snd_device_free_all()
              snd_device_free()
                snd_ctl_dev_free()
                  snd_ctl_remove()
                    snd_ctl_free_one()
                      dapm_kcontrol_free()
      
      This wasn't making harm with ordinary DAPM kcontrols since data->widget is NULL for
      them.
      
      Fixes: 9e1fda4ae158 (ASoC: dapm: Implement mixer input auto-disable)
      Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
      Acked-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      Cc: stable@vger.kernel.org
      2697e4fb
  12. 20 Apr, 2014 5 commits
  13. 19 Apr, 2014 7 commits