ron minnich rminnich@lanl.gov writes:
Here's what I had to do. First, though, let me say: the new linuxbios architecture, while hard to get the hang of (learning curve) is very powerful.
You can have a mainboard-specific pci scan function, and that's what I needed. I may put this as a generic thing into the pci device code.
See below for how it works. Basically, for your mainboard, you provide a function that scans the root of the "mainboard PCI" tree.
Hmm. I am curious why the default did not take. See: devices/root_device.c
All you should need is included below. And potentially we can have a generic enumeration function in root_device.c that does the rest of it as well.
The Opteron has rather special needs so it needs to override the defaults, but the VIA EPIA should not.
Eric
================
#include <console/console.h> #include <device/device.h> #include <device/pci.h> #include <device/pci_ids.h> #include <device/pci_ops.h>
#include <arch/io.h> #include <device/chip.h> #include "chip.h"
static void enumerate(struct chip *chip) { struct chip *child; chip->dev = &dev_root; chip->bus = 0; for(child = chip->children; child; child = child->next) { child->bus = &dev_root.link[0]; } } struct chip_control mainboard_via_epia_control = { .enumerate = enumerate, .name = "VIA EPIA mainboard ", };