mbox series

[00/30,SRU,OEM-5.13,I,U] ALSA: hda/cs8409: Add support for dolphin

Message ID 20210819061427.900601-1-vicamo.yang@canonical.com
Headers show
Series ALSA: hda/cs8409: Add support for dolphin | expand

Message

You-Sheng Yang Aug. 19, 2021, 6:13 a.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1939541

[Impact]

Dolphin devices have CS8409 HDA Bridge connected to two CS42L42 codecs.
Codec 1 supports Headphone and Headset Mic. Codec 2 supports Line Out.

[Fix]

In order to support multiple CS42L42 codecs connected to a CS8409 HDA
Bridge, a changeset of 27 patches is proposed to
https://patchwork.kernel.org/project/alsa-devel/cover/20210811185654.6837-1-vitalyr@opensource.cirrus.com/
(now in linux-next), as well as two additional patches in
https://lore.kernel.org/lkml/20210812183433.6330-1-vitalyr@opensource.cirrus.com/
that fixes pop sounds at insertion of earphone jack and reboot. The
second patch of the latter changeset is on hold because of another fix
series that deprecates the reboot_notify callback of HD-audio by
forcibly doing runtime-suspend at shutdown.

A Ubuntu sauced patch is also added to enable the now stand alone
module snd-hda-codec-cs8409.

[Test Case]

Test on oem dolphin platform, as well as previous cs8409 platforms with
one single codec.

[Where problems could occur]

[Other Info]

This also fixes default sample rate problem that was previously fixed by
a oem-only package oem-fix-audio-cirrus-default-sample-rate.

Lucas Tanure (12):
  ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module
  ALSA: hda/cs8409: Move arrays of configuration to a new file
  ALSA: hda/cs8409: Disable unsolicited response for the first boot
  ALSA: hda/cs8409: Prevent I2C access during suspend time
  ALSA: hda/cs8409: Generalize volume controls
  ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses
  ALSA: hda/cs8409: Avoid setting the same I2C address for every access
  ALSA: hda/cs8409: Avoid re-setting the same page as the last access
  ALSA: hda/cs8409: Support i2c bulk read/write functions
  ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions
  ALSA: hda/cs8409: Move codec properties to its own struct
  ALSA: hda/cs8409: Add support for dolphin

Stefan Binding (17):
  ALSA: hda/cs8409: Use enums for register names and coefficients
  ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization
  ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg
  ALSA: hda/cs8409: Disable unnecessary Ring Sense for
    Cyborg/Warlock/Bullseye
  ALSA: hda/cs8409: Disable unsolicited responses during suspend
  ALSA: hda/cs8409: Mask CS42L42 wake events
  ALSA: hda/cs8409: Simplify CS42L42 jack detect.
  ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol
    events
  ALSA: hda/cs8409: Add Support to disable jack type detection for
    CS42L42
  ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on
    Dolphin
  ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42
  ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction
    waits
  ALSA: hda/cs8409: Remove unnecessary delays
  ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for
    suspend
  ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops
  ALSA: hda/cs8409: Prevent pops and clicks during suspend
  ALSA: hda/cs8409: Prevent pops and clicks during reboot

You-Sheng Yang (1):
  UBUNTU: [Config] Enable Cirrus Logic HDA bridge support

 debian.oem/config/config.common.ubuntu |    1 +
 sound/pci/hda/Kconfig                  |   10 +
 sound/pci/hda/Makefile                 |    2 +
 sound/pci/hda/patch_cirrus.c           | 1074 --------------------
 sound/pci/hda/patch_cs8409-tables.c    |  560 +++++++++++
 sound/pci/hda/patch_cs8409.c           | 1287 ++++++++++++++++++++++++
 sound/pci/hda/patch_cs8409.h           |  369 +++++++
 7 files changed, 2229 insertions(+), 1074 deletions(-)
 create mode 100644 sound/pci/hda/patch_cs8409-tables.c
 create mode 100644 sound/pci/hda/patch_cs8409.c
 create mode 100644 sound/pci/hda/patch_cs8409.h

Comments

