On 10.12.2017 00:49, John David Anglin wrote: > On 2017-12-09, at 4:03 PM, Helge Deller wrote: > >> Can you please try attached patch which disables the serial MUX and ATI card? >> If it works for you and if we backport it to all kernels and if we revert palo to use ttyS0 for all machines we might be good. > > I hacked on the change but I couldn't get it to work. As far as I can tell, the quirks aren't being called. > Tried EARLY, HEADER and FINAL. I think the ids are correct. Strange. The attached patch does work for me on panama up until boot. Haven't tested what lspci reports afterwards... [ 1.832294] LBA 0:7: PCI host bridge to bus 0000:e0 [ 1.832497] pci_bus 0000:e0: root bus resource [io 0x60000-0x6ffff] (bus address [0x0000-0xffff]) [ 1.833005] pci_bus 0000:e0: root bus resource [mem 0xfffffffff0000000-0xfffffffffe77ffff] (bus address [0xf0000000-0xfe77ffff]) [ 1.840028] pci_bus 0000:e0: root bus resource [bus e0-e7] 1.844276] subsystem_vendor = 0x103c, subsystem_device =0x1291 [ 1.848022] pci 0000:e0:01.0: Hiding Diva built-in AUX serial device 1.849136] subsystem_vendor = 0x103c, subsystem_device =0x1292 [ 1.852023] pci 0000:e0:02.0: Hiding Diva built-in ATI card. .... Helge
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c index a25fed52f7e9..dbb4158cf098 100644 --- a/drivers/parisc/lba_pci.c +++ b/drivers/parisc/lba_pci.c @@ -1692,3 +1692,45 @@ void lba_set_iregs(struct parisc_device *lba, u32 ibase, u32 imask) iounmap(base_addr); } + +/* + * The design of the Diva management card in rp34x0 machines (rp3410, rp3440) + * seems rushed, so that many built-in components simply don't work. + * The following quirks disable the serial AUX port and the built-in ATI RV100 + * Radeon 7000 graphics card which both don't have any external connectors and + * thus are useless, and even worse, e.g. the AUX ports occupies ttyS0 and + * as such makes those machines the only PARISC machines on which we can't + * use ttyS0 as boot console. + */ +static void quirk_diva_ati_card(struct pci_dev *dev) +{ + printk("subsystem_vendor = 0x%x, subsystem_device =0x%x\n", + dev->subsystem_vendor, dev->subsystem_device); + + /* subsystem IDs are from Diva */ + if (dev->subsystem_vendor != PCI_VENDOR_ID_HP || + dev->subsystem_device != 0x1292) + return; + + dev_info(&dev->dev, "Hiding Diva built-in ATI card."); + dev->device = 0; +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RADEON_QY, + quirk_diva_ati_card); + +static void quirk_diva_aux_disable(struct pci_dev *dev) +{ + printk("subsystem_vendor = 0x%x, subsystem_device =0x%x\n", + dev->subsystem_vendor, dev->subsystem_device); + + /* subsystem IDs are from Diva */ + if (dev->subsystem_vendor != PCI_VENDOR_ID_HP || + dev->subsystem_device != 0x1291) + return; + + dev_info(&dev->dev, "Hiding Diva built-in AUX serial device"); + dev->device = 0; +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_DIVA_AUX, + quirk_diva_aux_disable); +