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

Hui Wang hui.wang at canonical.com
Sat Mar 19 01:19:56 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 ead0ca00148b78edbafa0b34a8ad2956d52532d1:

   UBUNTU: Ubuntu-oem-5.14-5.14.0-1029.32 (2022-03-18 15:06:46 +0200)

are available in the Git repository at:


for you to fetch changes up to 4947827810a51d9b2b86c3bf5c62a26d4e05b5ad:

   UBUNTU: [Config]: Add cirruslogic side codec support (2022-03-19 
09:14:52 +0800)

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

Charles Keepax (20):
       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: Remove pointless string comparison
       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

Hans de Goede (2):
       i2c: acpi: Add an i2c_acpi_client_count() helper function
       platform/x86: i2c-multi-instantiate: Use the new 
i2c_acpi_client_count() helper

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.oem/config/annotations                              |    2 +-
  debian.oem/config/config.common.ubuntu                     |    9 +-
  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/i2c/i2c-core-acpi.c                                |   32 ++
  drivers/platform/x86/Kconfig                               |   12 +-
  drivers/platform/x86/Makefile                              |    2 +-
  drivers/platform/x86/i2c-multi-instantiate.c               |  214 --------
  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/i2c.h                                        |    5 +
  include/linux/spi/spi.h                                    |    9 +
  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                                 | 3321 
  sound/soc/codecs/wm_adsp.h                                 |  111 +---
  47 files changed, 9134 insertions(+), 3433 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