mbox series

[v6,00/10] Add support for CS35L41 in HDA systems

Message ID 20211217115708.882525-1-tanureal@opensource.cirrus.com
Headers show
Series Add support for CS35L41 in HDA systems | expand

Message

Lucas tanure Dec. 17, 2021, 11:56 a.m. UTC
Add support for laptops that have CS35L41 connected to an HDA
codec by I2S and direct I2C connection to the CPU.

Laptops that use CS35L41 and are SPI will be added in the future,
after the support for it is resolved at i2c-multi-instantiate driver.
i2c-multi-instantiate thread: https://lkml.org/lkml/2021/12/10/557

Hardware:
 - Some laptops have two CS35L41 amplifiers, connected to Realtek ALC287
   by an I2S bus and by and direct I2C to the CPU.
 - The ALC287 codec is connected to the CPU by an HDA bus.
 - The CS35L41 has a DSP which will require firmware to be loaded.

Architecture:
 - Creation of a library of shared functions for CS35L41 ASoC and HDA
 - HDA codec driver (RealTek) and CS35L41 HDA driver are combined
 by using component binding, where it uses device names to find the
 components and bind to the master
 - The HDA CS35L41 driver applies pre-defined registers sequences
 for each action in playback for HDA Sound card

Changes from V5:
 - Fix build issues reported by Intel Test Bot
 - Check devm_kasprintf return
 - Add ACPI dependency to HDA drivers
V5: https://lkml.org/lkml/2021/12/16/430

Changes from V4:
 - Save index received from ACPI for latter use in DSP Support
 - Move CS35L41_DSP1_CCM_CORE_CTRL to regmap_write so doesn't
affect DSP hibernation feature
V4: https://lkml.org/lkml/2021/12/14/487

Changes from V3:
 - SPI bus driver starter added
 - Use separate modules approach instead of liking library
 - Add CSC3551 ACPI _HID for more I2C laptops
 - Removed regulators from HDA driver
 - Add note about Non-conforming _HID
V3: https://lkml.org/lkml/2021/11/23/723

Changes from V2:
 - Not an RFC
 - Create a new HDA driver for CS35L41 instead of using the ASoC one
 - Use component binding and device names to find the CS35L41 driver
 - Create a shared library for ASoC and HDA CS35L41 drivers
v2: https://lkml.org/lkml/2021/10/8/344

Lucas Tanure (9):
  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
  hda: cs35l41: Add support for CS35L41 in HDA systems
  ACPI / scan: Create platform device for CLSA0100 and CSC3551 ACPI
    nodes
  ALSA: hda/realtek: Add support for Legion 7 16ACHg6 laptop

Stefan Binding (1):
  ALSA: hda/realtek: Add CS35L41 support for Thinkpad laptops

 MAINTAINERS                                   |   2 +
 drivers/acpi/scan.c                           |   3 +
 drivers/platform/x86/i2c-multi-instantiate.c  |  11 +
 include/sound/cs35l41.h                       | 739 ++++++++++++++++++
 sound/pci/hda/Kconfig                         |  29 +
 sound/pci/hda/Makefile                        |  10 +
 sound/pci/hda/cs35l41_hda.c                   | 527 +++++++++++++
 sound/pci/hda/cs35l41_hda.h                   |  69 ++
 sound/pci/hda/cs35l41_hda_i2c.c               |  66 ++
 sound/pci/hda/cs35l41_hda_spi.c               |  63 ++
 sound/pci/hda/hda_component.h                 |  20 +
 sound/pci/hda/patch_realtek.c                 | 146 ++++
 sound/soc/codecs/Kconfig                      |  11 +-
 sound/soc/codecs/Makefile                     |   4 +-
 sound/soc/codecs/cs35l41-i2c.c                |   1 -
 .../{cs35l41-tables.c => cs35l41-lib.c}       | 355 ++++++++-
 sound/soc/codecs/cs35l41-spi.c                |   1 -
 sound/soc/codecs/cs35l41.c                    | 360 +--------
 sound/soc/codecs/cs35l41.h                    | 734 -----------------
 19 files changed, 2055 insertions(+), 1096 deletions(-)
 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
 rename sound/soc/codecs/{cs35l41-tables.c => cs35l41-lib.c} (71%)

Comments