You-Sheng Yang Aug. 19, 2021, 7:25 a.m. UTC | #1
On 8/19/21 2:13 PM, You-Sheng Yang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1939541
> 
> [Impact]
> 
> Dolphin devices have CS8409 HDA Bridge connected to two CS42L42 codecs.
> Codec 1 supports Headphone and Headset Mic. Codec 2 supports Line Out.
> 
> [Fix]
> 
> In order to support multiple CS42L42 codecs connected to a CS8409 HDA
> Bridge, a changeset of 27 patches is proposed to
> https://patchwork.kernel.org/project/alsa-devel/cover/20210811185654.6837-1-vitalyr@opensource.cirrus.com/
> (now in linux-next), as well as two additional patches in
> https://lore.kernel.org/lkml/20210812183433.6330-1-vitalyr@opensource.cirrus.com/
> that fixes pop sounds at insertion of earphone jack and reboot. The
> second patch of the latter changeset is on hold because of another fix
> series that deprecates the reboot_notify callback of HD-audio by
> forcibly doing runtime-suspend at shutdown.
> 
> A Ubuntu sauced patch is also added to enable the now stand alone
> module snd-hda-codec-cs8409.
> 
> [Test Case]
> 
> Test on oem dolphin platform, as well as previous cs8409 platforms with
> one single codec.
> 
> [Where problems could occur]

While this is the first platform we have multiple codecs connected to a
CS8409 HDA bridge, we may still have further stability or acoustic
quality issues as we had for previous cirrus platforms.

> [Other Info]
> 
> This also fixes default sample rate problem that was previously fixed by
> a oem-only package oem-fix-audio-cirrus-default-sample-rate.
> 
> Lucas Tanure (12):
>   ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module
>   ALSA: hda/cs8409: Move arrays of configuration to a new file
>   ALSA: hda/cs8409: Disable unsolicited response for the first boot
>   ALSA: hda/cs8409: Prevent I2C access during suspend time
>   ALSA: hda/cs8409: Generalize volume controls
>   ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses
>   ALSA: hda/cs8409: Avoid setting the same I2C address for every access
>   ALSA: hda/cs8409: Avoid re-setting the same page as the last access
>   ALSA: hda/cs8409: Support i2c bulk read/write functions
>   ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions
>   ALSA: hda/cs8409: Move codec properties to its own struct
>   ALSA: hda/cs8409: Add support for dolphin
> 
> Stefan Binding (17):
>   ALSA: hda/cs8409: Use enums for register names and coefficients
>   ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization
>   ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg
>   ALSA: hda/cs8409: Disable unnecessary Ring Sense for
>     Cyborg/Warlock/Bullseye
>   ALSA: hda/cs8409: Disable unsolicited responses during suspend
>   ALSA: hda/cs8409: Mask CS42L42 wake events
>   ALSA: hda/cs8409: Simplify CS42L42 jack detect.
>   ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol
>     events
>   ALSA: hda/cs8409: Add Support to disable jack type detection for
>     CS42L42
>   ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on
>     Dolphin
>   ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42
>   ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction
>     waits
>   ALSA: hda/cs8409: Remove unnecessary delays
>   ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for
>     suspend
>   ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops
>   ALSA: hda/cs8409: Prevent pops and clicks during suspend
>   ALSA: hda/cs8409: Prevent pops and clicks during reboot
> 
> You-Sheng Yang (1):
>   UBUNTU: [Config] Enable Cirrus Logic HDA bridge support
> 
>  debian.oem/config/config.common.ubuntu |    1 +
>  sound/pci/hda/Kconfig                  |   10 +
>  sound/pci/hda/Makefile                 |    2 +
>  sound/pci/hda/patch_cirrus.c           | 1074 --------------------
>  sound/pci/hda/patch_cs8409-tables.c    |  560 +++++++++++
>  sound/pci/hda/patch_cs8409.c           | 1287 ++++++++++++++++++++++++
>  sound/pci/hda/patch_cs8409.h           |  369 +++++++
>  7 files changed, 2229 insertions(+), 1074 deletions(-)
>  create mode 100644 sound/pci/hda/patch_cs8409-tables.c
>  create mode 100644 sound/pci/hda/patch_cs8409.c
>  create mode 100644 sound/pci/hda/patch_cs8409.h
>
Tim Gardner Aug. 19, 2021, 11:48 a.m. UTC | #2
Acked-by: Tim Gardner <tim.gardner@canonical.com>

Good test results. All clean cherry-picks except for one. LGTM.

