include/device/device.h:

Change the ID constants so they are more useful for debugging. 
Instead of simple 1,2,3 they now are a 4-byte value which can be more
useful when looking at memory with a debugger. Lots of variables can be 
'1', but fewer variables will match to 'PCID'. 

include/device/pci.h: 
Include pci_ids.h in pci.h

device/device.c: remove silly comment. Change memcpy to struct assign, this makes it possible 
for the C compiler to do type checking. Add assign for the dev->id. 

flattree.c: Support the use of 'domainid' and 'pciid' in the per-chip dts. These IDs will be assigned
to the static tree device struct. In conjunction with the earlier patch, this change removes the need
for users to assign the ops struct member in the dts by hand, as it is done in the qemu port today. 
The ops struct member will automatically be assigned by the dev_init function, which is run 
in stage2 before any actual device code is run. (This change to dev_init was in the previous patch). 
Added two comments that document what is going on. 

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>



git-svn-id: svn://coreboot.org/repository/coreboot-v3@557 f3766cd6-281f-0410-b1cd-43a5c92072e9
This commit is contained in:
Ronald G. Minnich 2008-01-19 06:29:14 +00:00
commit 7c1623aec3
4 changed files with 50 additions and 12 deletions

View file

@ -25,18 +25,28 @@
#include <device/resource.h>
#include <device/path.h>
/**
* Create a 32-bit value from four characters. This is better
* than the usual enum values when using (JTAG) debuggers.
* It also makes it harder for accidentally assigned type values
* to be mistaken for a real value -- e.g. it is more likely in the event
* of a programming error that a '1' is somehow assigned
* to the type field, whereas these values are more complex.
* Thus errors may be easier to find.
*/
#define TYPENAME(a,b,c,d) ((a<<24)|(b<<16)|(c<<8)|(d))
#define DEVICE_ID_MAX 64
enum device_id_type {
DEVICE_ID_NONE = 0,
DEVICE_ID_ROOT,
DEVICE_ID_PCI,
DEVICE_ID_PNP,
DEVICE_ID_I2C,
DEVICE_ID_APIC,
DEVICE_ID_PCI_DOMAIN,
DEVICE_ID_APIC_CLUSTER,
DEVICE_ID_CPU,
DEVICE_ID_CPU_BUS,
DEVICE_ID_NONE = 0,
DEVICE_ID_ROOT = TYPENAME('R','O','O','T'),
DEVICE_ID_PCI = TYPENAME(' ','P','C','I'),
DEVICE_ID_PNP = TYPENAME(' ','P','N','P'),
DEVICE_ID_I2C = TYPENAME(' ','I','2','C'),
DEVICE_ID_APIC = TYPENAME('A','P','I','C'),
DEVICE_ID_PCI_DOMAIN = TYPENAME('P','C','I','D'),
DEVICE_ID_APIC_CLUSTER = TYPENAME('A','P','C','C'),
DEVICE_ID_CPU = TYPENAME(' ','C','P','U'),
DEVICE_ID_CPU_BUS = TYPENAME(' ','B','U','S'),
};
struct device;

View file

@ -29,6 +29,7 @@
#include <device/device.h>
#include <device/pci_ops.h>
#include <device/pci_rom.h>
#include <device/pci_ids.h>
/*
* For more information, please consult the following manuals (look at