Rafael J. Wysocki Dec. 17, 2021, 5:19 p.m. UTC | #1
On Fri, Dec 17, 2021 at 12:57 PM Lucas Tanure
<tanureal@opensource.cirrus.com> wrote:
>
> The ACPI device with CLSA0100 or CSC3551 is a sound card
> with multiple instances of CS35L41 connectec by I2C to

"connected" I suppose?

> the main CPU.
>
> We add an ID to the i2c_multi_instantiate_ids list to enumerate
> all I2C slaves correctly.
>
> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>

This requires an ACK from Hans.

If you receive one, please feel free to add my ACK to it too.

Thanks!

> ---
>  drivers/acpi/scan.c                          |  3 +++
>  drivers/platform/x86/i2c-multi-instantiate.c | 11 +++++++++++
>  2 files changed, 14 insertions(+)
>
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index b7a6b982226e..8740cfa11f59 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -1712,8 +1712,11 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
>         static const struct acpi_device_id i2c_multi_instantiate_ids[] = {
>                 {"BSG1160", },
>                 {"BSG2150", },
> +               {"CSC3551", },
>                 {"INT33FE", },
>                 {"INT3515", },
> +               /* Non-conforming _HID for Cirrus Logic already released */
> +               {"CLSA0100", },
>                 {}
>         };
>
> diff --git a/drivers/platform/x86/i2c-multi-instantiate.c b/drivers/platform/x86/i2c-multi-instantiate.c
> index 4956a1df5b90..a889789b966c 100644
> --- a/drivers/platform/x86/i2c-multi-instantiate.c
> +++ b/drivers/platform/x86/i2c-multi-instantiate.c
> @@ -147,6 +147,14 @@ static const struct i2c_inst_data int3515_data[]  = {
>         {}
>  };
>
> +static const struct i2c_inst_data cs35l41_hda[] = {
> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> +       {}
> +};
> +
>  /*
>   * Note new device-ids must also be added to i2c_multi_instantiate_ids in
>   * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
> @@ -154,7 +162,10 @@ static const struct i2c_inst_data int3515_data[]  = {
>  static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = {
>         { "BSG1160", (unsigned long)bsg1160_data },
>         { "BSG2150", (unsigned long)bsg2150_data },
> +       { "CSC3551", (unsigned long)cs35l41_hda },
>         { "INT3515", (unsigned long)int3515_data },
> +       /* Non-conforming _HID for Cirrus Logic already released */
> +       { "CLSA0100", (unsigned long)cs35l41_hda },
>         { }
>  };
>  MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids);
> --
> 2.34.1
>
Hans de Goede Dec. 17, 2021, 6:26 p.m. UTC | #2
Hi,

On 12/17/21 18:19, Rafael J. Wysocki wrote:
> On Fri, Dec 17, 2021 at 12:57 PM Lucas Tanure
> <tanureal@opensource.cirrus.com> wrote:
>>
>> The ACPI device with CLSA0100 or CSC3551 is a sound card
>> with multiple instances of CS35L41 connectec by I2C to
> 
> "connected" I suppose?
> 
>> the main CPU.
>>
>> We add an ID to the i2c_multi_instantiate_ids list to enumerate
>> all I2C slaves correctly.
>>
>> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
> 
> This requires an ACK from Hans.
> 
> If you receive one, please feel free to add my ACK to it too.

One problem which I see here is that this change conflicts with
this series:

https://lore.kernel.org/all/20211210154050.3713-1-sbinding@opensource.cirrus.com/

I have reviewing that series on my todo list.

One interesting question for you (Rafael) about that series is
that i2c-multi-instantiate.c, which after the series also handles
spi devices,is being moved to drivers/acpi .

This is fine with me, but I wonder if it would not be better
to keep it under drivers/platform/x86 ? Since the new SPI
use-cases are also all on x86 laptops AFAICT.

But back to this series, as said the 2 series conflict, since
both are being submitted by @opensource.cirrus.com people,
it would be good if the Cirrus folks can decide in which
order these series should be merged.

It might be best to just move this one patch to the other series?
Thus removing the conflict between the 2 series.

Regards,

Hans



