Sorry, but:
versatile_pci.c: d->config[0x04] = 0x00;
versatile_pci.c: d->config[0x05] = 0x00;
versatile_pci.c: d->config[0x06] = 0x20;
versatile_pci.c: d->config[0x07] = 0x02;
To:
pci_config_set_command(d, 0);
pci_config_set_status(d, PCI_STATUS_DEVSEL_MEDIUM | PCI_STATUS_66MHZ);
Is a huge improvement.
Yes but
pci_set_word(d->config + PCI_COMMAND, 0);
pci_set_word(d->config + PCI_STATUS, PCI_STATUS_DEVSEL_MEDIUM |
PCI_STATUS_66MHZ);
is not much worse, and that API is already there.
And advatage is it uses macros from linux which have
higher chance to be correct than what we come up with.
I'm staring at a PCI config space diagram right
now and I'm *still* not even sure I'm interpreting the versatile_pci
code correctly :-)
I spent time cleaning up devices, just did not get to bridges.
What I did is write patches and verify that compiled code
did not change at all. This guarantees no breakage.
Care to volunteer to complete that work?
Separately people that are familiar with device can clean it up.