diff mbox series

ACPI: scan: Create platform device for CS35L56

Message ID 20230726112759.18814-1-rf@opensource.cirrus.com
State New
Headers show
Series ACPI: scan: Create platform device for CS35L56 | expand

Commit Message

Richard Fitzgerald July 26, 2023, 11:27 a.m. UTC
From: Simon Trimmer <simont@opensource.cirrus.com>

The ACPI device CSC3556 is a Cirrus Logic CS35L56 mono amplifier which
is used in multiples, and can be connected either to I2C or SPI.

There will be multiple instances under the same Device() node. Add it
to ignore_serial_bus_ids and handle it in the serial-multi-instantiate
driver.

Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
---
 drivers/acpi/scan.c                             |  1 +
 drivers/platform/x86/serial-multi-instantiate.c | 12 ++++++++++++
 2 files changed, 13 insertions(+)

Comments

Rafael J. Wysocki July 26, 2023, 6:34 p.m. UTC | #1
On Wed, Jul 26, 2023 at 4:13 PM Hans de Goede <hdegoede@redhat.com> wrote:
>
> Hi Richard,
>
> On 7/26/23 13:27, Richard Fitzgerald wrote:
> > From: Simon Trimmer <simont@opensource.cirrus.com>
> >
> > The ACPI device CSC3556 is a Cirrus Logic CS35L56 mono amplifier which
> > is used in multiples, and can be connected either to I2C or SPI.
> >
> > There will be multiple instances under the same Device() node. Add it
> > to ignore_serial_bus_ids and handle it in the serial-multi-instantiate
> > driver.
> >
> > Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
> > Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
>
> Thanks, patch looks good to me:
>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
>
> I have 1 other serial-multi-instantiate.c patches in my fixes branch (see below) and since this just adds new hw-ids I think this can go upstream through my fixes branch too.
>
> Rafael, do you agree with me taking this upstream as a 6.5 fix? And if yes may I have your ack for that ?

Sure.

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

> About that 1 patch, that adds a new IRQ type: IRQ_RESOURCE_AUTO and I wonder if this patch should not use that same new type right from the start:
>
> https://git.kernel.org/pub/scm/linux/kernel/agit/pdx86/platform-drivers-x86.git/commit/?h=fixes&id=676b7c5ecab36274442887ceadd6dee8248a244f
>
> This makes me realize that I should probably have pinged you and ask for feedback on that patch since it was send by a community member rather then by Cirrus. Note this is currently in Linus' master tree, so any fixes to it need to be submitted on top (not that I expect any issues since it still behaves as before on acpi_dev_gpio_irq_get() success and only adds an platform_get_irq() fallback when that fails).
>
> Regards,
>
> Hans
>
>
>
> > ---
> >  drivers/acpi/scan.c                             |  1 +
> >  drivers/platform/x86/serial-multi-instantiate.c | 12 ++++++++++++
> >  2 files changed, 13 insertions(+)
> >
> > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> > index 5b145f1aaa1b..87e385542576 100644
> > --- a/drivers/acpi/scan.c
> > +++ b/drivers/acpi/scan.c
> > @@ -1714,6 +1714,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
> >               {"BSG1160", },
> >               {"BSG2150", },
> >               {"CSC3551", },
> > +             {"CSC3556", },
> >               {"INT33FE", },
> >               {"INT3515", },
> >               /* Non-conforming _HID for Cirrus Logic already released */
> > diff --git a/drivers/platform/x86/serial-multi-instantiate.c b/drivers/platform/x86/serial-multi-instantiate.c
> > index f3dcbdd72fec..dcf2914b97c9 100644
> > --- a/drivers/platform/x86/serial-multi-instantiate.c
> > +++ b/drivers/platform/x86/serial-multi-instantiate.c
> > @@ -316,6 +316,17 @@ static const struct smi_node cs35l41_hda = {
> >       .bus_type = SMI_AUTO_DETECT,
> >  };
> >
> > +static const struct smi_node cs35l56_hda = {
> > +     .instances = {
> > +             { "cs35l56-hda", IRQ_RESOURCE_GPIO, 0 },
> > +             { "cs35l56-hda", IRQ_RESOURCE_GPIO, 0 },
> > +             { "cs35l56-hda", IRQ_RESOURCE_GPIO, 0 },
> > +             { "cs35l56-hda", IRQ_RESOURCE_GPIO, 0 },
> > +             {}
> > +     },
> > +     .bus_type = SMI_AUTO_DETECT,
> > +};
> > +
> >  /*
> >   * Note new device-ids must also be added to ignore_serial_bus_ids in
> >   * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
> > @@ -324,6 +335,7 @@ static const struct acpi_device_id smi_acpi_ids[] = {
> >       { "BSG1160", (unsigned long)&bsg1160_data },
> >       { "BSG2150", (unsigned long)&bsg2150_data },
> >       { "CSC3551", (unsigned long)&cs35l41_hda },
> > +     { "CSC3556", (unsigned long)&cs35l56_hda },
> >       { "INT3515", (unsigned long)&int3515_data },
> >       /* Non-conforming _HID for Cirrus Logic already released */
> >       { "CLSA0100", (unsigned long)&cs35l41_hda },
>
Richard Fitzgerald July 27, 2023, 9:48 a.m. UTC | #2
On 26/7/23 15:13, Hans de Goede wrote:
> Hi Richard,
> 
> On 7/26/23 13:27, Richard Fitzgerald wrote:
>> From: Simon Trimmer <simont@opensource.cirrus.com>
>>
>> The ACPI device CSC3556 is a Cirrus Logic CS35L56 mono amplifier which
>> is used in multiples, and can be connected either to I2C or SPI.
>>
>> There will be multiple instances under the same Device() node. Add it
>> to ignore_serial_bus_ids and handle it in the serial-multi-instantiate
>> driver.
>>
>> Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
>> Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
> 
> Thanks, patch looks good to me:
> 
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
> 
> I have 1 other serial-multi-instantiate.c patches in my fixes branch (see below) and since this just adds new hw-ids I think this can go upstream through my fixes branch too.
> 
> Rafael, do you agree with me taking this upstream as a 6.5 fix? And if yes may I have your ack for that ?
> 
> About that 1 patch, that adds a new IRQ type: IRQ_RESOURCE_AUTO and I wonder if this patch should not use that same new type right from the start:
> 
> https://git.kernel.org/pub/scm/linux/kernel/agit/pdx86/platform-drivers-x86.git/commit/?h=fixes&id=676b7c5ecab36274442887ceadd6dee8248a244f
> 