>> ---
>>  drivers/acpi/scan.c                          |  3 +++
>>  drivers/platform/x86/i2c-multi-instantiate.c | 11 +++++++++++
>>  2 files changed, 14 insertions(+)
>>
>> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
>> index b7a6b982226e..8740cfa11f59 100644
>> --- a/drivers/acpi/scan.c
>> +++ b/drivers/acpi/scan.c
>> @@ -1712,8 +1712,11 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
>>         static const struct acpi_device_id i2c_multi_instantiate_ids[] = {
>>                 {"BSG1160", },
>>                 {"BSG2150", },
>> +               {"CSC3551", },
>>                 {"INT33FE", },
>>                 {"INT3515", },
>> +               /* Non-conforming _HID for Cirrus Logic already released */
>> +               {"CLSA0100", },
>>                 {}
>>         };
>>
>> diff --git a/drivers/platform/x86/i2c-multi-instantiate.c b/drivers/platform/x86/i2c-multi-instantiate.c
>> index 4956a1df5b90..a889789b966c 100644
>> --- a/drivers/platform/x86/i2c-multi-instantiate.c
>> +++ b/drivers/platform/x86/i2c-multi-instantiate.c
>> @@ -147,6 +147,14 @@ static const struct i2c_inst_data int3515_data[]  = {
>>         {}
>>  };
>>
>> +static const struct i2c_inst_data cs35l41_hda[] = {
>> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>> +       {}
>> +};
>> +
>>  /*
>>   * Note new device-ids must also be added to i2c_multi_instantiate_ids in
>>   * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
>> @@ -154,7 +162,10 @@ static const struct i2c_inst_data int3515_data[]  = {
>>  static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = {
>>         { "BSG1160", (unsigned long)bsg1160_data },
>>         { "BSG2150", (unsigned long)bsg2150_data },
>> +       { "CSC3551", (unsigned long)cs35l41_hda },
>>         { "INT3515", (unsigned long)int3515_data },
>> +       /* Non-conforming _HID for Cirrus Logic already released */
>> +       { "CLSA0100", (unsigned long)cs35l41_hda },
>>         { }
>>  };
>>  MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids);
>> --
>> 2.34.1
>>
>
Mark Brown Dec. 20, 2021, 1:01 p.m. UTC | #3
On Fri, Dec 17, 2021 at 07:26:51PM +0100, Hans de Goede wrote:

> This is fine with me, but I wonder if it would not be better
> to keep it under drivers/platform/x86 ? Since the new SPI
> use-cases are also all on x86 laptops AFAICT.

Someone's going to end up using it for one of the Arm devices with ACPI,
*especially* if it's put in drivers/platform/x86.
Stefan Binding Dec. 20, 2021, 5:24 p.m. UTC | #4
Hi,

> -----Original Message-----
> From: Hans de Goede <hdegoede@redhat.com>
> Sent: 17 December 2021 18:27
> To: Rafael J. Wysocki <rafael@kernel.org>; Lucas Tanure
> <tanureal@opensource.cirrus.com>; Stefan Binding
> <sbinding@opensource.cirrus.com>
> Cc: Len Brown <lenb@kernel.org>; Mark Gross <markgross@kernel.org>;
> Liam Girdwood <lgirdwood@gmail.com>; Jaroslav Kysela <perex@perex.cz>;
> Mark Brown <broonie@kernel.org>; Takashi Iwai <tiwai@suse.com>;
> moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM...
> <alsa-devel@alsa-project.org>; ACPI Devel Maling List <linux-
> acpi@vger.kernel.org>; patches@opensource.cirrus.com; Platform Driver
> <platform-driver-x86@vger.kernel.org>; Linux Kernel Mailing List <linux-
> kernel@vger.kernel.org>
> Subject: Re: [PATCH v6 08/10] ACPI / scan: Create platform device for
> CLSA0100 and CSC3551 ACPI nodes
> 
> Hi,
> 
> On 12/17/21 18:19, Rafael J. Wysocki wrote:
> > On Fri, Dec 17, 2021 at 12:57 PM Lucas Tanure
> > <tanureal@opensource.cirrus.com> wrote:
> >>
> >> The ACPI device with CLSA0100 or CSC3551 is a sound card
> >> with multiple instances of CS35L41 connectec by I2C to
> >
> > "connected" I suppose?
> >
> >> the main CPU.
> >>
> >> We add an ID to the i2c_multi_instantiate_ids list to enumerate
> >> all I2C slaves correctly.
> >>
> >> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
> >
> > This requires an ACK from Hans.
> >
> > If you receive one, please feel free to add my ACK to it too.
> 
> One problem which I see here is that this change conflicts with
> this series:
> 
> https://lore.kernel.org/all/20211210154050.3713-1-
> sbinding@opensource.cirrus.com/
> 
> I have reviewing that series on my todo list.
> 
> One interesting question for you (Rafael) about that series is
> that i2c-multi-instantiate.c, which after the series also handles
> spi devices,is being moved to drivers/acpi .
> 
> This is fine with me, but I wonder if it would not be better
> to keep it under drivers/platform/x86 ? Since the new SPI
> use-cases are also all on x86 laptops AFAICT.
> 
> But back to this series, as said the 2 series conflict, since
> both are being submitted by @opensource.cirrus.com people,
> it would be good if the Cirrus folks can decide in which
> order these series should be merged.
> 
> It might be best to just move this one patch to the other series?
> Thus removing the conflict between the 2 series.
> 
> Regards,
> 
> Hans
> 

