2024-03-12 20:28:35

by Chris Packham

[permalink] [raw]
Subject: Adding an interrupt to a PCI device via an ACPI entry

Hi All,

Is there a way to add information about a PCI device via an ACPI entry?
I'm trying to deal with a device that has an erratum where regular PCI-e
MSI interrupts don't work. The workaround is to connect a dedicated INT
output line to an interrupt input on the board. The hardware design has
done this but I'm trying to figure out how to make that work with ACPI
describing the hardware.

I know in devicetree land I can do this with something like

&pcic {
                mydevice@1,0 {
                        compatible = "pci1234,5678";
                        reg = <0x00000000 0 0 0 0>;
                        interrupt-parent = <&intc>;
                        interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
                };
};

And then when my driver is bound to device the usual irq resource stuff
will give me the right interrupt line.

Is there a way of expressing this kind of thing in ACPI?

Thanks,
Chris


2024-03-12 21:28:28

by Chris Packham

[permalink] [raw]
Subject: Re: Adding an interrupt to a PCI device via an ACPI entry


On 13/03/24 09:28, Chris Packham wrote:
> Hi All,
>
> Is there a way to add information about a PCI device via an ACPI
> entry? I'm trying to deal with a device that has an erratum where
> regular PCI-e MSI interrupts don't work. The workaround is to connect
> a dedicated INT output line to an interrupt input on the board. The
> hardware design has done this but I'm trying to figure out how to make
> that work with ACPI describing the hardware.
>
> I know in devicetree land I can do this with something like
>
> &pcic {
>                 mydevice@1,0 {
>                         compatible = "pci1234,5678";
>                         reg = <0x00000000 0 0 0 0>;
>                         interrupt-parent = <&intc>;
>                         interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
>                 };
> };
>
> And then when my driver is bound to device the usual irq resource
> stuff will give me the right interrupt line.
>
> Is there a way of expressing this kind of thing in ACPI?

Looking at
https://www.kernel.org/doc/html/latest/firmware-guide/acpi/enumeration.html#pci-hierarchy-representation
seems promising.