Skip to content
  1. Feb 05, 2021
  2. Feb 03, 2021
  3. Feb 02, 2021
    • Hui Wang's avatar
      ALSA: jack: implement software jack injection via debugfs · 2d670ea2
      Hui Wang authored
      
      
      This change adds audio jack injection feature through debugfs, with
      this feature, we could validate alsa userspace changes by injecting
      plugin or plugout events to the non-phantom audio jacks.
      
      With this change, the sound core will build the folders
      $debugfs_mount_dir/sound/cardN if SND_DEBUG and DEBUG_FS are enabled.
      And if users also enable the SND_JACK_INJECTION_DEBUG, the jack
      injection nodes will be built in the folder cardN like below:
      
      $tree $debugfs_mount_dir/sound
      $debugfs_mount_dir/sound
      ├── card0
      │   ├── HDMI_DP_pcm_10_Jack
      │   │   ├── jackin_inject
      │   │   ├── kctl_id
      │   │   ├── mask_bits
      │   │   ├── status
      │   │   ├── sw_inject_enable
      │   │   └── type
      ...
      │   └── HDMI_DP_pcm_9_Jack
      │       ├── jackin_inject
      │       ├── kctl_id
      │       ├── mask_bits
      │       ├── status
      │       ├── sw_inject_enable
      │       └── type
      └── card1
          ├── HDMI_DP_pcm_5_Jack
          │   ├── jackin_inject
          │   ├── kctl_id
          │   ├── mask_bits
          │   ├── status
          │   ├── sw_inject_enable
          │   └── type
          ...
          ├── Headphone_Jack
          │   ├── jackin_inject
          │   ├── kctl_id
          │   ├── mask_bits
          │   ├── status
          │   ├── sw_inject_enable
          │   └── type
          └── Headset_Mic_Jack
              ├── jackin_inject
              ├── kctl_id
              ├── mask_bits
              ├── status
              ├── sw_inject_enable
              └── type
      
      The nodes kctl_id, mask_bits, status and type are read-only, users
      could check jack or jack_kctl's information through them.
      
      The nodes sw_inject_enable and jackin_inject are directly used for
      injection. The sw_inject_enable is read-write, users could check if
      software injection is enabled or not on this jack, and users could
      echo 1 or 0 to enable or disable software injection on this jack. Once
      the injection is enabled, the jack will not change by hardware events
      anymore, once the injection is disabled, the jack will restore the
      last reported hardware events to the jack. The jackin_inject is
      write-only, if the injection is enabled, users could echo 1 or 0 to
      this node to inject plugin or plugout events to this jack.
      
      For the detailed usage information on these nodes, please refer to
      Documentation/sound/designs/jack-injection.rst.
      
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Reviewed-by: default avatarJaroslav Kysela <perex@perex.cz>
      Reviewed-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
      Signed-off-by: default avatarHui Wang <hui.wang@canonical.com>
      Link: https://lore.kernel.org/r/20210127085639.74954-2-hui.wang@canonical.com
      
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      2d670ea2
    • Jasmin Fazlic's avatar
      ALSA: hdsp: hardware output loopback · da2a040e
      Jasmin Fazlic authored
      Output loopback is a feature where you can record what you hear.
      The HDSP series of the RME interfaces provides this functionality
      at the hardware level and this patch exposes controls to enable or
      disable it per output (playback) channel.
      
      This probably works on other cards but due to a lack of hardware
      it is only tested and enabled for the HDSP9632 card with this patch.
      
      Should this patch be accepted a separate patch will be posted to
      https://github.com/alsa-project/alsa-tools/tree/master/hdspmixer
      
      
      which adds "LPBK" buttons to each output in the playback strip for
      the user to be able to control this feature from the user land.
      Users from Windows tool TotalMixFX should be familiar with this.
      
      Signed-off-by: default avatarJasmin Fazlic <superfassl@gmail.com>
      Link: https://lore.kernel.org/r/95cb3117-e85a-51a6-c2ce-bf736e70fc4c@gmail.com
      
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      da2a040e
    • PeiSen Hou's avatar
      ALSA: hda/realtek: modify EAPD in the ALC886 · 4841b8e6
      PeiSen Hou authored
      
      
      Modify 0x20 index 7 bit 5 to 1, make the 0x15 EAPD the same as 0x14.
      
      Signed-off-by: default avatarPeiSen Hou <pshou@realtek.com>
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/e62c5058957f48d8b8953e97135ff108@realtek.com
      
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      4841b8e6
  4. Feb 01, 2021
  5. Jan 31, 2021
  6. Jan 27, 2021
  7. Jan 26, 2021
  8. Jan 25, 2021
  9. Jan 24, 2021
  10. Jan 23, 2021
  11. Jan 22, 2021
  12. Jan 21, 2021
    • Stephen Boyd's avatar
      ASoC: qcom: Fix number of HDMI RDMA channels on sc7180 · 7dfe20ee
      Stephen Boyd authored
      Suspending/resuming with an HDMI dongle attached leads to crashes from
      an audio regmap.
      
       Unable to handle kernel paging request at virtual address ffffffc018068000
       Mem abort info:
         ESR = 0x96000047
         EC = 0x25: DABT (current EL), IL = 32 bits
         SET = 0, FnV = 0
         EA = 0, S1PTW = 0
       Data abort info:
         ISV = 0, ISS = 0x00000047
         CM = 0, WnR = 1
       swapper pgtable: 4k pages, 39-bit VAs, pgdp=0000000081b12000
       [ffffffc018068000] pgd=0000000275d14003, pud=0000000275d14003, pmd=000000026365d003, pte=0000000000000000
       Internal error: Oops: 96000047 [#1] PREEMPT SMP
       Call trace:
        regmap_mmio_write32le+0x2c/0x40
        regmap_mmio_write+0x48/0x6c
        _regmap_bus_reg_write+0x34/0x44
        _regmap_write+0x100/0x150
        regcache_default_sync+0xc0/0x138
        regcache_sync+0x188/0x26c
        lpass_platform_pcmops_resume+0x48/0x54 [snd_soc_lpass_platform]
        snd_soc_component_resume+0x28/0x40
        soc_resume_deferred+0x6c/0x178
        process_one_work+0x208/0x3c8
        worker_thread+0x23c/0x3e8
        kthread+0x144/0x178
        ret_from_fork+0x10/0x18
       Code: d503201f d50332bf f94002a8 8b344108 (b9000113)
      
      I can reliably reproduce this problem by running 'tail' on the registers
      file in debugfs for the hdmi regmap.
      
       # tail /sys/kernel/debug/regmap/62d87000.lpass-lpass_hdmi/registers
       [   84.658733] Unable to handle kernel paging request at virtual address ffffffd0128e800c
      
      This crash happens because we're trying to read registers from the
      regmap beyond the length of the mapping created by ioremap().
      
      The number of hdmi_rdma_channels determines the size of the regmap via
      this code in sound/soc/qcom/lpass-cpu.c:
      
        lpass_hdmi_regmap_config.max_register = LPAIF_HDMI_RDMAPER_REG(variant, variant->hdmi_rdma_channels);
      
      According to debugfs the size of the regmap is 0x68010 but according to
      the DTS file posted in [1] the size is only 0x68000 (see the first reg
      property of the lpass_cpu node). Let's change the number of channels to
      be 3 instead of 4 so the math works out to have a max register of
      0x67010, nicely fitting inside of the region size of 0x68000.
      
      Note: I tried to bump up the size of the register region to the next
      page to include the 0x68010 register but then the tail command caused
      SErrors with an async abort, implying that the register region doesn't
      exist or it isn't clocked because the bus is telling us that the
      register read failed. I reduce the number of channels and played audio
      through the HDMI channel and it kept working so I think this is correct.
      
      Fixes: 2ad63dc8 ("ASoC: qcom: sc7180: Add support for audio over DP")
      Link: https://lore.kernel.org/r/1601448168-18396-2-git-send-email-srivasam@codeaurora.org
      
       [1]
      Cc: V Sujith Kumar Reddy <vsujithk@codeaurora.org>
      Cc: Srinivasa Rao <srivasam@codeaurora.org>
      Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Cc: Cheng-Yi Chiang <cychiang@chromium.org>
      Signed-off-by: default avatarStephen Boyd <swboyd@chromium.org>
      Link: https://lore.kernel.org/r/20210115203329.846824-1-swboyd@chromium.org
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      7dfe20ee