We don’t really have a preference which order these two chains 
should be merged in. We would rebase the other chain if one
got merged first.
If pushed for an answer, maybe:
https://lore.kernel.org/all/20211210154050.3713-1-sbinding@opensource.cirrus.com/
should be merged first?

Thanks,
Stefan

> 
> 
> >> ---
> >>  drivers/acpi/scan.c                          |  3 +++
> >>  drivers/platform/x86/i2c-multi-instantiate.c | 11 +++++++++++
> >>  2 files changed, 14 insertions(+)
> >>
> >> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> >> index b7a6b982226e..8740cfa11f59 100644
> >> --- a/drivers/acpi/scan.c
> >> +++ b/drivers/acpi/scan.c
> >> @@ -1712,8 +1712,11 @@ static bool
> acpi_device_enumeration_by_parent(struct acpi_device *device)
> >>         static const struct acpi_device_id i2c_multi_instantiate_ids[] = {
> >>                 {"BSG1160", },
> >>                 {"BSG2150", },
> >> +               {"CSC3551", },
> >>                 {"INT33FE", },
> >>                 {"INT3515", },
> >> +               /* Non-conforming _HID for Cirrus Logic already released */
> >> +               {"CLSA0100", },
> >>                 {}
> >>         };
> >>
> >> diff --git a/drivers/platform/x86/i2c-multi-instantiate.c
> b/drivers/platform/x86/i2c-multi-instantiate.c
> >> index 4956a1df5b90..a889789b966c 100644
> >> --- a/drivers/platform/x86/i2c-multi-instantiate.c
> >> +++ b/drivers/platform/x86/i2c-multi-instantiate.c
> >> @@ -147,6 +147,14 @@ static const struct i2c_inst_data int3515_data[]  =
> {
> >>         {}
> >>  };
> >>
> >> +static const struct i2c_inst_data cs35l41_hda[] = {
> >> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> >> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> >> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> >> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
> >> +       {}
> >> +};
> >> +
> >>  /*
> >>   * Note new device-ids must also be added to i2c_multi_instantiate_ids in
> >>   * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
> >> @@ -154,7 +162,10 @@ static const struct i2c_inst_data int3515_data[]  =
> {
> >>  static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = {
> >>         { "BSG1160", (unsigned long)bsg1160_data },
> >>         { "BSG2150", (unsigned long)bsg2150_data },
> >> +       { "CSC3551", (unsigned long)cs35l41_hda },
> >>         { "INT3515", (unsigned long)int3515_data },
> >> +       /* Non-conforming _HID for Cirrus Logic already released */
> >> +       { "CLSA0100", (unsigned long)cs35l41_hda },
> >>         { }
> >>  };
> >>  MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids);
> >> --
> >> 2.34.1
> >>
> >
Mark Brown Dec. 31, 2021, 2:39 p.m. UTC | #5
On Fri, 17 Dec 2021 11:56:58 +0000, Lucas Tanure wrote:
> Add support for laptops that have CS35L41 connected to an HDA
> codec by I2S and direct I2C connection to the CPU.
> 
> Laptops that use CS35L41 and are SPI will be added in the future,
> after the support for it is resolved at i2c-multi-instantiate driver.
> i2c-multi-instantiate thread: https://lkml.org/lkml/2021/12/10/557
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[01/10] ASoC: cs35l41: Convert tables to shared source code
        commit: a87d42227cf5614fe0040ddd1fe642c54298b42c
[02/10] ASoC: cs35l41: Move cs35l41_otp_unpack to shared code
        commit: fe120d4cb6f6cd03007239e7c578b8703fe6d336
[03/10] ASoC: cs35l41: Move power initializations to reg_sequence
        commit: 062ce0593315e22aac527389dd6dd4328c49f0fb
