1. 13 3月, 2015 1 次提交
  2. 03 3月, 2015 3 次提交
    • T
      ALSA: hda - Build PCMs and controls at codec driver probe · bcd96557
      Takashi Iwai 提交于
      This makes the code flow easier -- instead of the controller driver
      calling snd_hda_build_pcms() and snd_hda_build_controls() explicitly,
      the codec driver itself builds PCMs and controls at probe time.  Then
      the controller driver only needs to call snd_card_register().
      
      Also, this allows us the full bind/unbind control, too.  Even when a
      codec driver is bound later, it automatically registers the new PCM
      and controls by itself.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      bcd96557
    • T
      ALSA: hda - Implement unbind more safely · 9a6246ff
      Takashi Iwai 提交于
      Now we have all pieces ready, and put them into places:
      - add the hda_pcm refcount to azx_pcm_open() and azx_pcm_close(),
      - call the most of cleanup code in hda_codec_reset() from the codec
        driver remove,
      - call the same code also from the hda_codec object free.
      
      Then the codec driver can be unbound more safely now.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      9a6246ff
    • T
      ALSA: hda - Add card field to hda_codec struct · 6efdd851
      Takashi Iwai 提交于
      Allow the codec object to have an individual card pointer.  Not only
      this simplifies the redirections in many places, also this will allow
      us to make each codec assigned to a different card object.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      6efdd851
  3. 23 2月, 2015 2 次提交
    • T
      ALSA: hda - Move codec suspend/resume to codec driver · 59ed1ead
      Takashi Iwai 提交于
      This patch moves the suspend/resume mechanisms down to each codec
      driver level, as we have a proper codec driver bound on the bus now.
      Then we get the asynchronous PM gratis without fiddling much in the
      driver level.
      
      As a soft-landing transition, implement the common suspend/resume pm
      ops for hda_codec_driver and keep the each codec driver intact.  Only
      the callers of suspend/resume in the controller side (azx_suspend()
      and azx_resume()) are removed.
      
      Another involved place is azx_bus_reset() calling the temporary
      suspend and resume as a hackish method of bus reset.  The HD-audio
      core provide a helper function snd_hda_bus_reset() instead.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      59ed1ead
    • T
      ALSA: hda - Bind codecs via standard bus · d8a766a1
      Takashi Iwai 提交于
      Now we create the standard HD-audio bus (/sys/bus/hdaudio), and bind
      the codec driver with the codec device over there.  This is the first
      step of the whole transition so that the changes to each codec driver
      are kept as minimal as possible.
      
      Each codec driver needs to register hda_codec_driver struct containing
      the currently existing preset via the new helper macro
      module_hda_codec_driver().  The old hda_codec_preset_list is replaced
      with this infrastructure.  The generic parsers (for HDMI and other)
      are also included in the preset with the special IDs to bind
      uniquely.
      
      In HD-audio core side, the device binding code is split to
      hda_bind.c.  It provides the snd_hda_bus_type implementation to match
      the codec driver with the given codec vendor ID.  It also manages the
      module auto-loading by itself like before: when the matching isn't
      found, it tries to probe the corresponding codec modules, and finally
      falls back to the generic drivers.  (The special ID mentioned above is
      set at this stage.)
      
      The only visible change to outside is that the hdaudio sysfs entry now
      appears in /sys/bus/devices, not as a sound class device.
      
      More works to move the suspend/resume and remove ops will be
      (hopefully) done in later patches.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      d8a766a1