Link doesn't work, but I think you mean:
https://lore.kernel.org/platform-driver-x86/b9f81a5b-0511-9950-5a20-9e6cbd92d085@redhat.com/T/#t

I'll send a V2 of this CS35L56 patch to use the new IRQ_RESOURCE_AUTO.
Hans de Goede July 27, 2023, 9:52 a.m. UTC | #3
Hi,

On 7/27/23 11:48, Richard Fitzgerald wrote:
> On 26/7/23 15:13, Hans de Goede wrote:
>> Hi Richard,
>>
>> On 7/26/23 13:27, Richard Fitzgerald wrote:
>>> From: Simon Trimmer <simont@opensource.cirrus.com>
>>>
>>> The ACPI device CSC3556 is a Cirrus Logic CS35L56 mono amplifier which
>>> is used in multiples, and can be connected either to I2C or SPI.
>>>
>>> There will be multiple instances under the same Device() node. Add it
>>> to ignore_serial_bus_ids and handle it in the serial-multi-instantiate
>>> driver.
>>>
>>> Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
>>> Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
>>
>> Thanks, patch looks good to me:
>>
>> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
>>
>> I have 1 other serial-multi-instantiate.c patches in my fixes branch (see below) and since this just adds new hw-ids I think this can go upstream through my fixes branch too.
>>
>> Rafael, do you agree with me taking this upstream as a 6.5 fix? And if yes may I have your ack for that ?
>>
>> About that 1 patch, that adds a new IRQ type: IRQ_RESOURCE_AUTO and I wonder if this patch should not use that same new type right from the start:
>>
>> https://git.kernel.org/pub/scm/linux/kernel/agit/pdx86/platform-drivers-x86.git/commit/?h=fixes&id=676b7c5ecab36274442887ceadd6dee8248a244f
>>
> 
> Link doesn't work, but I think you mean:
> https://lore.kernel.org/platform-driver-x86/b9f81a5b-0511-9950-5a20-9e6cbd92d085@redhat.com/T/#t

Right an "a" (probably from ctrl + a) snuk in there, correct link:

https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/commit/?h=fixes&id=676b7c5ecab36274442887ceadd6dee8248a244f

Which is indeed the same patch as you linked.

> I'll send a V2 of this CS35L56 patch to use the new IRQ_RESOURCE_AUTO.

Thanks.

Regards,

Hans
diff mbox series

Patch

diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 5b145f1aaa1b..87e385542576 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1714,6 +1714,7 @@  static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
 		{"BSG1160", },
 		{"BSG2150", },
 		{"CSC3551", },
+		{"CSC3556", },
 		{"INT33FE", },
 		{"INT3515", },
 		/* Non-conforming _HID for Cirrus Logic already released */
diff --git a/drivers/platform/x86/serial-multi-instantiate.c b/drivers/platform/x86/serial-multi-instantiate.c
index f3dcbdd72fec..dcf2914b97c9 100644
--- a/drivers/platform/x86/serial-multi-instantiate.c
+++ b/drivers/platform/x86/serial-multi-instantiate.c
@@ -316,6 +316,17 @@  static const struct smi_node cs35l41_hda = {
 	.bus_type = SMI_AUTO_DETECT,
 };
 
+static const struct smi_node cs35l56_hda = {
+	.instances = {
+		{ "cs35l56-hda", IRQ_RESOURCE_GPIO, 0 },
+		{ "cs35l56-hda", IRQ_RESOURCE_GPIO, 0 },
+		{ "cs35l56-hda", IRQ_RESOURCE_GPIO, 0 },
+		{ "cs35l56-hda", IRQ_RESOURCE_GPIO, 0 },
+		{}
+	},
+	.bus_type = SMI_AUTO_DETECT,
+};
+
 /*
  * Note new device-ids must also be added to ignore_serial_bus_ids in
  * drivers/acpi/scan.c: acpi_device_enumeration_by_parent().
@@ -324,6 +335,7 @@  static const struct acpi_device_id smi_acpi_ids[] = {
 	{ "BSG1160", (unsigned long)&bsg1160_data },
 	{ "BSG2150", (unsigned long)&bsg2150_data },
 	{ "CSC3551", (unsigned long)&cs35l41_hda },
+	{ "CSC3556", (unsigned long)&cs35l56_hda },
 	{ "INT3515", (unsigned long)&int3515_data },
 	/* Non-conforming _HID for Cirrus Logic already released */
 	{ "CLSA0100", (unsigned long)&cs35l41_hda },