[04/10] ASoC: cs35l41: Create shared function for errata patches
        commit: 8b2278604b6de27329ec7ed82ca696c4751111b6
[05/10] ASoC: cs35l41: Create shared function for setting channels
        commit: 3bc3e3da657f17c14df8ae8fab58183407bd7521
[06/10] ASoC: cs35l41: Create shared function for boost configuration
        commit: e8e4fcc047c6e0c5411faeb8cc29aed2e5036a00

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
Takashi Iwai Jan. 4, 2022, 1:07 p.m. UTC | #6
On Fri, 31 Dec 2021 15:39:54 +0100,
Mark Brown wrote:
> 
> On Fri, 17 Dec 2021 11:56:58 +0000, Lucas Tanure wrote:
> > Add support for laptops that have CS35L41 connected to an HDA
> > codec by I2S and direct I2C connection to the CPU.
> > 
> > Laptops that use CS35L41 and are SPI will be added in the future,
> > after the support for it is resolved at i2c-multi-instantiate driver.
> > i2c-multi-instantiate thread: https://lkml.org/lkml/2021/12/10/557
> > 
> > [...]
> 
> Applied to
> 
>    https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
> 
> Thanks!
> 
> [01/10] ASoC: cs35l41: Convert tables to shared source code
>         commit: a87d42227cf5614fe0040ddd1fe642c54298b42c
> [02/10] ASoC: cs35l41: Move cs35l41_otp_unpack to shared code
>         commit: fe120d4cb6f6cd03007239e7c578b8703fe6d336
> [03/10] ASoC: cs35l41: Move power initializations to reg_sequence
>         commit: 062ce0593315e22aac527389dd6dd4328c49f0fb
> [04/10] ASoC: cs35l41: Create shared function for errata patches
>         commit: 8b2278604b6de27329ec7ed82ca696c4751111b6
> [05/10] ASoC: cs35l41: Create shared function for setting channels
>         commit: 3bc3e3da657f17c14df8ae8fab58183407bd7521
> [06/10] ASoC: cs35l41: Create shared function for boost configuration
>         commit: e8e4fcc047c6e0c5411faeb8cc29aed2e5036a00

Mark, could you send a PR including those for 5.17?
The rest HD-audio part of the patch set depends on this new ASoC codec
stuff (at least Kconfig), so I can't apply the patches before merging
those.  The ACPI patch might be still not applicable through my tree,
but it can be taken independently.


thanks,

Takashi
Takashi Iwai Jan. 5, 2022, 4:32 p.m. UTC | #7
On Tue, 04 Jan 2022 14:07:51 +0100,
Takashi Iwai wrote:
> 
> On Fri, 31 Dec 2021 15:39:54 +0100,
> Mark Brown wrote:
> > 
> > On Fri, 17 Dec 2021 11:56:58 +0000, Lucas Tanure wrote:
> > > Add support for laptops that have CS35L41 connected to an HDA
> > > codec by I2S and direct I2C connection to the CPU.
> > > 
> > > Laptops that use CS35L41 and are SPI will be added in the future,
> > > after the support for it is resolved at i2c-multi-instantiate driver.
> > > i2c-multi-instantiate thread: https://lkml.org/lkml/2021/12/10/557
> > > 
> > > [...]
> > 
> > Applied to
> > 
> >    https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
> > 
> > Thanks!
> > 
> > [01/10] ASoC: cs35l41: Convert tables to shared source code
> >         commit: a87d42227cf5614fe0040ddd1fe642c54298b42c
> > [02/10] ASoC: cs35l41: Move cs35l41_otp_unpack to shared code
> >         commit: fe120d4cb6f6cd03007239e7c578b8703fe6d336
> > [03/10] ASoC: cs35l41: Move power initializations to reg_sequence
> >         commit: 062ce0593315e22aac527389dd6dd4328c49f0fb
> > [04/10] ASoC: cs35l41: Create shared function for errata patches
> >         commit: 8b2278604b6de27329ec7ed82ca696c4751111b6
> > [05/10] ASoC: cs35l41: Create shared function for setting channels
> >         commit: 3bc3e3da657f17c14df8ae8fab58183407bd7521
> > [06/10] ASoC: cs35l41: Create shared function for boost configuration
> >         commit: e8e4fcc047c6e0c5411faeb8cc29aed2e5036a00
> 
> Mark, could you send a PR including those for 5.17?
> The rest HD-audio part of the patch set depends on this new ASoC codec
> stuff (at least Kconfig), so I can't apply the patches before merging
> those.  The ACPI patch might be still not applicable through my tree,
> but it can be taken independently.