On 8/19/21 12:13 AM, You-Sheng Yang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1939541
> 
> [Impact]
> 
> Dolphin devices have CS8409 HDA Bridge connected to two CS42L42 codecs.
> Codec 1 supports Headphone and Headset Mic. Codec 2 supports Line Out.
> 
> [Fix]
> 
> In order to support multiple CS42L42 codecs connected to a CS8409 HDA
> Bridge, a changeset of 27 patches is proposed to
> https://patchwork.kernel.org/project/alsa-devel/cover/20210811185654.6837-1-vitalyr@opensource.cirrus.com/
> (now in linux-next), as well as two additional patches in
> https://lore.kernel.org/lkml/20210812183433.6330-1-vitalyr@opensource.cirrus.com/
> that fixes pop sounds at insertion of earphone jack and reboot. The
> second patch of the latter changeset is on hold because of another fix
> series that deprecates the reboot_notify callback of HD-audio by
> forcibly doing runtime-suspend at shutdown.
> 
> A Ubuntu sauced patch is also added to enable the now stand alone
> module snd-hda-codec-cs8409.
> 
> [Test Case]
> 
> Test on oem dolphin platform, as well as previous cs8409 platforms with
> one single codec.
> 
> [Where problems could occur]
> 
> [Other Info]
> 
> This also fixes default sample rate problem that was previously fixed by
> a oem-only package oem-fix-audio-cirrus-default-sample-rate.
> 
> Lucas Tanure (12):
>    ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module
>    ALSA: hda/cs8409: Move arrays of configuration to a new file
>    ALSA: hda/cs8409: Disable unsolicited response for the first boot
>    ALSA: hda/cs8409: Prevent I2C access during suspend time
>    ALSA: hda/cs8409: Generalize volume controls
>    ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses
>    ALSA: hda/cs8409: Avoid setting the same I2C address for every access
>    ALSA: hda/cs8409: Avoid re-setting the same page as the last access
>    ALSA: hda/cs8409: Support i2c bulk read/write functions
>    ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions
>    ALSA: hda/cs8409: Move codec properties to its own struct
>    ALSA: hda/cs8409: Add support for dolphin
> 
> Stefan Binding (17):
>    ALSA: hda/cs8409: Use enums for register names and coefficients
>    ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization
>    ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg
>    ALSA: hda/cs8409: Disable unnecessary Ring Sense for
>      Cyborg/Warlock/Bullseye
>    ALSA: hda/cs8409: Disable unsolicited responses during suspend
>    ALSA: hda/cs8409: Mask CS42L42 wake events
>    ALSA: hda/cs8409: Simplify CS42L42 jack detect.
>    ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol
>      events
>    ALSA: hda/cs8409: Add Support to disable jack type detection for
>      CS42L42
>    ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on
>      Dolphin
>    ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42
>    ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction
>      waits
>    ALSA: hda/cs8409: Remove unnecessary delays
>    ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for
>      suspend
>    ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops
>    ALSA: hda/cs8409: Prevent pops and clicks during suspend
>    ALSA: hda/cs8409: Prevent pops and clicks during reboot
> 
> You-Sheng Yang (1):
>    UBUNTU: [Config] Enable Cirrus Logic HDA bridge support
> 
>   debian.oem/config/config.common.ubuntu |    1 +
>   sound/pci/hda/Kconfig                  |   10 +
>   sound/pci/hda/Makefile                 |    2 +
>   sound/pci/hda/patch_cirrus.c           | 1074 --------------------
>   sound/pci/hda/patch_cs8409-tables.c    |  560 +++++++++++
>   sound/pci/hda/patch_cs8409.c           | 1287 ++++++++++++++++++++++++
>   sound/pci/hda/patch_cs8409.h           |  369 +++++++
>   7 files changed, 2229 insertions(+), 1074 deletions(-)
>   create mode 100644 sound/pci/hda/patch_cs8409-tables.c
>   create mode 100644 sound/pci/hda/patch_cs8409.c
>   create mode 100644 sound/pci/hda/patch_cs8409.h
>
Timo Aaltonen Aug. 19, 2021, 12:34 p.m. UTC | #3
On 19.8.2021 9.13, You-Sheng Yang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1939541
> 
> [Impact]
> 
> Dolphin devices have CS8409 HDA Bridge connected to two CS42L42 codecs.
> Codec 1 supports Headphone and Headset Mic. Codec 2 supports Line Out.
> 
> [Fix]
> 
> In order to support multiple CS42L42 codecs connected to a CS8409 HDA
> Bridge, a changeset of 27 patches is proposed to
> https://patchwork.kernel.org/project/alsa-devel/cover/20210811185654.6837-1-vitalyr@opensource.cirrus.com/
> (now in linux-next), as well as two additional patches in
> https://lore.kernel.org/lkml/20210812183433.6330-1-vitalyr@opensource.cirrus.com/
> that fixes pop sounds at insertion of earphone jack and reboot. The
> second patch of the latter changeset is on hold because of another fix
> series that deprecates the reboot_notify callback of HD-audio by
> forcibly doing runtime-suspend at shutdown.
> 
> A Ubuntu sauced patch is also added to enable the now stand alone
> module snd-hda-codec-cs8409.
> 
> [Test Case]
> 
> Test on oem dolphin platform, as well as previous cs8409 platforms with
> one single codec.
> 
> [Where problems could occur]
> 
> [Other Info]
> 
> This also fixes default sample rate problem that was previously fixed by
> a oem-only package oem-fix-audio-cirrus-default-sample-rate.
> 
> Lucas Tanure (12):
>    ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module
>    ALSA: hda/cs8409: Move arrays of configuration to a new file
>    ALSA: hda/cs8409: Disable unsolicited response for the first boot
>    ALSA: hda/cs8409: Prevent I2C access during suspend time
>    ALSA: hda/cs8409: Generalize volume controls
>    ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses
>    ALSA: hda/cs8409: Avoid setting the same I2C address for every access
>    ALSA: hda/cs8409: Avoid re-setting the same page as the last access
>    ALSA: hda/cs8409: Support i2c bulk read/write functions
>    ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions
>    ALSA: hda/cs8409: Move codec properties to its own struct
>    ALSA: hda/cs8409: Add support for dolphin
> 
> Stefan Binding (17):
>    ALSA: hda/cs8409: Use enums for register names and coefficients
>    ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization
>    ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg
>    ALSA: hda/cs8409: Disable unnecessary Ring Sense for
>      Cyborg/Warlock/Bullseye
>    ALSA: hda/cs8409: Disable unsolicited responses during suspend
>    ALSA: hda/cs8409: Mask CS42L42 wake events
>    ALSA: hda/cs8409: Simplify CS42L42 jack detect.
>    ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol
>      events
>    ALSA: hda/cs8409: Add Support to disable jack type detection for
>      CS42L42
>    ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on
>      Dolphin
>    ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42
>    ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction
>      waits
>    ALSA: hda/cs8409: Remove unnecessary delays
>    ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for
>      suspend
>    ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops
>    ALSA: hda/cs8409: Prevent pops and clicks during suspend
>    ALSA: hda/cs8409: Prevent pops and clicks during reboot
> 
> You-Sheng Yang (1):
>    UBUNTU: [Config] Enable Cirrus Logic HDA bridge support
> 
>   debian.oem/config/config.common.ubuntu |    1 +
>   sound/pci/hda/Kconfig                  |   10 +
>   sound/pci/hda/Makefile                 |    2 +
>   sound/pci/hda/patch_cirrus.c           | 1074 --------------------
>   sound/pci/hda/patch_cs8409-tables.c    |  560 +++++++++++
>   sound/pci/hda/patch_cs8409.c           | 1287 ++++++++++++++++++++++++
>   sound/pci/hda/patch_cs8409.h           |  369 +++++++
>   7 files changed, 2229 insertions(+), 1074 deletions(-)
>   create mode 100644 sound/pci/hda/patch_cs8409-tables.c
>   create mode 100644 sound/pci/hda/patch_cs8409.c
>   create mode 100644 sound/pci/hda/patch_cs8409.h
> 

applied to oem-5.13, thanks
Paolo Pisati Aug. 23, 2021, 1:24 p.m. UTC | #4
On Thu, Aug 19, 2021 at 02:13:56PM +0800, You-Sheng Yang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1939541
Paolo Pisati Sept. 9, 2021, 1:15 p.m. UTC | #5
On Thu, Aug 19, 2021 at 02:13:56PM +0800, You-Sheng Yang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1939541