On Mon, Aug 17, 2009 at 9:51 AM, ron minnich rminnich@gmail.com wrote:
On Mon, Aug 17, 2009 at 8:28 AM, Myles Watsonmylesgw@gmail.com wrote:
The correct way to do this is to add the functionality to the chipset
init
function. It should check the bit that was set in the device structure
and
write the correct thing to the PCI configuration space.
How about we go through this step by step, and then Arnaud gets stuck with writing up what we figure out.
Yes. I'm frequently guilty of skipping steps.
So, Arnaud, tell me more. I'm utterly ignorant of the chipset here.
As I learn more, we can fill this out and, hopefully, have something others can use later to know what to do.
(calling from auto.c is bad form :-)
What chipset needs to have a config register setting done? (assuming you don't know what to do from IRC already :-)
Setting up VGA for PCI: 07:00.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI: 03:04.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI: 02:00.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI: 00:03.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI_DOMAIN: 0000 Setting PCI_BRIDGE_CTL_VGA for bridge Root Device Allocating resources...
For me the steps would be: 1. Make sure that the device that needs the config writes is in the above list.
2. Add code like this: if (dev->link[link].bridge_ctrl & PCI_BRIDGE_CTL_VGA) { /* Add your code from auto.c here */ } to the .init function of the bridge.
For example, assuming that the i3100 PCIe port needs the configuration, I would add the code in:
src/northbridge/intel/i3100/pciexp_porta.c
In the existing pcie_init function.
Thanks, Myles