1. 19 3月, 2016 1 次提交
  2. 18 3月, 2016 1 次提交
    • T
      ALSA: hda - Really restrict i915 notifier to HSW+ · 691be973
      Takashi Iwai 提交于
      The commit [b62232d4: ALSA: hda - Limit i915 HDMI binding only for
      HSW and later] tried to limit the usage of i915 audio notifier to the
      recent Intel models and switch to the old method on pre-Haswell
      models.  However, it assumed that the i915 component binding hasn't
      been done on such models, and the assumption was wrong: namely,
      Baytrail had already the i915 component binding due to powerwell
      control.  Thus, the workaround wasn't applied to Baytrail.
      
      For fixing this properly, this patch introduces a new flag indicating
      the usage of audio notifier and codec_has_acomp() refers to this flag
      instead of checking the existence of audio component.
      Reported-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Cc: <stable@vger.kernel.org> # v4.5
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      691be973
  3. 17 3月, 2016 1 次提交
    • T
      ALSA: hda - Fix mutex deadlock at HDMI/DP hotplug · 222bde03
      Takashi Iwai 提交于
      The recent change in HD-audio HDMI/DP codec driver for allowing the
      dynamic PCM binding introduced a new spec->pcm_mutex.  One of the
      protected area by this mutex is hdmi_present_sense().  As reported by
      Intel CI tests, unfortunately, the new mutex causes a deadlock when
      the hotplug/unplug is triggered during the codec is in runtime
      suspend.  The buggy code path is like the following:
      
        hdmi_unsol_event() -> ...
          -> hdmi_present_sense()
      ==>     ** here taking pcm_mutex
            -> hdmi_present_sense_via_verbs()
              -> snd_hda_power_up_pm() -> ... (runtime resume calls)
                -> generic_hdmi_resume()
                  -> hdmi_present_sense()
      ==>           ** here taking pcm_mutex again!
      
      As we can see here, the problem is that the mutex is taken before
      snd_hda_power_up_pm() call that triggers the runtime resume.  That is,
      the obvious solution is to move the power up/down call outside the
      mutex; it is exactly what this patch provides.
      
      The patch also clarifies why this bug wasn't caught beforehand.  We
      used to have the i915 audio component for hotplug for all Intel chips,
      and in that code path, there is no power up required but the
      information is taken directly from the graphics side.  However, we
      recently switched back to the old method for some old Intel chips due
      to regressions, and now the deadlock issue is surfaced.
      
      Fixes: a76056f2 ('ALSA: hda - hdmi dynamically bind PCM to pin when monitor hotplug')
      Reported-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Tested-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      222bde03
  4. 16 3月, 2016 1 次提交
  5. 14 3月, 2016 2 次提交
  6. 10 3月, 2016 1 次提交
    • T
      ALSA: hda - Don't handle ELD notify from invalid port · 4f8e4f35
      Takashi Iwai 提交于
      The current Intel HDMI codec driver supports only three fixed ports
      from port B to port D.  However, i915 driver may assign a DP on other
      ports, e.g. port A, when no eDP is used.  This incompatibility is
      caught later at pin_nid_to_pin_index() and results in a warning
      message like "HDMI: pin nid 4 not registered" at each time.
      
      This patch filters out such invalid events beforehand, so that the
      kernel won't be too grumbling.
      Reported-by: NStefan Assmann <sassmann@kpanic.de>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      4f8e4f35
  7. 07 3月, 2016 7 次提交
  8. 04 3月, 2016 2 次提交
  9. 01 3月, 2016 1 次提交
  10. 23 2月, 2016 1 次提交
  11. 19 2月, 2016 1 次提交
  12. 09 2月, 2016 1 次提交
    • T
      ALSA: hda - Fix bad dereference of jack object · 2ebab40e
      Takashi Iwai 提交于
      The hda_jack_tbl entries are managed by snd_array for allowing
      multiple jacks.  It's good per se, but the problem is that struct
      hda_jack_callback keeps the hda_jack_tbl pointer.  Since snd_array
      doesn't preserve each pointer at resizing the array, we can't keep the
      original pointer but have to deduce the pointer at each time via
      snd_array_entry() instead.  Actually, this resulted in the deference
      to the wrong pointer on codecs that have many pins such as CS4208.
      
      This patch replaces the pointer to the NID value as the search key.
      As an unexpected good side effect, this even simplifies the code, as
      only NID is needed in most cases.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      2ebab40e
  13. 05 2月, 2016 1 次提交
  14. 03 2月, 2016 1 次提交
  15. 29 1月, 2016 9 次提交
  16. 14 1月, 2016 1 次提交
  17. 10 12月, 2015 5 次提交
    • T
      ALSA: hda - Move audio component accesses to hdac_i915.c · e2dc7d7d
      Takashi Iwai 提交于
      A couple of i915_audio_component ops have been added and accessed
      directly from patch_hdmi.c.  Ideally all these should be factored out
      into hdac_i915.c.
      
      This patch does it, adds two new helper functions for setting N/CTS
      and fetching ELD bytes.  One bonus is that the hackish widget vs port
      mapping is also moved to hdac_i915.c, so that it can be fixed /
      enhanced more cleanly.
      Reviewed-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      e2dc7d7d
    • T
      ALSA: hda - Use component ops for i915 HDMI/DP audio jack handling · 788d441a
      Takashi Iwai 提交于
      Since we have a new audio component ops to fetch the current ELD and
      state now, we can reduce the usage of unsol event of HDMI/DP pins.
      The unsol event isn't only unreliable, but it also needs the power
      up/down of the codec and link at each time, which is a significant
      power and time loss.
      
      In this patch, the jack creation and unsol/jack event handling are
      modified to use the audio component for the dedicated Intel chips.
      
      The jack handling got slightly more codes than a simple usage of
      hda_jack layer since we need to deal directly with snd_jack object;
      the hda_jack layer is basically designed for the pin sense read and
      unsol events, both of which aren't used any longer in our case.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      788d441a
    • T
      ALSA: hda - Fix superfluous HDMI jack repoll · 9a5e5234
      Takashi Iwai 提交于
      The recent commit [e90247f9: ALSA: hda - Split ELD update code
      from hdmi_present_sense()] rewrote the HDMI jack handling code, but a
      slight behavior change sneaked in unexpectedly.  When the jack isn't
      connected, it tries repoll unnecessarily.
      
      This patch addresses the flaw, to the right behavior as before.
      
      Fixes: e90247f9 ('ALSA: hda - Split ELD update code from hdmi_present_sense()')
      Reported-and-tested-by: NDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      9a5e5234
    • T
      ALSA: hda - Allow i915 binding later in codec driver · 55913110
      Takashi Iwai 提交于
      Due to the recent change, HDA controller driver for Intel PCH tries to
      bind i915 audio component always at the probe time no matter whether
      HDMI/DP codec is found.  This is, however, superflulous for old
      chipsets (e.g. on IVB) where they don't have always the HDMI/DP codecs
      but  often have only a discrete GPU instead.
      
      For the newer chipsets, we need already the i915 binding from the
      beginning due to power well control.  Meanwhile, for older chipsets
      where we don't need power well, we don't need the i915 binding at the
      controller level.
      
      This patch removes again the i915 binding in the HDA controller driver
      for old Intel PCHs, but adds the binding in HDMI/DP codec driver
      instead.  This allows still the use of the direct notification from
      the graphics driver while we can avoid the unnecessary load of i915
      driver for machines only with another GPU.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      55913110
    • T
      ALSA: hda - Optimize audio component check in patch_hdmi.c · f4e3040b
      Takashi Iwai 提交于
      The audio component is enabled only when CONFIG_SND_HDA_I915 is set.
      Give a dummy macro for allowing the compiler optimize out the relevant
      codes when this Kconfig isn't set.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      f4e3040b
  18. 04 12月, 2015 3 次提交
    • T
      ALSA: hda - Enable audio component for old Intel PCH devices · 6603249d
      Takashi Iwai 提交于
      As i915 graphics driver provides the notification via audio component,
      not only the currently implemented HSW+ and VLV+ platforms but also
      all other PCH-based platforms (e.g. Cougar Point, Panther  Point, etc)
      can use this infrastructure.  It'll improve the reliability and the
      power consumption significantly, especially once when we implement the
      ELD notification via component.  As a preliminary, this patch enables
      the usage of audio component for all PCH platforms.
      
      The HDA controller just needs to set AZX_DCAPS_I915_POWERWELL flag
      appropriately.  The name of the flag is a bit confusing, but this
      actually works even on the chips without the powerwell but accesses
      only the other component ops.
      
      In the HDMI/DP codec driver side, we just need to register/unregister
      the notifier for such chips.  This can be identified by checking the
      audio_component field in the assigned hdac_bus.
      
      One caveat is that PCH for Haswell and Broadwell must not be bound
      with i915 audio component, as there are dedicated HD-audio HDMI
      controllers on these platforms.  Ditto for Poulsbo and Oaktrail as
      they use gma500 graphics, not i915.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      6603249d
    • T
      ALSA: hda - Split ELD update code from hdmi_present_sense() · e90247f9
      Takashi Iwai 提交于
      This is a preliminary patch for the later change to support ELD/jack
      handling with i915 audio component.  This splits the ELD update code
      from hdmi_present_sense() so that it can be called from other places.
      
      Just a code refactoring, no functional change.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      e90247f9
    • T
      ALSA: hda - Do zero-clear in snd_hdmi_parse_eld() itself · 18014fd7
      Takashi Iwai 提交于
      Instead of doing in each caller side, snd_hdmi_parse_eld() does
      zero-clear of the parsed data by itself.  This is safer and simplifies
      the upcoming code changes.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      18014fd7