I see a couple of different versions of lpci_set_subsystem function and I wonder why.
For example: src\southbridge\broadcom\bcm5780\bcm5780_nic.c: static void lpci_set_subsystem(device_t dev, unsigned vendor, unsigned device) { pci_write_config32(dev, 0x40, ((device & 0xffff) << 16) | (vendor & 0xffff)); }
src\southbridge\amd\amd8111\amd8111_ide.c: static void lpci_set_subsystem(device_t dev, unsigned vendor, unsigned device) { pci_write_config32(dev, 0x70, ((device & 0xffff) << 16) | (vendor & 0xffff)); }
src\southbridge\broadcom\bcm5780\bcm5780_sb_pci_main.c: static void lpci_set_subsystem(device_t dev, unsigned vendor, unsigned device) { pci_write_config32(dev, 0x2c, ((device & 0xffff) << 16) | (vendor & 0xffff)); }
Shouldn't the PCI config register always be 0x2c (subsystem ID register) like in the last example (bcm5780_sb_pci_main.c)? Should these functions even be there since there is a stock pci_dev_set_subsystem() that seems to be correct? Am I mis-understanding this function?
Thanks, Marc