Freebios2 recovery progress...

Eric W. Biederman ebiederman at lnxi.com
Thu Oct 21 12:51:24 CEST 2004


Li-Ta Lo <ollie at lanl.gov> writes:

> On Thu, 2004-10-21 at 11:23, YhLu wrote:
> > Driver add 
> > < static void lpci_set_subsystem(device_t dev, unsigned vendor, unsigned
> > device)
> > < {
> > <       pci_write_config32(dev, 0x2c, 
> > <               ((device & 0xffff) << 16) | (vendor & 0xffff));
> > < }
> > < 
> > < static struct pci_operations lops_pci = {
> > <       .set_subsystem = lpci_set_subsystem,
> > < };
> > 
> > 
> 
> 
> OOPS, we are doing it with "uses MAINBOARD_SUBSYSTEM_ID" and if I am 
> right every on board device share the same ID. For devices who want
> its own ID it has to implement the .set_subsystem method. This is
> really ugly. IMHO, we should treat the subsystem ids as attributes
> of PCI device and it should be defined in the mainboard config file.
> It should look like this

As far as I know there is only one that we need to set.
The subsystem id of the motherboard.  And we need to set
this for all devices.

The .set_subsystem simply exists because there is not
a standard way to set that value.  The almost generic
version is in src/devices/pci_device.c but I can use
it only occasionally.
 
> device pci 0.0 on
> 	vendor 0x1234
> 	device 0x5678
> end
> 
> or
> 
> device pci 0.0 on
> 	register "subsystem_vendor_id" = "0x1234"
> 	register "subsystem_device_id" = "0x5678"
> end

I don't see the benefit of those methods over having
an Option if you have exactly 1 subsystem vendor_id+device_id that
need to be set.

> and the PCI enumeration code will call the generic
> pci_set_subsystem() function to set subsystem ID for every
> PCI device.
It does.

>  For those device with subsystem ID unspecified,
> it is default to zero any.

Yes.

Eric



More information about the coreboot mailing list