Now I merged Mark's asoc tree, and applied the patches 7, 9 and 10.
  ALSA: hda: cs35l41: Add support for CS35L41 in HDA systems
  ALSA: hda/realtek: Add support for Legion 7 16ACHg6 laptop
  ALSA: hda/realtek: Add CS35L41 support for Thinkpad laptops

The patches 9 and 10 have been slightly modified to adjust the quirk
entry positions.

The only missing patch is the ACPI patch.  I'm open in which way to
take; it's fine to be applied via other trees.

Let me know your favorite.


thanks,

Takashi
Lucas tanure Jan. 12, 2022, 1:05 p.m. UTC | #8
On 12/20/21 17:24, Stefan Binding wrote:
> Hi,
> 
>> -----Original Message-----
>> From: Hans de Goede <hdegoede@redhat.com>
>> Sent: 17 December 2021 18:27
>> To: Rafael J. Wysocki <rafael@kernel.org>; Lucas Tanure
>> <tanureal@opensource.cirrus.com>; Stefan Binding
>> <sbinding@opensource.cirrus.com>
>> Cc: Len Brown <lenb@kernel.org>; Mark Gross <markgross@kernel.org>;
>> Liam Girdwood <lgirdwood@gmail.com>; Jaroslav Kysela <perex@perex.cz>;
>> Mark Brown <broonie@kernel.org>; Takashi Iwai <tiwai@suse.com>;
>> moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM...
>> <alsa-devel@alsa-project.org>; ACPI Devel Maling List <linux-
>> acpi@vger.kernel.org>; patches@opensource.cirrus.com; Platform Driver
>> <platform-driver-x86@vger.kernel.org>; Linux Kernel Mailing List <linux-
>> kernel@vger.kernel.org>
>> Subject: Re: [PATCH v6 08/10] ACPI / scan: Create platform device for
>> CLSA0100 and CSC3551 ACPI nodes
>>
>> Hi,
>>
>> On 12/17/21 18:19, Rafael J. Wysocki wrote:
>>> On Fri, Dec 17, 2021 at 12:57 PM Lucas Tanure
>>> <tanureal@opensource.cirrus.com> wrote:
>>>>
>>>> The ACPI device with CLSA0100 or CSC3551 is a sound card
>>>> with multiple instances of CS35L41 connectec by I2C to
>>>
>>> "connected" I suppose?
>>>
>>>> the main CPU.
>>>>
>>>> We add an ID to the i2c_multi_instantiate_ids list to enumerate
>>>> all I2C slaves correctly.
>>>>
>>>> Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
>>>
>>> This requires an ACK from Hans.
>>>
>>> If you receive one, please feel free to add my ACK to it too.
>>
>> One problem which I see here is that this change conflicts with
>> this series:
>>
>> https://lore.kernel.org/all/20211210154050.3713-1-
>> sbinding@opensource.cirrus.com/
>>
>> I have reviewing that series on my todo list.
>>
>> One interesting question for you (Rafael) about that series is
>> that i2c-multi-instantiate.c, which after the series also handles
>> spi devices,is being moved to drivers/acpi .
>>
>> This is fine with me, but I wonder if it would not be better
>> to keep it under drivers/platform/x86 ? Since the new SPI
>> use-cases are also all on x86 laptops AFAICT.
>>
>> But back to this series, as said the 2 series conflict, since
>> both are being submitted by @opensource.cirrus.com people,
>> it would be good if the Cirrus folks can decide in which
>> order these series should be merged.
>>
>> It might be best to just move this one patch to the other series?
>> Thus removing the conflict between the 2 series.
>>
>> Regards,
>>
>> Hans
>>
> 
> We don’t really have a preference which order these two chains
> should be merged in. We would rebase the other chain if one
> got merged first.
> If pushed for an answer, maybe:
> https://lore.kernel.org/all/20211210154050.3713-1-sbinding@opensource.cirrus.com/
> should be merged first?
> 
> Thanks,
> Stefan
> 
>>
>>
>>>> ---
>>>>   drivers/acpi/scan.c                          |  3 +++
>>>>   drivers/platform/x86/i2c-multi-instantiate.c | 11 +++++++++++
>>>>   2 files changed, 14 insertions(+)
>>>>
>>>> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
>>>> index b7a6b982226e..8740cfa11f59 100644
>>>> --- a/drivers/acpi/scan.c
>>>> +++ b/drivers/acpi/scan.c
>>>> @@ -1712,8 +1712,11 @@ static bool
>> acpi_device_enumeration_by_parent(struct acpi_device *device)
>>>>          static const struct acpi_device_id i2c_multi_instantiate_ids[] = {
>>>>                  {"BSG1160", },
>>>>                  {"BSG2150", },
>>>> +               {"CSC3551", },
>>>>                  {"INT33FE", },
>>>>                  {"INT3515", },
>>>> +               /* Non-conforming _HID for Cirrus Logic already released */
>>>> +               {"CLSA0100", },
>>>>                  {}
>>>>          };
>>>>
>>>> diff --git a/drivers/platform/x86/i2c-multi-instantiate.c
>> b/drivers/platform/x86/i2c-multi-instantiate.c
>>>> index 4956a1df5b90..a889789b966c 100644
>>>> --- a/drivers/platform/x86/i2c-multi-instantiate.c
>>>> +++ b/drivers/platform/x86/i2c-multi-instantiate.c
>>>> @@ -147,6 +147,14 @@ static const struct i2c_inst_data int3515_data[]  =
>> {
>>>>          {}
>>>>   };
>>>>
>>>> +static const struct i2c_inst_data cs35l41_hda[] = {
>>>> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>>>> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>>>> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>>>> +       { "cs35l41-hda", IRQ_RESOURCE_GPIO, 0 },
>>>> +       {}
>>>> +};
>>>> +
>>>>   /*
>>>>    * Note new device-ids must also be added to i2c_multi_instantiate_ids in
>>>>    * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
>>>> @@ -154,7 +162,10 @@ static const struct i2c_inst_data int3515_data[]  =
>> {
>>>>   static const struct acpi_device_id i2c_multi_inst_acpi_ids[] = {
>>>>          { "BSG1160", (unsigned long)bsg1160_data },
>>>>          { "BSG2150", (unsigned long)bsg2150_data },
>>>> +       { "CSC3551", (unsigned long)cs35l41_hda },
>>>>          { "INT3515", (unsigned long)int3515_data },
>>>> +       /* Non-conforming _HID for Cirrus Logic already released */
>>>> +       { "CLSA0100", (unsigned long)cs35l41_hda },
>>>>          { }
>>>>   };
>>>>   MODULE_DEVICE_TABLE(acpi, i2c_multi_inst_acpi_ids);
>>>> --
>>>> 2.34.1
>>>>
>>>
> 
> 
As the ic2-multi-instantiate patch chain is still being worked out, we 
would like to submit a new chain for CLSA0100 id and a few fixes for the 
HDA cs35l41 driver.
And to avoid conflicts the ic2-multi-instantiate patch chain will wait 
for this new patch chain to be merged.

