On Thu, Nov 05, 2020 at 03:54:32PM +0000, Flavio Suligoi wrote: > Hi Mika, > > > > > > > In one of our boards we have an add-on PCI board, with a PCI > > serial > > > > device > > > > > > Exar XR17V352. This device also contains 16 gpios. > > > > > > The exar device drivers work good, both the "8250_exar" and the > > > > "gpio_exar", and > > > > > > I can manage the exar's gpios correctly. > > > > > > The problem is how to assign the gpio-line-names property to a PCI > > > > gpio > > > > > > expanders like this. > > > > > > > > > > > > I tried adding a new device in my ACPI configuration, as: > > > > > > > > > > > > Device (EXAR) > > > > > > { > > > > > > Name (_HID, "13A80352") > > > > > > > > If this is PCI device then you need to have _ADR here instead of _HID. > > > > > > the problem is that the parent bus of this device is not declared in any > > ACPI table. > > > The exar chip is on the bus 7 : > > > > > > 07:00.0 Serial controller: Exar Corp. XR17V3521 Dual PCIe UART (rev 03) > > > > > > and in the _ADR object you can specify device and function only. > > > How can I specify the parent bus? It is not simple … > > > The lspci output is the following: > > > > The parent is the root port the device is connected to and I'm pretty > > sure it exists in the namespace as this seems to be Intel hardware. If > > you run 'lspci -t' it shows you the root port. > > > > The _ADR should be 0 for this one. > > Unfortunately there is bridge in the middle: > > root@debian:~# lspci -t > -[0000:00]-+-00.0 > +-02.0 > +-0e.0 > +-0f.0 > +-12.0 > +-13.0-[01]----00.0 > +-13.1-[02]----00.0 > +-13.2-[03]-- > +-14.0-[04]----00.0 > +-14.1-[05-09]----00.0-[06-09]--+-01.0-[07]----00.0 <-- Exar (bus 7, dev 0, funct 0) > | +-02.0-[08]----00.0 > | \-03.0-[09]-- > +-15.0 > +-16.0 > +-16.1 > +-19.0 > +-19.1 > +-19.2 > +-1f.0 > \-1f.1 > root@debian:~# > > My changes in the ACPI: > > Scope (_SB.PCI0) { > Device (EXAR) > { > Name (_ADR, 0x0000) > .... > > but it doesn't work, because of the bridge. OK, then add the bridge first: Scope (_SB.PCI0.RPX) { Device (BRG) { // Bridge Name (_ADR, 0) Device (EXAR) { // Expander Name (_ADR, 0) } } Or something like that. RPX is the root port 14.1 and if I read the above right both the bridge and the EXAR device have device and function 0.