Hi, attached is a fixed version of my patch. So far only for v3, because I ran into another problem with v2 that needs to be fixed first.
Am Donnerstag, den 13.09.2007, 03:27 +0200 schrieb Uwe Hermann: > > Index: src/devices/pci_device.c > > =================================================================== > > --- src/devices/pci_device.c (revision 2770) > > +++ src/devices/pci_device.c (working copy) > > @@ -972,7 +972,34 @@ > > /* Read the rest of the pci configuration information */ > > hdr_type = pci_read_config8(dev, PCI_HEADER_TYPE); > > class = pci_read_config32(dev, PCI_CLASS_REVISION); > > - > > + > > + u16 status = pci_read_config16(dev, PCI_STATUS); > > + dev->status = status; > > + > Is there a reaons why this wouldn't work? > > dev->status = pci_read_config16(dev, PCI_STATUS); > (much shorter) No, there used to be a reason for this, but not anymore. Changed it to the shorter version. > > /* Store the interesting information in the device structure */ > > dev->vendor = id & 0xffff; > > dev->device = (id >> 16) & 0xffff; > > Index: src/include/device/device.h > > =================================================================== > > --- src/include/device/device.h (revision 2770) > > +++ src/include/device/device.h (working copy) > > @@ -68,9 +68,19 @@ > > device_t sibling; /* next device on this bus */ > > device_t next; /* chain of all devices */ > > > > + char dtsname[64]; > > struct device_path path; > > unsigned vendor; > > unsigned device; > > + u16 status; > Use TABs for indentation as per coding guidelines, please. Done. > The patch looks good to me otherwise, but someone with more OFW > knowledge should probably look over it, too. I think Stefan already looked at it. (?) Jens
Add more information to the device structure, so an Open Firmware device tree can be created from data in struct device. Signed-off-by: Jens Freimann <[EMAIL PROTECTED]> Index: include/device/device.h =================================================================== --- include/device/device.h (revision 496) +++ include/device/device.h (working copy) @@ -188,6 +188,16 @@ char dtsname[MAX_DTSNAME_SIZE]; /* the name from the dts */ unsigned vendor; unsigned device; + u16 status; + u8 revision; + u8 cache_line; + u8 irq_line; + u8 irq_pin; + u8 min_gnt; + u8 max_lat; + u16 subsystem_vendor; + u16 subsystem_device; + unsigned int class; /* 3 bytes: (base,sub,prog-if) */ unsigned int hdr_type; /* PCI header type */ unsigned int enabled : 1; /* set if we should enable the device */ Index: device/pci_device.c =================================================================== --- device/pci_device.c (revision 496) +++ device/pci_device.c (working copy) @@ -964,6 +964,15 @@ /* Read the rest of the PCI configuration information. */ hdr_type = pci_read_config8(dev, PCI_HEADER_TYPE); class = pci_read_config32(dev, PCI_CLASS_REVISION); + dev->status = pci_read_config16(dev, PCI_STATUS); + dev->revision = pci_read_config8(dev, PCI_REVISION_ID); + dev->cache_line = pci_read_config8(dev, PCI_CACHE_LINE_SIZE); + dev->irq_line = pci_read_config8(dev, PCI_INTERRUPT_LINE); + dev->irq_pin = pci_read_config8(dev, PCI_INTERRUPT_PIN); + dev->min_gnt = pci_read_config8(dev, PCI_MIN_GNT); + dev->max_lat = pci_read_config8(dev, PCI_MAX_LAT); + dev->subsystem_vendor = pci_read_config16(dev, PCI_SUBSYSTEM_VENDOR_ID); + dev->subsystem_device = pci_read_config16(dev, PCI_SUBSYSTEM_ID); /* Store the interesting information in the device structure. */ dev->vendor = id & 0xffff;
-- linuxbios mailing list [email protected] http://www.linuxbios.org/mailman/listinfo/linuxbios
