* [PATCH v4 0/1] platform/x86: serial-multi-instantiate: ACPI example code
@ 2025-11-26 12:19 Baojun Xu
2025-11-26 12:19 ` [PATCH v4 1/1] platform/x86: serial-multi-instantiate: Add IRQ_RESOURCE_OPT for IRQ missing projects Baojun Xu
0 siblings, 1 reply; 3+ messages in thread
From: Baojun Xu @ 2025-11-26 12:19 UTC (permalink / raw)
To: tiwai, hansg
Cc: ilpo.jarvinen, broonie, andriy.shevchenko, alsa-devel,
shenghao-ding, 13916275206, platform-driver-x86, linux-sound,
linux-kernel, baojun.xu, letitia.tsai
The tas2781-hda supports multi-projects, In some projects,
GpioInt() was dropped due to no IRQ connection.
See the example code below:
But in smi_i2c_probe(), smi_spi_probe() (serial-multi-instantiate.c),
if looking for IRQ by smi_get_irq() fails, it will return an error,
will not add new device, and cause smi_probe() to fail:
[ 2.356546] Serial bus multi instantiate pseudo device driver TXNW2781:00:
error -ENXIO: IRQ index 0 not found
[ 2.356561] Serial bus multi instantiate pseudo device driver TXNW2781:00:
error -ENXIO: Error requesting irq at index 0
So need to add an exception case for these situations.
BTW, this patch will take effect on both I2C and SPI devices.
Device (SPKR)
{
Name (_ADR, One)
Name (_HID, "TXNW2781")
Method (_CRS, 0, NotSerialized)
{
Name (RBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0038, ...)
I2cSerialBusV2 (0x0039, ...)
// GpioInt (Edge, ...) { 0x0000 }
//"GpioInt (...) {}" was commented out due to no IRQ connection.
})
Return (RBUF)
}
}
Baojun Xu (1):
platform/x86: serial-multi-instantiate: Add IRQ_RESOURCE_OPT for IRQ
missing projects
drivers/platform/x86/serial-multi-instantiate.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v4 1/1] platform/x86: serial-multi-instantiate: Add IRQ_RESOURCE_OPT for IRQ missing projects
2025-11-26 12:19 [PATCH v4 0/1] platform/x86: serial-multi-instantiate: ACPI example code Baojun Xu
@ 2025-11-26 12:19 ` Baojun Xu
2025-11-26 12:28 ` Hans de Goede
0 siblings, 1 reply; 3+ messages in thread
From: Baojun Xu @ 2025-11-26 12:19 UTC (permalink / raw)
To: tiwai, hansg
Cc: ilpo.jarvinen, broonie, andriy.shevchenko, alsa-devel,
shenghao-ding, 13916275206, platform-driver-x86, linux-sound,
linux-kernel, baojun.xu, letitia.tsai
The tas2781-hda supports multi-projects. In some projects,
GpioInt() was dropped due to no IRQ connection.
See the example code in the cover letter.
But in smi_i2c_probe(), smi_spi_probe() (serial-multi-instantiate.c),
if looking for IRQ by smi_get_irq() fails, it will return an error,
will not add new device, and cause smi_probe() to fail.
So, we need to add an exception case for these situations.
BTW, this patch will take effect on both I2C and SPI devices.
Signed-off-by: Baojun Xu <baojun.xu@ti.com>
---
v4:
- Change the description for this patch.
v3:
- Add IRQ_RESOURCE_OPT for IRQ missing cases.
v2:
- Remove error ignore, change to AUTO compatible with NONE.
---
drivers/platform/x86/serial-multi-instantiate.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/platform/x86/serial-multi-instantiate.c b/drivers/platform/x86/serial-multi-instantiate.c
index db030b0f176a..1a369334f9cb 100644
--- a/drivers/platform/x86/serial-multi-instantiate.c
+++ b/drivers/platform/x86/serial-multi-instantiate.c
@@ -22,6 +22,7 @@
#define IRQ_RESOURCE_GPIO 1
#define IRQ_RESOURCE_APIC 2
#define IRQ_RESOURCE_AUTO 3
+#define IRQ_RESOURCE_OPT BIT(2)
enum smi_bus_type {
SMI_I2C,
@@ -64,6 +65,10 @@ static int smi_get_irq(struct platform_device *pdev, struct acpi_device *adev,
dev_dbg(&pdev->dev, "Using platform irq\n");
break;
}
+ if (inst->flags & IRQ_RESOURCE_OPT) {
+ dev_dbg(&pdev->dev, "No irq\n");
+ return 0;
+ }
break;
case IRQ_RESOURCE_GPIO:
ret = acpi_dev_gpio_irq_get(adev, inst->irq_idx);
@@ -386,10 +391,10 @@ static const struct smi_node cs35l57_hda = {
static const struct smi_node tas2781_hda = {
.instances = {
- { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 },
- { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 },
- { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 },
- { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 },
+ { "tas2781-hda", IRQ_RESOURCE_AUTO | IRQ_RESOURCE_OPT, 0 },
+ { "tas2781-hda", IRQ_RESOURCE_AUTO | IRQ_RESOURCE_OPT, 0 },
+ { "tas2781-hda", IRQ_RESOURCE_AUTO | IRQ_RESOURCE_OPT, 0 },
+ { "tas2781-hda", IRQ_RESOURCE_AUTO | IRQ_RESOURCE_OPT, 0 },
{}
},
.bus_type = SMI_AUTO_DETECT,
--
2.25.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v4 1/1] platform/x86: serial-multi-instantiate: Add IRQ_RESOURCE_OPT for IRQ missing projects
2025-11-26 12:19 ` [PATCH v4 1/1] platform/x86: serial-multi-instantiate: Add IRQ_RESOURCE_OPT for IRQ missing projects Baojun Xu
@ 2025-11-26 12:28 ` Hans de Goede
0 siblings, 0 replies; 3+ messages in thread
From: Hans de Goede @ 2025-11-26 12:28 UTC (permalink / raw)
To: Baojun Xu, tiwai
Cc: ilpo.jarvinen, broonie, andriy.shevchenko, alsa-devel,
shenghao-ding, 13916275206, platform-driver-x86, linux-sound,
linux-kernel, letitia.tsai
Hi,
On 26-Nov-25 1:19 PM, Baojun Xu wrote:
> The tas2781-hda supports multi-projects. In some projects,
> GpioInt() was dropped due to no IRQ connection.
> See the example code in the cover letter.
Please don't do this, the example code is not that big, people
should not need to go and hunt down the example code, please just
add it to the commit message.
Also please use longer lines (wrap at 75 chars) for the commit msg
and please use empty lines between paragraphs to clearly separate
the paragraphs.
Regards,
Hans
> But in smi_i2c_probe(), smi_spi_probe() (serial-multi-instantiate.c),
> if looking for IRQ by smi_get_irq() fails, it will return an error,
> will not add new device, and cause smi_probe() to fail.
> So, we need to add an exception case for these situations.
> BTW, this patch will take effect on both I2C and SPI devices.
>
> Signed-off-by: Baojun Xu <baojun.xu@ti.com>
> ---
> v4:
> - Change the description for this patch.
> v3:
> - Add IRQ_RESOURCE_OPT for IRQ missing cases.
> v2:
> - Remove error ignore, change to AUTO compatible with NONE.
> ---
> drivers/platform/x86/serial-multi-instantiate.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/platform/x86/serial-multi-instantiate.c b/drivers/platform/x86/serial-multi-instantiate.c
> index db030b0f176a..1a369334f9cb 100644
> --- a/drivers/platform/x86/serial-multi-instantiate.c
> +++ b/drivers/platform/x86/serial-multi-instantiate.c
> @@ -22,6 +22,7 @@
> #define IRQ_RESOURCE_GPIO 1
> #define IRQ_RESOURCE_APIC 2
> #define IRQ_RESOURCE_AUTO 3
> +#define IRQ_RESOURCE_OPT BIT(2)
>
> enum smi_bus_type {
> SMI_I2C,
> @@ -64,6 +65,10 @@ static int smi_get_irq(struct platform_device *pdev, struct acpi_device *adev,
> dev_dbg(&pdev->dev, "Using platform irq\n");
> break;
> }
> + if (inst->flags & IRQ_RESOURCE_OPT) {
> + dev_dbg(&pdev->dev, "No irq\n");
> + return 0;
> + }
> break;
> case IRQ_RESOURCE_GPIO:
> ret = acpi_dev_gpio_irq_get(adev, inst->irq_idx);
> @@ -386,10 +391,10 @@ static const struct smi_node cs35l57_hda = {
>
> static const struct smi_node tas2781_hda = {
> .instances = {
> - { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 },
> - { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 },
> - { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 },
> - { "tas2781-hda", IRQ_RESOURCE_AUTO, 0 },
> + { "tas2781-hda", IRQ_RESOURCE_AUTO | IRQ_RESOURCE_OPT, 0 },
> + { "tas2781-hda", IRQ_RESOURCE_AUTO | IRQ_RESOURCE_OPT, 0 },
> + { "tas2781-hda", IRQ_RESOURCE_AUTO | IRQ_RESOURCE_OPT, 0 },
> + { "tas2781-hda", IRQ_RESOURCE_AUTO | IRQ_RESOURCE_OPT, 0 },
> {}
> },
> .bus_type = SMI_AUTO_DETECT,
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-11-26 12:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-26 12:19 [PATCH v4 0/1] platform/x86: serial-multi-instantiate: ACPI example code Baojun Xu
2025-11-26 12:19 ` [PATCH v4 1/1] platform/x86: serial-multi-instantiate: Add IRQ_RESOURCE_OPT for IRQ missing projects Baojun Xu
2025-11-26 12:28 ` Hans de Goede
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®