[SRU][jammy][pull-request v2] alsa: enable the cirrus-logic side-codec to make the speaker output sound

Hui Wang hui.wang at canonical.com
Mon Mar 21 12:30:12 UTC 2022

BugLink: https://bugs.launchpad.net/bugs/1965496

We have a couple of lenovo latops models which have cirrus-logic side
codec between realtek codec and speaker, it plays a role as amplifier,
we need to enable this side-codec, otherwise the speaker can't output

Backport codec patches and some i2c and acpi detection patches from
mainline kernel and linux-next

boot the patched kernel, run speaker test, both left and right channel
could work well.

[Where problems could occur]
If it could introduce regression, it will be on soc wm_adsp codec
drivers, since most of patch are adding new codec drivers, it will
not touch existing codec drivers. If a machine with wm_adsp codec
can't output sound or record sound, it means this SRU introduce
the regression on wm_adsp driver, but this possibility is very
low, since all patches are picked from mainline kernel.

The following changes since commit 659e1cf637d4da7cfd706b613359f92ef9c7d1f1:

   ALSA: hda/cs8409: Add new Warlock SKUs to patch_cs8409 (2022-03-15 
17:42:37 +0100)

are available in the Git repository at:


for you to fetch changes up to a91f858c5c672c902da61bc63c15fd3718506267:

   UBUNTU: [Config] Add cirruslogic side codec support (2022-03-18 
15:21:54 +0800)

Alexander Sergeyev (1):
       ALSA: hda/realtek: fix speakers and micmute on HP 855 G8

Charles Keepax (19):
       ASoC: wm_adsp: Move check for control existence
       ASoC: wm_adsp: Switch to using wm_coeff_read_ctrl for compressed 
       ASoC: wm_adsp: Move sys_config_size to wm_adsp
       ASoC: wm_adsp: Add support for "toggle" preloaders
       ASoC: cs35l41: Fix use of an uninitialised variable
       ASoC: cs35l41: Use regmap_read_poll_timeout to wait for OTP boot
       ASoC: cs35l41: Combine adjacent register writes
       ASoC: cs35l41: Don't overwrite returned error code
       ASoC: cs35l41: Fixup the error messages
       ASoC: cs35l41: Fix a bunch of trivial code formating/style issues
       misc: cs35l41: Remove unused pdn variable
       ASoC: cs35l41: Change monitor widgets to siggens
       ASoC: cs35l41: Remove incorrect comment
       ASoC: cs35l41: Correct DSP power down
       ASoC: cs35l41: Correct handling of some registers in the cache
       ASoC: cs35l41: Update handling of test key registers
       ASoC: cs35l41: Add support for hibernate memory retention mode
       ALSA: hda: cs35l41: Avoid overwriting register patch
       ALSA: hda: cs35l41: Add calls to newly added test key function

Dan Carpenter (1):
       ALSA: hda: cs35l41: fix double free on error in probe()

David Rhodes (3):
       ASoC: cs35l41: CS35L41 Boosted Smart Amplifier
       ASoC: cs35l41: DSP Support
       ASoC: cs35l41: Add cs35l51/53 IDs

Hui Wang (1):
       UBUNTU: [Config] Add cirruslogic side codec support

Lucas Tanure (19):
       ASoC: cs35l41: Set the max SPI speed for the whole device
       ASoC: cs35l41: Fix link problem
       ASoC: cs35l41: Fix undefined reference to core functions
       ASoC: cs35l41: Convert tables to shared source code
       ASoC: cs35l41: Move cs35l41_otp_unpack to shared code
       ASoC: cs35l41: Move power initializations to reg_sequence
       ASoC: cs35l41: Create shared function for errata patches
       ASoC: cs35l41: Create shared function for setting channels
       ASoC: cs35l41: Create shared function for boost configuration
       ALSA: hda: cs35l41: Add support for CS35L41 in HDA systems
       ALSA: hda: cs35l41: Move cs35l41* calls to its own symbol namespace
       ALSA: hda: cs35l41: Add missing default cases
       ALSA: hda: cs35l41: Make use of the helper function dev_err_probe()
       ALSA: hda: cs35l41: Tidyup code
       ALSA: hda/realtek: Add support for Legion 7 16ACHg6 laptop
       platform/x86: i2c-multi-instantiate: Rename it for a generic 
serial driver name
       platform/x86: serial-multi-instantiate: Reorganize I2C functions
       ALSA: hda/realtek: Add support for HP Laptops
       ACPI / scan: Create platform device for CS35L41

Saranya Gopal (1):
       Revert "platform/x86: i2c-multi-instantiate: Don't create 
platform device for INT3515 ACPI nodes"

Simon Trimmer (13):
       ASoC: wm_adsp: Remove use of snd_ctl_elem_type_t
       ASoC: wm_adsp: Cancel ongoing work when removing controls
       ASoC: wm_adsp: Rename generic DSP support
       ASoC: wm_adsp: Introduce cs_dsp logging macros
       ASoC: wm_adsp: Separate some ASoC and generic functions
       ASoC: wm_adsp: Split DSP power operations into helper functions
       ASoC: wm_adsp: Separate generic cs_dsp_coeff_ctl handling
       ASoC: wm_adsp: Move check of dsp->running to better place
       ASoC: wm_adsp: Pass firmware names as parameters when starting 
