On Mon, 2005-06-20 at 19:20 +0800, Huang-Jen Wang wrote:
Dear all, Recently I am studying the source code , because I want to try to porting new mainboard later, but it is not easy to realize source code I begin my study from the src/southbridge/amd8111/amd8111.c There are some lines that I can't understand even I have amd8111 datasheet....hope you can tell me
1.devfn = bus_dev->path.u.pci.devfn + (1 << 3); 2.index = ((dev->path.u.pci.devfn & ~7) >> 3) + 8; 3.devfn = (dev->path.u.pci.devfn) & ~7;
You choose the worst file in the whole tree to start. You are not supposed understand it unless you are Eric Biederman ;-)
The reason that file is so complicated is because the LPC bridge inside amd8111 controls the enable and disable of devices on both side of the PCI bridge (in amd8111). The function in amd8111.c is call with every devices in the 8111 chip as argument. The function has to figure out which device it is given and how to enable or disable the device. This is done by device_t to devfn magic you see.