1. 07 4月, 2017 1 次提交
  2. 03 4月, 2017 1 次提交
    • T
      ALSA: hda - Avoid tricky macros · 2c1f8138
      Takashi Iwai 提交于
      The macros _snd_hdac_chip_read() and *_write() expand to different
      types (b,w,l) per their argument.  They were thought to be used only
      internally for other snd_hdac_chip_*() macros, but in some situations
      we need to call these directly, and they are way too ugly.
      
      Instead of saving a few lines, we just write these macros explicitly
      with the types, so that they can be used in a saner way.
      Acked-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      2c1f8138
  3. 29 3月, 2017 1 次提交
  4. 07 1月, 2017 1 次提交
  5. 25 12月, 2016 1 次提交
  6. 23 9月, 2016 1 次提交
    • P
      drm/i915/dp: DP audio API changes for MST · f9318941
      Pandiyan, Dhinakaran 提交于
      DP MST provides the capability to send multiple video and audio streams
      through a single port. This requires the API's between i915 and audio
      drivers to distinguish between multiple audio capable displays that can be
      connected to a port. Currently only the port identity is shared in the
      APIs. This patch adds support for MST with an additional parameter
      'int pipe'. The existing parameter 'port' does not change it's meaning.
      
      pipe =
      	MST	: display pipe that the stream originates from
      	Non-MST	: -1
      
      Affected APIs:
      struct i915_audio_component_ops
      -       int (*sync_audio_rate)(struct device *, int port, int rate);
      +	int (*sync_audio_rate)(struct device *, int port, int pipe,
      +	     int rate);
      
      -       int (*get_eld)(struct device *, int port, bool *enabled,
      -                       unsigned char *buf, int max_bytes);
      +       int (*get_eld)(struct device *, int port, int pipe,
      +		       bool *enabled, unsigned char *buf, int max_bytes);
      
      struct i915_audio_component_audio_ops
      -       void (*pin_eld_notify)(void *audio_ptr, int port);
      +       void (*pin_eld_notify)(void *audio_ptr, int port, int pipe);
      
      This patch makes dummy changes in the audio drivers (thanks Libin) for
      build to succeed. The audio side drivers will send the right 'pipe' values
      for MST in patches that will follow.
      
      v2:
      Renamed the new API parameter from 'dev_id' to 'pipe'. (Jim, Ville)
      Included Asoc driver API compatibility changes from Jeeja.
      Added WARN_ON() for invalid pipe in get_saved_encoder(). (Takashi)
      Added comment for av_enc_map[] definition. (Takashi)
      
      v3:
      Fixed logic error introduced while renaming 'dev_id' as 'pipe' (Ville)
      Renamed get_saved_encoder() to get_saved_enc() to reduce line length
      
      v4:
      Rebased.
      Parameter check for pipe < -1 values in get_saved_enc() (Ville)
      Switched to for_each_pipe() in get_saved_enc() (Ville)
      Renamed 'pipe' to 'dev_id' in audio side code (Takashi)
      
      v5:
      Included a comment for the dev_id arg. (Libin)
      Signed-off-by: NDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Reviewed-by: NTakashi Iwai <tiwai@suse.de>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1474488168-2343-1-git-send-email-dhinakaran.pandiyan@intel.com
      f9318941
  7. 17 9月, 2016 1 次提交
  8. 09 8月, 2016 3 次提交
  9. 03 8月, 2016 1 次提交
  10. 17 6月, 2016 1 次提交
  11. 16 6月, 2016 1 次提交
  12. 13 5月, 2016 1 次提交
  13. 08 5月, 2016 2 次提交
  14. 29 4月, 2016 1 次提交
  15. 26 4月, 2016 1 次提交
    • T
      ALSA: hda - Update BCLK also at hotplug for i915 HSW/BDW · bb03ed21
      Takashi Iwai 提交于
      The recent bug report suggests that BCLK setup for i915 HSW/BDW needs
      to be updated at each HDMI hotplug, not only at initialization and
      resume.  That is, we need to update HSW_EM4 and HSW_EM5 registers at
      ELD notification, too.  Otherwise the HDMI audio may be out of sync
      and played in a wrong pitch.
      
      However, the HDA codec driver has no access to the controller
      registers, and currently the code managing these registers is in
      hda_intel.c, i.e. local to the controller driver.  For allowing the
      explicit BCLK update from the codec driver, as in this patch, the
      former haswell_set_bclk() in hda_intel.c is moved to hdac_i915.c and
      exposed as snd_hdac_i915_set_bclk().  This is called from both the HDA
      controller driver and intel_pin_eld_notify() in HDMI codec driver.
      
      Along with this change, snd_hdac_get_display_clk() gets dropped as
      it's no longer used.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91410
      Cc: <stable@vger.kernel.org> # v4.5+
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      bb03ed21
  16. 21 4月, 2016 1 次提交
    • T
      ALSA: hda - Fix possible race on regmap bypass flip · 3194ed49
      Takashi Iwai 提交于
      HD-audio driver uses regmap cache bypass feature for reading a raw
      value without the cache.  But this is racy since both the cached and
      the uncached reads may occur concurrently.  The former is done via the
      normal control API access while the latter comes from the proc file
      read.
      
      Even though the regmap itself has the protection against the
      concurrent accesses, the flag set/reset is done without the
      protection, so it may lead to inconsistent state of bypass flag that
      doesn't match with the current read and occasionally result in a
      kernel WARNING like:
        WARNING: CPU: 3 PID: 2731 at drivers/base/regmap/regcache.c:499 regcache_cache_only+0x78/0x93
      
      One way to work around such a problem is to wrap with a mutex.  But in
      this case, the solution is simpler: for the uncached read, we just
      skip the regmap and directly calls its accessor.  The verb execution
      there is protected by itself, so basically it's safe to call
      individually.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=116171Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      3194ed49
  17. 04 4月, 2016 2 次提交
    • S
      ALSA: hda - Update chmap tlv to report sink's capability · 44fde3b8
      Subhransu S. Prusty 提交于
      The existing TLV callback implementation copies all of the
      cea_channel_speaker_allocation map table to the TLV container
      irrespective of what is reported by sink. This is of little use
      to the userspace application.
      
      With this patch, it parses the spk_alloc block as queried from
      the ELD, and copies only the corresponding mapping channel
      allocation entries from the cea channel speaker allocation table.
      Thus the user can parse the TLV container to identify sink's
      capability and set the channel map accordingly.
      
      It shouldn't impact the behavior in AMD chipset, as this makes
      use of already parsed spk alloc block to calculate the channel
      map.
      Signed-off-by: NSubhransu S. Prusty <subhransu.s.prusty@intel.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      44fde3b8
    • T
      ALSA: hda - Bind with i915 only when Intel graphics is present · bfa5fb14
      Takashi Iwai 提交于
      On Skylake and onwards, the HD-audio controller driver needs to bind
      with i915 for having the control of power well audio domain before
      actually probing the codec.  This leads to the load of i915 driver
      from the audio driver side.  But, there are systems that have no Intel
      graphics but Nvidia or AMD GPU, although they still use HD-audio bus
      for the onboard audio codecs.  On these, loading the i915 driver is
      nothing but a useless memory and CPU consumption.
      
      A simple way to avoid it is just to look for the Intel graphics PCI
      entry beforehand, and try to bind with i915 only when such an entry is
      found.  Currently, it assumes the PCI display class.  If another class
      appears, this needs to be extended (although it's very unlikely).
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      bfa5fb14
  18. 30 3月, 2016 1 次提交
  19. 29 3月, 2016 1 次提交
  20. 28 3月, 2016 1 次提交
    • T
      ALSA: hda - Add the pin / port mapping on Intel ILK and VLV · d745f5e7
      Takashi Iwai 提交于
      Intel IronLake and ValleyView platforms have different HDMI widget pin
      and digital port mapping from other newer ones.  The recent ones
      (HSW+) have NID 0x05 to 0x07 for port B to port D, while these chips
      have NID 0x04 to 0x06.
      
      For adapting this mapping, pass the codec object instead of the bus
      object to snd_hdac_sync_audio_rate() and snd_hdac_acomp_get_eld() so
      that they can check the codec ID and calculate the mapping properly.
      
      The changes in the HDMI codec driver side will follow in the later
      patch.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      d745f5e7
  21. 16 3月, 2016 1 次提交
  22. 10 3月, 2016 1 次提交
  23. 08 3月, 2016 1 次提交
    • T
      ALSA: hda - Fix unexpected resume through regmap code path · fc4f000b
      Takashi Iwai 提交于
      HD-audio driver has a mechanism to trigger the runtime resume
      automatically at accessing the verbs.  This auto-resume, however,
      causes the mutex deadlock when invoked from the regmap handler since
      the regmap keeps the mutex while auto-resuming.  For avoiding that,
      there is some tricky check in the HDA regmap handler to return -EAGAIN
      error to back-off when the codec is powered down.  Then the caller of
      regmap r/w will retry after properly turning on the codec power.
      
      This works in most cases, but there seems a slight race between the
      codec power check and the actual on-demand auto-resume trigger.  This
      resulted in the lockdep splat, eventually leading to a real deadlock.
      
      This patch tries to address the race window by getting the runtime PM
      refcount at the check time using pm_runtime_get_if_in_use().  With
      this call, we can keep the power on only when the codec has been
      already turned on, and back off if not.
      
      For keeping the code consistency, the code touching the runtime PM is
      stored in hdac_device.c although it's used only locally in
      hdac_regmap.c.
      Reported-by: NJiri Slaby <jslaby@suse.cz>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      fc4f000b
  24. 07 3月, 2016 3 次提交
  25. 26 2月, 2016 1 次提交
    • T
      ALSA: hda - Loop interrupt handling until really cleared · 473f4145
      Takashi Iwai 提交于
      Currently the interrupt handler of HD-audio driver assumes that no irq
      update is needed while processing the irq.  But in reality, it has
      been confirmed that the HW irq is issued even during the irq
      handling.  Since we clear the irq status at the beginning, process the
      interrupt, then exits from the handler, the lately issued interrupt is
      left untouched without being properly processed.
      
      This patch changes the interrupt handler code to loop over the
      check-and-process.  The handler tries repeatedly as long as the IRQ
      status are turned on, and either stream or CORB/RIRB is handled.
      
      For checking the stream handling, snd_hdac_bus_handle_stream_irq()
      returns a value indicating the stream indices bits.  Other than that,
      the change is only in the irq handler itself.
      Reported-by: NLibin Yang <libin.yang@linux.intel.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      473f4145
  26. 20 1月, 2016 1 次提交
    • T
      ALSA: hda - Degrade i915 binding failure message · bed2e98e
      Takashi Iwai 提交于
      Currently HD-audio driver on Intel Skylake or Broxteon gives an error
      message when binding with i915 audio component fails.  However, this
      isn't any serious error on a system without Intel graphics.  Indeed
      there are such systems, where a third-party codec (e.g. Creative) is
      put on the mobo while using other discrete GPU (e.g. Nvidia).
      Printing a kernel "error" message is overreaction in such a case.
      
      This patch downgrades the print level for that message.  For systems
      that mandate the i915 binding (e.g. Haswell or Broadwell HDMI/DP),
      another kernel error message is shown in addition to make clear what
      went wrong.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=111021Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      bed2e98e
  27. 10 1月, 2016 4 次提交
  28. 10 12月, 2015 1 次提交
  29. 28 10月, 2015 1 次提交
  30. 20 10月, 2015 2 次提交