Skip to content
  1. Jun 21, 2023
    • Ivan Orlov's avatar
      sound: make all 'class' structures const · 8d0cf150
      Ivan Orlov authored
      
      
      Now that the driver core allows for struct class to be in read-only
      memory, making all 'class' structures to be declared at build time
      placing them into read-only memory, instead of having to be dynamically
      allocated at load time.
      
      Cc: Jaroslav Kysela <perex@perex.cz>
      Cc: Takashi Iwai <tiwai@suse.com>
      Cc: Ivan Orlov <ivan.orlov0322@gmail.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Geoff Levand <geoff@infradead.org>
      Cc: Thierry Reding <treding@nvidia.com>
      Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
      Cc: alsa-devel@alsa-project.org
      Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Link: https://lore.kernel.org/r/20230620175633.641141-2-gregkh@linuxfoundation.org
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      8d0cf150
    • Srinivas Kandagatla's avatar
      ALSA: compress: allow setting codec params after next track · 7ea9ee00
      Srinivas Kandagatla authored
      
      
      For gapless playback it is possible that each track can have different
      codec profile with same decoder, for example we have WMA album,
      we may have different tracks as WMA v9, WMA v10 and so on
      
      Or if DSP's like QDSP have abililty to switch decoders on single stream
      for each track, then this call could be used to set new codec parameters.
      
      Existing code does not allow to change this profile while doing gapless
      playback.
      
      Reuse existing SNDRV_COMPRESS_SET_PARAMS to set this new track params along
      some additional checks to enforce proper state machine.
      
      With this new changes now the user can call SNDRV_COMPRESS_SET_PARAMS
      anytime after setting next track and additional check in write should
      also ensure that params are set before writing new data.
      
      Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Acked-by: default avatarVinod Koul <vkoul@kernel.org>
      Link: https://lore.kernel.org/r/20230619092805.21649-1-srinivas.kandagatla@linaro.org
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      7ea9ee00
  2. Jun 15, 2023
  3. Jun 13, 2023
  4. Jun 12, 2023
  5. Jun 11, 2023
    • Mark Brown's avatar
      ALSA: hda: Use maple tree register cache · 15253079
      Mark Brown authored
      
      
      HDA can only support single register read and write operations so does not
      benefit from block writes. This means it gets no benefit from using the
      rbtree register cache over the maple tree register cache so convert it to
      use maple trees instead, it is more modern.
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Link: https://lore.kernel.org/r/20230609-alsa-hda-maple-v1-1-a2b725c8b8f5@kernel.org
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      15253079
  6. Jun 07, 2023
    • Ivan Orlov's avatar
      selftests: ALSA: Add test for the 'pcmtest' driver · 10b98a4d
      Ivan Orlov authored
      
      
      This test covers the new Virtual PCM Test Driver, including the capturing,
      playback and ioctl redefinition functionalities for both interleaved and
      non-interleaved access modes. This test is also helpful as an usage example
      of the 'pcmtest' driver.
      
      We have a lot of different virtual media drivers, which can be used for
      testing of the userspace applications and media subsystem middle layer.
      However, all of them are aimed at testing the video functionality and
      simulating the video devices. For audio devices we have only snd-dummy
      module, which is good in simulating the correct behavior of an ALSA device.
      I decided to write a tool, which would help to test the userspace ALSA
      programs (and the PCM middle layer as well) under unusual circumstances
      to figure out how they would behave. So I came up with this Virtual PCM
      Test Driver.
      
      This new Virtual PCM Test Driver has several features which can be useful
      during the userspace ALSA applications testing/fuzzing, or testing/fuzzing
      of the PCM middle layer. Not all of them can be implemented using the
      existing virtual drivers (like dummy or loopback). Here is what can this
      driver do:
      
      - Simulate both capture and playback processes
      - Generate random or pattern-based capture data
      - Check the playback stream for containing the looped pattern
      - Inject delays into the playback and capturing processes
      - Inject errors during the PCM callbacks
      
      Also, this driver can check the playback stream for containing the
      predefined pattern, which is used in the corresponding selftest to check
      the PCM middle layer data transferring functionality. Additionally, this
      driver redefines the default RESET ioctl, and the selftest covers this PCM
      API functionality as well.
      
      The driver supports both interleaved and non-interleaved access modes, and
      have separate pattern buffers for each channel. The driver supports up to
      4 channels and up to 8 substreams.
      
      Signed-off-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
      Acked-by: default avatarJaroslav Kysela <perex@perex.cz>
      Link: https://lore.kernel.org/r/20230606193254.20791-3-ivan.orlov0322@gmail.com
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      10b98a4d
    • Ivan Orlov's avatar
      ALSA: Implement the new Virtual PCM Test Driver · 315a3d57
      Ivan Orlov authored
      
      
      We have a lot of different virtual media drivers, which can be used for
      testing of the userspace applications and media subsystem middle layer.
      However, all of them are aimed at testing the video functionality and
      simulating the video devices. For audio devices we have only snd-dummy
      module, which is good in simulating the correct behavior of an ALSA device.
      I decided to write a tool, which would help to test the userspace ALSA
      programs (and the PCM middle layer as well) under unusual circumstances
      to figure out how they would behave. So I came up with this Virtual PCM
      Test Driver.
      
      This new Virtual PCM Test Driver has several features which can be useful
      during the userspace ALSA applications testing/fuzzing, or testing/fuzzing
      of the PCM middle layer. Not all of them can be implemented using the
      existing virtual drivers (like dummy or loopback). Here is what can this
      driver do:
      
      - Simulate both capture and playback processes
      - Generate random or pattern-based capture data
      - Inject delays into the playback and capturing processes
      - Inject errors during the PCM callbacks
      
      Also, this driver can check the playback stream for containing the
      predefined pattern, which is used in the corresponding selftest to check
      the PCM middle layer data transferring functionality. Additionally, this
      driver redefines the default RESET ioctl, and the selftest covers this PCM
      API functionality as well.
      
      The driver supports both interleaved and non-interleaved access modes, and
      have separate pattern buffers for each channel. The driver supports up to
      4 channels and up to 8 substreams.
      
      Signed-off-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
      Acked-by: default avatarJaroslav Kysela <perex@perex.cz>
      Link: https://lore.kernel.org/r/20230606193254.20791-2-ivan.orlov0322@gmail.com
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      315a3d57
    • Ivan Orlov's avatar
      docs: sound: add 'pcmtest' driver documentation · f091ec76
      Ivan Orlov authored
      
      
      Add documentation for the new Virtual PCM Test Driver. It covers all
      possible usage cases: errors and delay injections, random and
      pattern-based data generation, playback and ioctl redefinition
      functionalities testing.
      
      We have a lot of different virtual media drivers, which can be used for
      testing of the userspace applications and media subsystem middle layer.
      However, all of them are aimed at testing the video functionality and
      simulating the video devices. For audio devices we have only snd-dummy
      module, which is good in simulating the correct behavior of an ALSA device.
      I decided to write a tool, which would help to test the userspace ALSA
      programs (and the PCM middle layer as well) under unusual circumstances
      to figure out how they would behave. So I came up with this Virtual PCM
      Test Driver.
      
      This new Virtual PCM Test Driver has several features which can be useful
      during the userspace ALSA applications testing/fuzzing, or testing/fuzzing
      of the PCM middle layer. Not all of them can be implemented using the
      existing virtual drivers (like dummy or loopback). Here is what can this
      driver do:
      
      - Simulate both capture and playback processes
      - Check the playback stream for containing the looped pattern
      - Generate random or pattern-based capture data
      - Inject delays into the playback and capturing processes
      - Inject errors during the PCM callbacks
      
      Also, this driver can check the playback stream for containing the
      predefined pattern, which is used in the corresponding selftest to check
      the PCM middle layer data transferring functionality. Additionally, this
      driver redefines the default RESET ioctl, and the selftest covers this PCM
      API functionality as well.
      
      The driver supports both interleaved and non-interleaved access modes, and
      have separate pattern buffers for each channel. The driver supports up to
      4 channels and up to 8 substreams.
      
      Signed-off-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
      Acked-by: default avatarJaroslav Kysela <perex@perex.cz>
      Link: https://lore.kernel.org/r/20230606193254.20791-1-ivan.orlov0322@gmail.com
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      f091ec76
    • Yanteng Si's avatar
      ALSA: hda/intel: Workaround for WALLCLK register for loongson controller · a4d2b853
      Yanteng Si authored
      
      
      On loongson controller, the value of WALLCLK register
      is always 0, which is meaningless, so we return directly.
      
      Signed-off-by: default avatarYanteng Si <siyanteng@loongson.cn>
      Signed-off-by: default avatarYingkun Meng <mengyingkun@loongson.cn>
      Acked-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      Link: https://lore.kernel.org/r/185df71ef413ab190460eb377703214ee7288aeb.1686128807.git.siyanteng@loongson.cn
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      a4d2b853
    • Yanteng Si's avatar
      ALSA: hda: Workaround for SDnCTL register on loongson · 942ccdd8
      Yanteng Si authored
      
      
      On loongson controller, after calling snd_hdac_stream_updateb()
      to enable DMA engine, the SDnCTL.STRM will become to zero.  We
      need to access SDnCTL in dword to keep SDnCTL.STRM is not changed.
      
      Signed-off-by: default avatarYanteng Si <siyanteng@loongson.cn>
      Signed-off-by: default avatarYingkun Meng <mengyingkun@loongson.cn>
      Acked-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      Link: https://lore.kernel.org/r/27aeddf5ebbe7c69631cec0e489c1b264be94990.1686128807.git.siyanteng@loongson.cn
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      942ccdd8
    • Yanteng Si's avatar
      ALSA: hda: Using polling mode for loongson controller by default · cbc3e98a
      Yanteng Si authored
      
      
      On loongson controller, RIRBSTS.RINTFL cannot be cleared,
      azx_interrupt() is called all the time. We disable RIRB
      interrupt, and use polling mode by default.
      
      Signed-off-by: default avatarYanteng Si <siyanteng@loongson.cn>
      Signed-off-by: default avatarYingkun Meng <mengyingkun@loongson.cn>
      Acked-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      Link: https://lore.kernel.org/r/d309a75424d438b958d90d797b4f1ba45468e090.1686128807.git.siyanteng@loongson.cn
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      cbc3e98a
    • Yanteng Si's avatar
      ALSA: hda: Add Loongson LS7A HD-Audio support · 28bd137a
      Yanteng Si authored
      
      
      Add the new PCI ID 0x0014 0x7a07 and the new PCI ID 0x0014 0x7a37
      Loongson HDA controller.
      
      Signed-off-by: default avatarYanteng Si <siyanteng@loongson.cn>
      Acked-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      Link: https://lore.kernel.org/r/993587483b9509796b29a416f257fcfb4b15c6ea.1686128807.git.siyanteng@loongson.cn
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      28bd137a
  7. Jun 06, 2023
  8. Jun 05, 2023