<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div><br></div><div><br></div><div>On Fri, 14 Jun 2019 12:09 -07:00, Valdis Klētnieks <valdis.kletnieks@vt.edu> wrote:<br></div><blockquote type="cite" id="qt"><div>On Fri, 14 Jun 2019 12:01:28 -0700, you said:<br></div><div><br></div><div>> > static const struct pci_device_id pch_gpio_pcidev_id[] = {<br></div><div>> >  { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) },<br></div><div>> >  { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) },<br></div><div>> >  { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8043) },<br></div><div>> >  { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8803) },<br></div><div>> >  { 0, }<br></div><div>> > };<br></div><div>> > MODULE_DEVICE_TABLE(pci, pch_gpio_pcidev_id);<br></div><div><br></div><div>> It is a PCI device with 8086/9d20 IDs.<br></div><div><br></div><div>Give this patch a try, if it works I'll push it upstream for you...<br></div><div><br></div><div>diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c<br></div><div>index 1d99293096f2..19884b5b2a74 100644<br></div><div>--- a/drivers/gpio/gpio-pch.c<br></div><div>+++ b/drivers/gpio/gpio-pch.c<br></div><div>@@ -439,6 +439,7 @@ static SIMPLE_DEV_PM_OPS(pch_gpio_pm_ops, pch_gpio_suspend, pch_gpio_resume);<br></div><div><br></div><div>static const struct pci_device_id pch_gpio_pcidev_id[] = {<br></div><div>{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) },<br></div><div>+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x9d20) },<br></div><div>{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) },<br></div><div>{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8043) },<br></div><div>{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8803) },<br></div><div><br></div></blockquote><div><br></div><div><br></div><div>I did try this. It did not enumerate.<br></div><div>There is one little detail. This device is hidden by default in motherboard FW. However, I manually un-hide it before trying to enumerate the device.<br></div><div><br></div><div>gpio-pch driver's patched as you described, built out-of-tree and loaded. Then, I un-hide the device and rescan the bus:<br></div><div><br></div><div># echo 1 > /sys/bus/pcie/rescan<br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>On Fri, 14 Jun 2019 12:13 -07:00, Bjørn Mork <<a href="mailto:bjorn@mork.no">bjorn@mork.no</a>> wrote:<br></div><div>> "Valdis Klētnieks" <<a href="mailto:valdis.kletnieks@vt.edu">valdis.kletnieks@vt.edu</a>> writes:<br></div><div>><br></div><div>> > Though I'm having a hard time aligning that with "D31:F2". Are you confusing<br></div><div>> > a PCI address with a PCI ID, or is this on a non-PCI bus?<br></div><div>><br></div><div>> "D31:F2" is device 31, function 2. We're used to see this as "1f.2".<br></div><div>><br></div><div>> The question is really: Is there such a device in the system? And if so:<br></div><div>> What's the ID? That's easy to find out:<br></div><div>><br></div><div>>   lspci -vvvnns 0:1f.2<br></div><div>><br></div><div><br></div><div>Device is indeed there:<br></div><div>lspci -vvvnns 1f.1<br></div><div>00:1f.1 Memory controller [0580]: Intel Corporation Device [8086:9d20] (rev 21)<br></div><div>        Subsystem: Gigabyte Technology Co., Ltd Device [1458:1000]<br></div><div>        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-<br></div><div>        Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-<br></div><div>        Latency: 0<br></div><div>        Region 0: Memory at 7d000000 (64-bit, non-prefetchable) [size=16M]<br></div><div><br></div><div><br></div><div>ps. I misstyped device address in my original post, it is supposed to be function 1 not 2: d31:f1.<br></div></body></html>