"Ronald G. Minnich" rminnich@lanl.gov writes:
On 13 Feb 2003, Eric W. Biederman wrote:
The basic layout I am looking at, is to have some kind of list of hardware in the code. And then for each piece of hardware call an initialization function. This has the potential to replace a lot of code in the current hardwaremain.c Handling initialization order is an interesting problem I have not tackled yet.
I think the superio stuff is one possible way. I've found that three passes covers the case for superio, and actually for southbridge.
For the multiple northbridge case did you want to discover northbridges dynamically or continue to specify it in a config file.
Auto discovery is necessary as everything may not be plugged in. But I suspect I will also want to specify information that is valid if the cpu/northbridge is plugged in.
The _fixup stuff goes away with the three pass approach, I think.
I need to look closely at this issue. We have one huge hook before hardwaremain. Beyond that I suspect doing something as simple as going through the devices in a tree structured order would remove the need for multiple passes.
I'd like to hash this out a bit on the list the way I've hashed out other approaches in the past (config tool, new superio, etc.) to see if we can't scare up good ideas from other people.
We are still on the list. And talking is good. But to a certain extent you don't see things until code is written and you try it.
So we need a development branch to try these things out on. I don't promise we will get it perfect the first try. The goal is to get it close enough that we won't break ports by going the last few inches.
Things like having no guaranteed order the code will be called independent of the device tree should help. By device tree I am thinking of the something roughly like pci device tree. How far devices are from the cpu. The goal is not perfection but a useful approximation of reality.
Eric