Thanks,
Lucas Tanure
Cameron Berkenpas Jan. 12, 2022, 8 p.m. UTC | #9
Hello,

Will this also include adding support for ID's matching CLSA0101?

Thanks,

-Cameron

On 1/12/22 05:05, Lucas tanure wrote:
> As the ic2-multi-instantiate patch chain is still being worked out, we 
> would like to submit a new chain for CLSA0100 id and a few fixes for 
> the HDA cs35l41 driver.
> And to avoid conflicts the ic2-multi-instantiate patch chain will wait 
> for this new patch chain to be merged.
>
> Thanks,
> Lucas Tanure
Lucas tanure Jan. 13, 2022, 3:52 p.m. UTC | #10
On 1/12/22 8:00 PM, Cameron Berkenpas <cam@neo-zeon.de> wrote:
> Hello,
> 
> Will this also include adding support for ID's matching CLSA0101?
> 
> Thanks,
> 
> -Cameron
> 
> On 1/12/22 05:05, Lucas tanure wrote:
> > As the ic2-multi-instantiate patch chain is still being worked out, we 
> > would like to submit a new chain for CLSA0100 id and a few fixes for 
> > the HDA cs35l41 driver.
> > And to avoid conflicts the ic2-multi-instantiate patch chain will wait 
> > for this new patch chain to be merged.
> >
> > Thanks,
> > Lucas Tanure 
> 
> 
Hi, 
We have the plan to support CLSA0101 in the near future, but not for this current patch series.
Lucas