1. 02 Feb, 2021 6 commits
    • Takashi Iwai's avatar
      Merge branch 'for-linus' into for-next · 5c953a22
      Takashi Iwai authored
      Back-merge the 5.11 devel branch for further patching.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      5c953a22
    • Olivia Mackintosh's avatar
      ALSA: usb-audio: Add DJM-450 to the quirks table · 9119e566
      Olivia Mackintosh authored
      As with most Pioneer devices, the device descriptor is vendor specific
      and as such, the number of channels, the PCM format, endpoints and
      sample rate need to be specified. This device has 8 inputs and 8 outputs
      and a sample rate of 48000 only. The PCM format is S24_3LE like other
      devices.
      
      There seems to be an appetite for reducing duplication amongs these
      Pioneer patches but again, I feel this is a step to be taken after
      support has been added as it's not completely clear where the
      commonalities are.
      Signed-off-by: default avatarOlivia Mackintosh <livvy@base.nu>
      Link: https://lore.kernel.org/r/20210202134225.3217-3-livvy@base.nuSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      9119e566
    • Olivia Mackintosh's avatar
      ALSA: usb-audio: Add DJM450 to Pioneer format quirk · 3b85f5fc
      Olivia Mackintosh authored
      Like the DJM-750, ensure that the format control message is passed to
      the device when opening a stream. It seems as though fmt->sync_ep is not
      always set when this function is called hence the passing of the value
      at the call site. If this can be fixed, fmt->sync_up should be used as
      the wvalue.
      
      There doesn't seem to be a "cpu_to_le24" type function defined hence for
      the open code but I did see a similar thing done in Bluez lib. Perhaps
      we can get these definitions defined in byteorder.h. See hci_cpu_to_le24
      in include/net/bluetooth/hci.h:2543 for similar usage.
      Signed-off-by: default avatarOlivia Mackintosh <livvy@base.nu>
      Link: https://lore.kernel.org/r/20210202134225.3217-2-livvy@base.nuSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      3b85f5fc
    • 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.comSigned-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.comSigned-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.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      4841b8e6
  2. 01 Feb, 2021 1 commit
  3. 31 Jan, 2021 2 commits
  4. 26 Jan, 2021 10 commits
  5. 25 Jan, 2021 11 commits
  6. 24 Jan, 2021 1 commit
  7. 23 Jan, 2021 2 commits
  8. 22 Jan, 2021 1 commit
  9. 21 Jan, 2021 6 commits
    • Ricardo Ribalda's avatar
      ASoC: Intel: Skylake: Zero snd_ctl_elem_value · 1d8fe064
      Ricardo Ribalda authored
      Clear struct snd_ctl_elem_value before calling ->put() to avoid any data
      leak.
      Signed-off-by: default avatarRicardo Ribalda <ribalda@chromium.org>
      Reviewed-by: default avatarCezary Rojewski <cezary.rojewski@intel.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Link: https://lore.kernel.org/r/20210121171644.131059-2-ribalda@chromium.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      1d8fe064
    • Ricardo Ribalda's avatar
      ASoC: Intel: Skylake: skl-topology: Fix OOPs ib skl_tplg_complete · c1c3ba1f
      Ricardo Ribalda authored
      If dobj->control is not initialized we end up in an OOPs during
      skl_tplg_complete:
      
      [   26.553358] BUG: kernel NULL pointer dereference, address:
      0000000000000078
      [   26.561151] #PF: supervisor read access in kernel mode
      [   26.566897] #PF: error_code(0x0000) - not-present page
      [   26.572642] PGD 0 P4D 0
      [   26.575479] Oops: 0000 [#1] PREEMPT SMP PTI
      [   26.580158] CPU: 2 PID: 2082 Comm: udevd Tainted: G         C
      5.4.81 #4
      [   26.588232] Hardware name: HP Soraka/Soraka, BIOS
      Google_Soraka.10431.106.0 12/03/2019
      [   26.597082] RIP: 0010:skl_tplg_complete+0x70/0x144 [snd_soc_skl]
      
      Fixes: 2d744ecf ("ASoC: Intel: Skylake: Automatic DMIC format configuration according to information from NHL")
      Signed-off-by: default avatarRicardo Ribalda <ribalda@chromium.org>
      Reviewed-by: default avatarCezary Rojewski <cezary.rojewski@intel.com>
      Tested-by: default avatarLukasz Majczak <lma@semihalf.com>
      Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Link: https://lore.kernel.org/r/20210121171644.131059-1-ribalda@chromium.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      c1c3ba1f
    • 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.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      7dfe20ee
    • Takashi Iwai's avatar
      ALSA: usb-audio: Fix "RANGE setting not yet supported" errors · 85db1cfb
      Takashi Iwai authored
      At probing a UAC2/UAC3 device like NUX MG-300 USB interface, we get
      error messages "RANGE setting not yet supported".  It comes the place
      where the driver tries to determine the resolution of mixer volumes
      via SET_CUR_RES and GET_CUR_RES verbs.  Those verbs aren't supported
      on UAC2 and UAC3, hence the driver warns like the above.  Although the
      driver handles this error and works as expected, it's still ugly to
      show such errors unnecessarily.
      
      This patch papers over the errors by applying the resolution detection
      only for UAC1 and skipping it for UAC2/UAC3.
      Reported-by: default avatarMike Oliphant <oliphant@nostatic.org>
      Link: https://lore.kernel.org/r/20210120213932.1971-2-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      85db1cfb
    • Takashi Iwai's avatar
      ALSA: usb-audio: Skip the clock selector inquiry for single connections · 086b957c
      Takashi Iwai authored
      The current USB-audio driver gets an error at probing NUX MG-300 about
      parsing the clocks.  This is because the firmware doesn't return the
      proper connection of the clock selector that is connected to a single
      clock; it's likely that the firmware was lazy^w optimized and the
      inquiry wasn't handled.  Actually it makes little sense to inquire and
      set up the single connection explicitly.
      
      This patch fixes the issue by simply skipping the clock selector
      inquiry if it's a single connection.
      Reported-by: default avatarMike Oliphant <oliphant@nostatic.org>
      Link: https://lore.kernel.org/r/20210120213932.1971-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      086b957c
    • Mark Brown's avatar
      Merge series "ASoC: qcom: Fix broken lpass driver" from Srinivas Kandagatla... · 411fc208
      Mark Brown authored
      Merge series "ASoC: qcom: Fix broken lpass driver" from Srinivas Kandagatla <srinivas.kandagatla@linaro.org>:
      
      LPASS driver is partially broken on DragonBoard DB410c on 5.10 and
      its totally broken on other Supported Qualcomm SoCs.
      
      This was due to DAI ids being over written by the SoC specific header files
      in the dt-bindings.
      
      Idea of having SoC specific headers is not doable when we are dealing with
      a common driver. So this patchset attempts to fix this properly by creating
      a common dt-bindings header for lpass which can be updated with new entries
      if required. This patchset also add an simple of_xlate function to resolve
      the dai names and different SoCs might not have 1:1 mapping for the
      dai_driver array with dai ids.
      
      Changes since v1:
      	- removed array indexes as suggested by Stephan G.
      	- rebased to sound/for-next branch
      	- collected Srinivasa tested-by tag for sc7180 platform.
      
      Thanks,
      srini
      
      Srinivas Kandagatla (2):
        ASoC: dt-bindings: lpass: Fix and common up lpass dai ids
        ASoC: qcom: Fix broken support to MI2S TERTIARY and QUATERNARY
      
       include/dt-bindings/sound/apq8016-lpass.h |  7 +++----
       include/dt-bindings/sound/qcom,lpass.h    | 15 +++++++++++++++
       include/dt-bindings/sound/sc7180-lpass.h  |  6 ++----
       sound/soc/qcom/lpass-cpu.c                | 22 ++++++++++++++++++++++
       sound/soc/qcom/lpass-platform.c           | 12 ++++++++++++
       sound/soc/qcom/lpass-sc7180.c             |  9 +++------
       sound/soc/qcom/lpass.h                    |  2 +-
       7 files changed, 58 insertions(+), 15 deletions(-)
       create mode 100644 include/dt-bindings/sound/qcom,lpass.h
      
      --
      2.21.0
      411fc208