DSP core
       ASoC: wm_adsp: move firmware loading to client
       ASoC: wm_adsp: Split out struct cs_dsp from struct wm_adsp
       ASoC: wm_adsp: Separate wm_adsp specifics in cs_dsp_client_ops
       firmware: cs_dsp: add driver to support firmware loading on 
Cirrus Logic DSPs

Stefan Binding (5):
       ALSA: hda/realtek: Add CS35L41 support for Thinkpad laptops
       spi: Create helper API to lookup ACPI info for spi device
       spi: Support selection of the index of the ACPI Spi Resource 
before alloc
       spi: Add API to count spi acpi resources
       platform/x86: serial-multi-instantiate: Add SPI support

Uwe Kleine-König (2):
       ASoC: cs35l41: Make cs35l41_remove() return void
       ALSA: hda: cs35l41: Make cs35l41_hda_remove() return void

  MAINTAINERS                                                |   18 +-
  debian.master/config/annotations                           |   20 +-
  debian.master/config/config.common.ubuntu                  |   10 +-
  drivers/acpi/scan.c                                        |   16 +-
  drivers/firmware/Kconfig                                   |    1 +
  drivers/firmware/Makefile                                  |    1 +
  drivers/firmware/cirrus/Kconfig                            |    5 +
  drivers/firmware/cirrus/Makefile                           |    3 +
  drivers/firmware/cirrus/cs_dsp.c                           | 3109 
  drivers/platform/x86/Kconfig                               |   12 +-
  drivers/platform/x86/Makefile                              |    2 +-
  drivers/platform/x86/i2c-multi-instantiate.c               |  189 -------
  drivers/platform/x86/serial-multi-instantiate.c            |  348 
  drivers/spi/spi.c                                          |  131 ++++-
  include/linux/firmware/cirrus/cs_dsp.h                     |  242 
  {sound/soc/codecs => include/linux/firmware/cirrus}/wmfw.h |    8 +-
  include/linux/spi/spi.h                                    |    7 +
  include/sound/cs35l41.h                                    |  780 
  sound/pci/hda/Kconfig                                      |   29 +
  sound/pci/hda/Makefile                                     |   10 +
  sound/pci/hda/cs35l41_hda.c                                |  542 
  sound/pci/hda/cs35l41_hda.h                                |   69 +++
  sound/pci/hda/cs35l41_hda_i2c.c                            |   68 +++
  sound/pci/hda/cs35l41_hda_spi.c                            |   65 +++
  sound/pci/hda/hda_component.h                              |   20 +
  sound/pci/hda/patch_realtek.c                              |  201 ++++++-
  sound/soc/codecs/Kconfig                                   |   27 +
  sound/soc/codecs/Makefile                                  |    8 +
  sound/soc/codecs/cs35l41-i2c.c                             |  102 ++++
  sound/soc/codecs/cs35l41-lib.c                             | 1040 
  sound/soc/codecs/cs35l41-spi.c                             |  100 ++++
  sound/soc/codecs/cs35l41.c                                 | 1597 
  sound/soc/codecs/cs35l41.h                                 |   60 +++
  sound/soc/codecs/cs47l15.c                                 |   26 +-
  sound/soc/codecs/cs47l24.c                                 |   20 +-
  sound/soc/codecs/cs47l35.c                                 |   26 +-
  sound/soc/codecs/cs47l85.c                                 |   34 +-
  sound/soc/codecs/cs47l90.c                                 |   36 +-
  sound/soc/codecs/cs47l92.c                                 |   20 +-
  sound/soc/codecs/madera.c                                  |   18 +-
  sound/soc/codecs/wm2200.c                                  |   30 +-
  sound/soc/codecs/wm5102.c                                  |   16 +-
  sound/soc/codecs/wm5110.c                                  |   24 +-
  sound/soc/codecs/wm_adsp.c                                 | 3320 
  sound/soc/codecs/wm_adsp.h                                 |  111 +---
  45 files changed, 9114 insertions(+), 3407 deletions(-)
  create mode 100644 drivers/firmware/cirrus/Kconfig
  create mode 100644 drivers/firmware/cirrus/Makefile
  create mode 100644 drivers/firmware/cirrus/cs_dsp.c
  delete mode 100644 drivers/platform/x86/i2c-multi-instantiate.c
  create mode 100644 drivers/platform/x86/serial-multi-instantiate.c
  create mode 100644 include/linux/firmware/cirrus/cs_dsp.h
  rename {sound/soc/codecs => include/linux/firmware/cirrus}/wmfw.h (91%)
  create mode 100644 include/sound/cs35l41.h
  create mode 100644 sound/pci/hda/cs35l41_hda.c
  create mode 100644 sound/pci/hda/cs35l41_hda.h
  create mode 100644 sound/pci/hda/cs35l41_hda_i2c.c
  create mode 100644 sound/pci/hda/cs35l41_hda_spi.c
  create mode 100644 sound/pci/hda/hda_component.h
  create mode 100644 sound/soc/codecs/cs35l41-i2c.c
  create mode 100644 sound/soc/codecs/cs35l41-lib.c
  create mode 100644 sound/soc/codecs/cs35l41-spi.c
  create mode 100644 sound/soc/codecs/cs35l41.c
  create mode 100644 sound/soc/codecs/cs35l41.h

More information about the kernel-team mailing list