]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/kernel/pci_64.c
Pull bugzilla-7880 into release branch
[linux-2.6-omap-h63xx.git] / arch / powerpc / kernel / pci_64.c
index 3b0f49ea47568fa10e7ba5bfaea73805a639f52f..a97e23ac197639bd17eda467be127214f863af38 100644 (file)
@@ -231,7 +231,6 @@ static unsigned int pci_parse_of_flags(u32 addr0)
        return flags;
 }
 
-#define GET_64BIT(prop, i)     ((((u64) (prop)[(i)]) << 32) | (prop)[(i)+1])
 
 static void pci_parse_of_addrs(struct device_node *node, struct pci_dev *dev)
 {
@@ -250,8 +249,8 @@ static void pci_parse_of_addrs(struct device_node *node, struct pci_dev *dev)
                flags = pci_parse_of_flags(addrs[0]);
                if (!flags)
                        continue;
-               base = GET_64BIT(addrs, 1);
-               size = GET_64BIT(addrs, 3);
+               base = of_read_number(&addrs[1], 2);
+               size = of_read_number(&addrs[3], 2);
                if (!size)
                        continue;
                i = addrs[0] & 0xff;
@@ -307,8 +306,10 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
        sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(bus),
                dev->bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn));
        dev->class = get_int_prop(node, "class-code", 0);
+       dev->revision = get_int_prop(node, "revision-id", 0);
 
        DBG("    class: 0x%x\n", dev->class);
+       DBG("    revision: 0x%x\n", dev->revision);
 
        dev->current_state = 4;         /* unknown power state */
        dev->error_state = pci_channel_io_normal;
@@ -417,7 +418,7 @@ void __devinit of_scan_pci_bridge(struct device_node *node,
        i = 1;
        for (; len >= 32; len -= 32, ranges += 8) {
                flags = pci_parse_of_flags(ranges[0]);
-               size = GET_64BIT(ranges, 6);
+               size = of_read_number(&ranges[6], 2);
                if (flags == 0 || size == 0)
                        continue;
                if (flags & IORESOURCE_IO) {
@@ -436,7 +437,7 @@ void __devinit of_scan_pci_bridge(struct device_node *node,
                        res = bus->resource[i];
                        ++i;
                }
-               res->start = GET_64BIT(ranges, 1);
+               res->start = of_read_number(&ranges[1], 2);
                res->end = res->start + size - 1;
                res->flags = flags;
                fixup_resource(res, dev);