v2 and epia

ron minnich rminnich at lanl.gov
Mon Sep 29 11:20:01 CEST 2003


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




More information about the coreboot mailing list