1. 06 Jun, 2023 3 commits
  2. 05 Jun, 2023 6 commits
  3. 24 May, 2023 2 commits
  4. 23 May, 2023 2 commits
    • Maxim Kochetkov's avatar
      ASoC: dwc: move DMA init to snd_soc_dai_driver probe() · 011a8719
      Maxim Kochetkov authored
      When using DMA mode we are facing with Oops:
      [  396.458157] Unable to handle kernel access to user memory without uaccess routines at virtual address 000000000000000c
      [  396.469374] Oops [#1]
      [  396.471839] Modules linked in:
      [  396.475144] CPU: 0 PID: 114 Comm: arecord Not tainted 6.0.0-00164-g9a8eccdaf2be-dirty #68
      [  396.483619] Hardware name: YMP ELCT FPGA (DT)
      [  396.488156] epc : dmaengine_pcm_open+0x1d2/0x342
      [  396.493227]  ra : dmaengine_pcm_open+0x1d2/0x342
      [  396.498140] epc : ffffffff807fe346 ra : ffffffff807fe346 sp : ffffffc804e138f0
      [  396.505602]  gp : ffffffff817bf730 tp : ffffffd8042c8ac0 t0 : 6500000000000000
      [  396.513045]  t1 : 0000000000000064 t2 : 656e69676e65616d s0 : ffffffc804e13990
      [  396.520477]  s1 : ffffffd801b86a18 a0 : 0000000000000026 a1 : ffffffff816920f8
      [  396.527897]  a2 : 0000000000000010 a3 : fffffffffffffffe a4 : 0000000000000000
      [  396.535319]  a5 : 0000000000000000 a6 : ffffffd801b87040 a7 : 0000000000000038
      [  396.542740]  s2 : ffffffd801b94a00 s3 : 0000000000000000 s4 : ffffffd80427f5e8
      [  396.550153]  s5 : ffffffd80427f5e8 s6 : ffffffd801b44410 s7 : fffffffffffffff5
      [  396.557569]  s8 : 0000000000000800 s9 : 0000000000000001 s10: ffffffff8066d254
      [  396.564978]  s11: ffffffd8059cf768 t3 : ffffffff817d5577 t4 : ffffffff817d5577
      [  396.572391]  t5 : ffffffff817d5578 t6 : ffffffc804e136e8
      [  396.577876] status: 0000000200000120 badaddr: 000000000000000c cause: 000000000000000d
      [  396.586007] [<ffffffff806839f4>] snd_soc_component_open+0x1a/0x68
      [  396.592439] [<ffffffff807fdd62>] __soc_pcm_open+0xf0/0x502
      [  396.598217] [<ffffffff80685d86>] soc_pcm_open+0x2e/0x4e
      [  396.603741] [<ffffffff8066cea4>] snd_pcm_open_substream+0x442/0x68e
      [  396.610313] [<ffffffff8066d1ea>] snd_pcm_open+0xfa/0x212
      [  396.615868] [<ffffffff8066d39c>] snd_pcm_capture_open+0x3a/0x60
      [  396.622048] [<ffffffff8065b35a>] snd_open+0xa8/0x17a
      [  396.627421] [<ffffffff801ae036>] chrdev_open+0xa0/0x218
      [  396.632893] [<ffffffff801a5a28>] do_dentry_open+0x17c/0x2a6
      [  396.638713] [<ffffffff801a6d9a>] vfs_open+0x1e/0x26
      [  396.643850] [<ffffffff801b8544>] path_openat+0x96e/0xc96
      [  396.649518] [<ffffffff801b9390>] do_filp_open+0x7c/0xf6
      [  396.655034] [<ffffffff801a6ff2>] do_sys_openat2+0x8a/0x11e
      [  396.660765] [<ffffffff801a735a>] sys_openat+0x50/0x7c
      [  396.666068] [<ffffffff80003aca>] ret_from_syscall+0x0/0x2
      [  396.674964] ---[ end trace 0000000000000000 ]---
      
      It happens because of play_dma_data/capture_dma_data pointers are NULL.
      Current implementation assigns these pointers at snd_soc_dai_driver
      startup() callback and reset them back to NULL at shutdown(). But
      soc_pcm_open() sequence uses DMA pointers in dmaengine_pcm_open()
      before snd_soc_dai_driver startup().
      Most generic DMA capable I2S drivers use snd_soc_dai_driver probe()
      callback to init DMA pointers only once at probe. So move DMA init
      to dw_i2s_dai_probe and drop shutdown() and startup() callbacks.
      Signed-off-by: default avatarMaxim Kochetkov <fido_max@inbox.ru>
      Link: https://lore.kernel.org/r/20230512110343.66664-1-fido_max@inbox.ruSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      011a8719
    • Stefan Binding's avatar
  5. 22 May, 2023 11 commits
  6. 18 May, 2023 1 commit
    • Ranjani Sridharan's avatar
      ASoC: soc-pcm: test if a BE can be prepared · e123036b
      Ranjani Sridharan authored
      In the BE hw_params configuration, the existing code checks if any of the
      existing FEs are prepared, running, paused or suspended - and skips the
      configuration in those cases. This allows multiple calls of hw_params
      which the ALSA state machine supports.
      
      This check is not handled for the prepare stage, which can lead to the
      same BE being prepared multiple times. This patch adds a check similar to
      that of the hw_params, with the main difference being that the suspended
      state is allowed: the ALSA state machine allows a transition from
      suspended to prepared with hw_params skipped.
      
      This problem was detected on Intel IPC4/SoundWire devices, where the BE
      dailink .prepare stage is used to configure the SoundWire stream with a
      bank switch. Multiple .prepare calls lead to conflicts with the .trigger
      operation with IPC4 configurations. This problem was not detected earlier
      on Intel devices, HDaudio BE dailinks detect that the link is already
      prepared and skip the configuration, and for IPC3 devices there is no BE
      trigger.
      
      Link: https://github.com/thesofproject/sof/issues/7596
      Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com
      Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com
      Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com
      Link: https://lore.kernel.org/r/20230517185731.487124-1-pierre-louis.bossart@linux.intel.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      e123036b
  7. 17 May, 2023 5 commits
    • Nikhil Mahale's avatar
      ALSA: hda: Add NVIDIA codec IDs a3 through a7 to patch table · dc4f2cca
      Nikhil Mahale authored
      These IDs are for AD102, AD103, AD104, AD106, and AD107 gpus with
      audio functions that are largely similar to the existing ones.
      
      Tested audio using gnome-settings, over HDMI, DP-SST and DP-MST
      connections on AD106 gpu.
      Signed-off-by: default avatarNikhil Mahale <nmahale@nvidia.com>
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20230517090736.15088-1-nmahale@nvidia.comSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      dc4f2cca
    • Arnd Bergmann's avatar
      ALSA: oss: avoid missing-prototype warnings · 040b5a04
      Arnd Bergmann authored
      Two functions are defined and used in pcm_oss.c but also optionally
      used from io.c, with an optional prototype. If CONFIG_SND_PCM_OSS_PLUGINS
      is disabled, this causes a warning as the functions are not static
      and have no prototype:
      
      sound/core/oss/pcm_oss.c:1235:19: error: no previous prototype for 'snd_pcm_oss_write3' [-Werror=missing-prototypes]
      sound/core/oss/pcm_oss.c:1266:19: error: no previous prototype for 'snd_pcm_oss_read3' [-Werror=missing-prototypes]
      
      Avoid this by making the prototypes unconditional.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Link: https://lore.kernel.org/r/20230516195046.550584-2-arnd@kernel.orgSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      040b5a04
    • Arnd Bergmann's avatar
      ALSA: cs46xx: mark snd_cs46xx_download_image as static · ccecefa4
      Arnd Bergmann authored
      snd_cs46xx_download_image() was originally called from dsp_spos.c, but
      is now local to cs46xx_lib.c. Mark it as 'static' to avoid a warning
      about it lacking a declaration, and '__maybe_unused' to avoid a warning
      about it being unused when CONFIG_SND_CS46XX_NEW_DSP is disabled:
      
      sound/pci/cs46xx/cs46xx_lib.c:534:5: error: no previous prototype for 'snd_cs46xx_download_image'
      
      Fixes: 89f157d9 ("[ALSA] cs46xx - Fix PM resume")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Link: https://lore.kernel.org/r/20230516195046.550584-1-arnd@kernel.orgSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      ccecefa4
    • Matthias Kaehlcke's avatar
      ASoC: rt5682: Disable jack detection interrupt during suspend · 8b271370
      Matthias Kaehlcke authored
      The rt5682 driver switches its regmap to cache-only when the
      device suspends and back to regular mode on resume. When the
      jack detect interrupt fires rt5682_irq() schedules the jack
      detect work. This can result in invalid reads from the regmap
      in cache-only mode if the work runs before the device has
      resumed:
      
      [   56.245502] rt5682 9-001a: ASoC: error at soc_component_read_no_lock on rt5682.9-001a for register: [0x000000f0] -16
      
      Disable the jack detection interrupt during suspend and
      re-enable it on resume. The driver already schedules the
      jack detection work on resume, so any state change during
      suspend is still handled.
      
      This is essentially the same as commit f7d00a9b ("SoC:
      rt5682s: Disable jack detection interrupt during suspend")
      for the rt5682s.
      
      Cc: stable@kernel.org
      Signed-off-by: Matthias Kaehlcke <mka@chromium.org
      Reviewed-by: Douglas Anderson <dianders@chromium.org
      Reviewed-by: Stephen Boyd <swboyd@chromium.org
      Link: https://lore.kernel.org/r/20230516164629.1.Ibf79e94b3442eecc0054d2b478779cc512d967fc@changeid
      Signed-off-by: Mark Brown <broonie@kernel.org
      8b271370
    • Ravulapati Vishnu Vardhan Rao's avatar
      ASoC: lpass: Fix for KASAN use_after_free out of bounds · 75e5fab7
      Ravulapati Vishnu Vardhan Rao authored
      When we run syzkaller we get below Out of Bounds error.
      
      "KASAN: slab-out-of-bounds Read in regcache_flat_read"
      
      Below is the backtrace of the issue:
      
      BUG: KASAN: slab-out-of-bounds in regcache_flat_read+0x10c/0x110
      Read of size 4 at addr ffffff8088fbf714 by task syz-executor.4/14144
      CPU: 6 PID: 14144 Comm: syz-executor.4 Tainted: G        W
      Hardware name: Qualcomm Technologies, Inc. sc7280 CRD platform (rev5+) (DT)
      Call trace:
      dump_backtrace+0x0/0x4ec
      show_stack+0x34/0x50
      dump_stack_lvl+0xdc/0x11c
      print_address_description+0x30/0x2d8
      kasan_report+0x178/0x1e4
      __asan_report_load4_noabort+0x44/0x50
      regcache_flat_read+0x10c/0x110
      regcache_read+0xf8/0x5a0
      _regmap_read+0x45c/0x86c
      _regmap_update_bits+0x128/0x290
      regmap_update_bits_base+0xc0/0x15c
      snd_soc_component_update_bits+0xa8/0x22c
      snd_soc_component_write_field+0x68/0xd4
      tx_macro_put_dec_enum+0x1d0/0x268
      snd_ctl_elem_write+0x288/0x474
      
      By Error checking and checking valid values issue gets rectifies.
      
      Signed-off-by: Ravulapati Vishnu Vardhan Rao <quic_visr@quicinc.com
      Link: https://lore.kernel.org/r/20230511112532.16106-1-quic_visr@quicinc.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      75e5fab7
  8. 16 May, 2023 2 commits
  9. 15 May, 2023 8 commits
    • Mark Brown's avatar
      ASoC: SOF: Intel: hda-mlink: fixes and extensions · 9be0b3a0
      Mark Brown authored
      Merge series from Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>:
      
      With additional testing with multiple links and multiple DAI types, we
      found a couple of mistakes with refcounts, base address, missing
      initialization.
      
      A new helper was also added due to a change in the SoundWire
      programming sequences, with the host driver in charge of setting up
      the DMA channel mapping instead of the firmware.
      9be0b3a0
    • Ranjani Sridharan's avatar
      ASoC: SOF: topology: Fix tuples array allocation · 1c0d023c
      Ranjani Sridharan authored
      The memory allocated for the tuples array assumes that there's 1
      instance of all tokens already. So for those tokens that have multiple
      instances in topology, we need to exclude the initial instance that has
      already been accounted for.
      
      Fixes: 4fdef47a ("ASoC: SOF: ipc4-topology: Add new tokens for input/output pin format count")
      Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com
      Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com
      Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com
      Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com
      Link: https://lore.kernel.org/r/20230515085200.17094-1-peter.ujfalusi@linux.intel.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      1c0d023c
    • Ranjani Sridharan's avatar
      ASoC: SOF: Separate the tokens for input and output pin index · be3c2153
      Ranjani Sridharan authored
      Using the same token ID for both input and output format pin index
      results in collisions and incorrect pin index getting parsed from
      topology.
      
      Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com
      Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com
      Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com
      Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com
      Reviewed-by: Paul Olaru <paul.olaru@oss.nxp.com
      Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com
      Link: https://lore.kernel.org/r/20230515104403.32207-1-peter.ujfalusi@linux.intel.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      be3c2153
    • Mark Brown's avatar
      ASoC: SOF: Various runtime pm fixes, improvements · aa70f36f
      Mark Brown authored
      Merge series from Peter Ujfalusi <peter.ujfalusi@linux.intel.com>:
      
      Three patch to correct error path PM runtime handling in few places.
      
      Regards,
      Peter
      ---
      Pierre-Louis Bossart (3):
        ASoC: SOF: debug: conditionally bump runtime_pm counter on exceptions
        ASoC: SOF: pcm: fix pm_runtime imbalance in error handling
        ASoC: SOF: sof-client-probes: fix pm_runtime imbalance in error
          handling
      
       sound/soc/sof/debug.c             |  4 ++--
       sound/soc/sof/pcm.c               | 11 ++++++-----
       sound/soc/sof/sof-client-probes.c | 14 ++++++++------
       3 files changed, 16 insertions(+), 13 deletions(-)
      
      --
      2.40.1
      aa70f36f
    • Lucas Tanure's avatar
      MAINTAINERS: Remove self from Cirrus Codec drivers · dc60b67d
      Lucas Tanure authored
      I'm leaving Cirrus Logic, and will no longer have access to
      hardware and documentation necessary to be effective in a
      maintainership role.
      
      Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com
      Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com
      Link: https://lore.kernel.org/r/20230512154503.741718-1-rf@opensource.cirrus.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      dc60b67d
    • Simon Trimmer's avatar
      ASoC: cs35l56: Prevent unbalanced pm_runtime in dsp_work() on SoundWire · 17082e09
      Simon Trimmer authored
      Flush the SoundWire interrupt handler work instead of cancelling it.
      
      When a SoundWire interrupt is triggered the pm_runtime is held
      until the work has completed. It's therefore unsafe to cancel
      the work, it must be flushed.
      
      Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com
      Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com
      Link: https://lore.kernel.org/r/20230512144237.739000-1-rf@opensource.cirrus.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      17082e09
    • Ranjani Sridharan's avatar
      ASoC: SOF: topology: Fix logic for copying tuples · 41c5305c
      Ranjani Sridharan authored
      Topology could have more instances of the tokens being searched for than
      the number of sets that need to be copied. Stop copying token after the
      limit of number of token instances has been reached. This worked before
      only by chance as we had allocated more size for the tuples array than
      the number of actual tokens being parsed.
      
      Fixes: 7006d20e ("ASoC: SOF: Introduce IPC3 ops")
      Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com
      Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com
      Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com
      Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com
      Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com
      Link: https://lore.kernel.org/r/20230512114630.24439-1-peter.ujfalusi@linux.intel.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      41c5305c
    • Kai Vehmanen's avatar
      ASoC: SOF: pm: save io region state in case of errors in resume · 171b53be
      Kai Vehmanen authored
      If there are failures in DSP runtime resume, the device state will not
      reach active and this makes it impossible e.g. to retrieve a possible
      DSP panic dump via "exception" debugfs node. If
      CONFIG_SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE=y is set, the data in
      cache is stale. If debugfs cache is not used, the region simply cannot
      be read.
      
      To allow debugging these scenarios, update the debugfs cache contents in
      resume error handler. User-space can then later retrieve DSP panic and
      other state via debugfs (requires SOF debugfs cache to be enabled in
      build).
      
      Reported-by: Curtis Malainey <cujomalainey@chromium.org
      Link: https://github.com/thesofproject/linux/issues/4274
      Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com
      Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com
      Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com
      Reviewed-by: Curtis Malainey <cujomalainey@chromium.org
      Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com
      Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com
      Link: https://lore.kernel.org/r/20230512104638.21376-1-peter.ujfalusi@linux.intel.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      171b53be