OK, I am now almost at the limit of my understanding :-)
I need to set up the device_operations for the 8601. Here is the mainboard
config that is relevant.
northbridge via/vt8601 "vt8601"
pci 0:0.0
pci 0:1.0
southbridge via/vt8231 "vt8231"
pci 0:11.0
pci 0:11.1
pci 0:11.2
pci 0:11.3
pci 0:11.4
pci 0:11.5
pci 0:11.6
pci 0:12.0
register "enable_usb" = "0"
register "enable_native_ide" = "1"
register "enable_com_ports" = "1"
register "enable_keyboard" = "0"
register "enable_nvram" = "1"
end
end
Now there is nothing special about the 8601 enumeration wise.
So I was hoping to do this:
static void enumerate(struct chip *chip)
{
extern struct device_operations default_pci_ops_bus;
chip_enumerate(chip);
chip->dev->ops = &default_pci_ops_bus;
}
struct chip_control northbridge_via_vt8601_control = {
.enumerate = enumerate,
.name = "VIA vt8601 Northbridge",
};
and
static void enumerate(struct chip *chip)
{
extern struct device_operations default_pci_ops_bus;
chip_enumerate(chip);
chip->dev->ops = &default_pci_ops_bus;
}
struct chip_control southbridge_via_vt8231_control = {
.enumerate = enumerate,
enable: southbridge_init,
name: "VIA vt8231"
};
Which, basically, doesn't work :-(
Things look OK for a while ...
=========================================================================
PCI: Using configuration type 1
Enumerating: VIA vt8601 Northbridge
malloc Enter, size 252, free_mem_ptr 00013a88
malloc 0x00013a88
path PCI: 00:00.0
malloc Enter, size 252, free_mem_ptr 00013b84
malloc 0x00013b84
path PCI: 00:01.0
Enumerating: VIA vt8231
malloc Enter, size 252, free_mem_ptr 00013c80
malloc 0x00013c80
path PCI: 00:11.0
malloc Enter, size 252, free_mem_ptr 00013d7c
malloc 0x00013d7c
path PCI: 00:11.1
malloc Enter, size 252, free_mem_ptr 00013e78
malloc 0x00013e78
path PCI: 00:11.2
malloc Enter, size 252, free_mem_ptr 00013f74
malloc 0x00013f74
path PCI: 00:11.3
malloc Enter, size 252, free_mem_ptr 00014070
malloc 0x00014070
path PCI: 00:11.4
malloc Enter, size 252, free_mem_ptr 0001416c
malloc 0x0001416c
path PCI: 00:11.5
malloc Enter, size 252, free_mem_ptr 00014268
malloc 0x00014268
path PCI: 00:11.6
malloc Enter, size 252, free_mem_ptr 00014364
malloc 0x00014364
path PCI: 00:12.0
Allocating resources...
Unknown device path type: -926076609
compute_allocate_io: base: 00000400 size: 00000000 align: 0 gran: 0
Unknown device path type: 80564
compute_allocate_io: base: 00000000 size: 00000000 align: 12 gran: 12
Unknown device path type: 81068
compute_allocate_io: base: 00000000 size: 00000000 align: 12 gran: 12
<null> compute_allocate_io: base: 00000000 size: 00000000 align: 12 gran:
12 doe
<null> compute_allocate_prefmem: base: 00000000 size: 00000000 align: 20
gran: 0
<null> compute_allocate_prefmem: base: 00000000 size: 00000000 align: 20
gran: e
<null> compute_allocate_mem: base: 00000000 size: 00000000 align: 20 gran:
20
<null> compute_allocate_mem: base: 00000000 size: 00000000 align: 20 gran:
20
===========================================================================
you can see they go to pieces at the end.
I'd like to have it such that if there is no enumerate struct member, the
"right things" happen.
Any advice on the best way to do this? I'm still working out the
static/dynamic stuff on V2, and clearly have got it wrong.
Anyway I'm still digging ...
ron