that code is good. Also the AMD numbering device enable bit is good and professional. other SB that enble bit have nothing to do with device id or function...
YH
On 6/20/05, Eric W. Biederman ebiederman@lnxi.com wrote:
Li-Ta Lo ollie@lanl.gov writes:
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 ;-)
Hmm. It must need a good comment then :( But I agree that is pretty abstract way to start.
You certainly need to understand how pci encodes bus/device/function information and how LinuxBIOS deals with it to make sense of those lines.
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.
Eric
LinuxBIOS mailing list LinuxBIOS@openbios.org http://www.openbios.org/mailman/listinfo/linuxbios