Skip to content
Snippets Groups Projects
  1. Dec 20, 2021
  2. Nov 26, 2021
  3. Oct 27, 2021
  4. Oct 13, 2021
  5. Oct 08, 2021
  6. Oct 02, 2021
  7. Sep 13, 2021
  8. Jul 22, 2021
    • Arnd Bergmann's avatar
      ASoC: codecs: wcd938x: fix wcd module dependency · b9a4b57f
      Arnd Bergmann authored
      
      With SND_SOC_ALL_CODECS=y and SND_SOC_WCD938X_SDW=m, there is a link
      error from a reverse dependency, since the built-in codec driver calls
      into the modular soundwire back-end:
      
      x86_64-linux-ld: sound/soc/codecs/wcd938x.o: in function `wcd938x_codec_free':
      wcd938x.c:(.text+0x2c0): undefined reference to `wcd938x_sdw_free'
      x86_64-linux-ld: sound/soc/codecs/wcd938x.o: in function `wcd938x_codec_hw_params':
      wcd938x.c:(.text+0x2f6): undefined reference to `wcd938x_sdw_hw_params'
      x86_64-linux-ld: sound/soc/codecs/wcd938x.o: in function `wcd938x_codec_set_sdw_stream':
      wcd938x.c:(.text+0x332): undefined reference to `wcd938x_sdw_set_sdw_stream'
      x86_64-linux-ld: sound/soc/codecs/wcd938x.o: in function `wcd938x_tx_swr_ctrl':
      wcd938x.c:(.text+0x23de): undefined reference to `wcd938x_swr_get_current_bank'
      x86_64-linux-ld: sound/soc/codecs/wcd938x.o: in function `wcd938x_bind':
      wcd938x.c:(.text+0x2579): undefined reference to `wcd938x_sdw_device_get'
      x86_64-linux-ld: wcd938x.c:(.text+0x25a1): undefined reference to `wcd938x_sdw_device_get'
      x86_64-linux-ld: wcd938x.c:(.text+0x262a): undefined reference to `__devm_regmap_init_sdw'
      
      Work around this using two small hacks: An added Kconfig dependency
      prevents the main driver from being built-in when soundwire support
      itself is a loadable module to allow calling devm_regmap_init_sdw(),
      and a Makefile trick links the wcd938x-sdw backend as built-in
      if needed to solve the dependency between the two modules.
      
      Fixes: 04544222 ("ASoC: codecs: wcd938x: add audio routing and Kconfig")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Link: https://lore.kernel.org/r/20210721150510.1837221-1-arnd@kernel.org
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      b9a4b57f
  9. Jul 14, 2021
    • Pierre-Louis Bossart's avatar
      ASoC: codecs: add SoundWire mockup device support · 81d3d3d0
      Pierre-Louis Bossart authored
      
      To test the host controller and bus management code, it is currently
      required to have a physical SoundWire peripheral attached to the
      bus. To help with pre-silicon or early hardware enablement, it would
      be very useful to have a SoundWire 'mockup' device that is exposed in
      platform firmware but does not drive any signal on the bus.
      
      This is different to the existing ASoC 'dummy' codec uses for I2S/TDM,
      the SoundWire spec makes it clear that a device that is not attached
      to the bus is not permitted to interact with the bus, be it for
      command/control or data.
      
      This patch exposes a 'mockup' device, with a minimalist driver, with 4
      partID values reserved by Intel for such test configurations. The
      mockup device exposes one full-duplex DAI based on 2 ports (DP1 for
      playback and DP8 for capture). The capture data port is just virtual,
      such a mockup device is prevented by the SoundWire specification from
      presenting any data generated by a Source port without being Attached.
      
      All the callbacks exposed by the SoundWire Slave interface are
      populated, even if they just return immediately. This is intentional
      to describe what a minimal codec driver should do and implement and
      help new codec vendors provide support for their devices.
      
      Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
      Reviewed-by: default avatarRander Wang <rander.wang@intel.com>
      Signed-off-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
      Link: https://lore.kernel.org/r/20210714032209.11284-2-yung-chuan.liao@linux.intel.com
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      81d3d3d0
  10. Jun 14, 2021
  11. Jun 04, 2021
  12. Jun 01, 2021
  13. May 24, 2021
    • Stephan Gerhold's avatar
      ASoC: codecs: Add driver for NXP/Goodix TFA989x (TFA1) amplifiers · af00978a
      Stephan Gerhold authored
      NXP's TFA98xx (now part of Goodix) are fairly popular speaker amplifiers
      used in many smartphones and tablets. Most of them are sold as "smart
      amplifiers" with built-in "CoolFlux DSP" that is used for volume control,
      plus a "sophisticated speaker-boost and protection algorithm".
      
      Unfortunately, they are also almost entirely undocumented. The short
      datasheets (e.g. [1] for TFA9897) describe the available features,
      but do not provide any information about the registers or how to use
      the "CoolFlux DSP".
      
      The amplifiers are most often configured through proprietary userspace
      libraries. There are also some (rather complex) kernel drivers (e.g. [2])
      but even those rely on obscure firmware blobs for configuration (so-called
      "containers"). They seem to contain different "profiles" with tuned speaker
      settings, sample rates and volume steps (which would be better exposed
      as separate ALSA mixers).
      
      The format of the firmware files seems to have changed a lot over the time,
      so it's not even possible to simply re-use the firmware originally provided
      by the vendor.
      
      Overall, it seems close to impossible to develop a proper mainline driver
      for these amplifiers that could make proper use of the built-in DSP.
      
      This commit implements a compromise: At least the TFA1 family of the
      TFA98xx amplifiers (usually called TFA989x) provide a way to *bypass*
      the DSP using a special register sequence. The register sequence can be
      found in similar variations in the kernel drivers from lots of vendors
      e.g. in [3] and was probably mainly used for factory testing.
      
      With the DSP bypassed, the amplifier acts mostly like a dumb standard
      speaker amplifier, without (hardware) volume control. However, the setup
      is much simpler and it works without any obscure firmware.
      
      This driver implements the DSP bypass combined with chip-specific
      initialization sequences adapted from [2]. Only TFA9895 is supported in
      this initial commit. Except for the lack of volume control I can not hear
      any difference with or without the DSP, it works just fine.
      
      This driver allows the speaker to work on mainline Linux running on the
      Samsung Galaxy A3/A5 (2015) [TFA9895] and Alcatel Idol 3 [TFA9897].
      TFA9897 support will be added in separate patch set later.
      
      [1]: https://product.goodix.com/en/docview/TFA9897%20SDS_Rev.3.1?objectId=47&objectType=document&version=78
      [2]: https://source.codeaurora.org/external/mas/tfa98xx
      [3]: https://github.com/sonyxperiadev/kernel/blob/57b5050e340f40a88e1ddb8d16fd9adb44418923/sound/soc/codecs/tfa98xx.c#L1422-L1462
      
      
      
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      Link: https://lore.kernel.org/r/20210513104129.36583-2-stephan@gerhold.net
      
      
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      af00978a
  14. Apr 07, 2021
  15. Mar 25, 2021
  16. Mar 24, 2021
  17. Mar 18, 2021
  18. Mar 10, 2021
  19. Feb 11, 2021
  20. Feb 08, 2021
  21. Jan 20, 2021
  22. Dec 09, 2020
  23. Nov 30, 2020
  24. Nov 26, 2020
  25. Nov 19, 2020
  26. Nov 10, 2020
  27. Oct 08, 2020
  28. Sep 28, 2020
  29. Sep 10, 2020
  30. Aug 20, 2020
  31. Jul 09, 2020
Loading