]> err.no Git - linux-2.6/blobdiff - arch/powerpc/kernel/pci_64.c
x86: printk kernel version in WARN_ON and other dump_stack users
[linux-2.6] / arch / powerpc / kernel / pci_64.c
index 384d2752fe60ad5952f34cadd635ae5e8e207610..9f63bdcb0bdf88f0cdabe6de30b8276070ecebaf 100644 (file)
@@ -59,9 +59,6 @@ LIST_HEAD(hose_list);
 
 static struct dma_mapping_ops *pci_dma_ops;
 
-/* XXX kill that some day ... */
-int global_phb_number;         /* Global phb counter */
-
 void set_pci_dma_ops(struct dma_mapping_ops *dma_ops)
 {
        pci_dma_ops = dma_ops;
@@ -172,55 +169,6 @@ void pcibios_align_resource(void *data, struct resource *res,
        res->start = start;
 }
 
-static DEFINE_SPINLOCK(hose_spinlock);
-
-/*
- * pci_controller(phb) initialized common variables.
- */
-static void __devinit pci_setup_pci_controller(struct pci_controller *hose)
-{
-       memset(hose, 0, sizeof(struct pci_controller));
-
-       spin_lock(&hose_spinlock);
-       hose->global_number = global_phb_number++;
-       list_add_tail(&hose->list_node, &hose_list);
-       spin_unlock(&hose_spinlock);
-}
-
-struct pci_controller * pcibios_alloc_controller(struct device_node *dev)
-{
-       struct pci_controller *phb;
-
-       if (mem_init_done)
-               phb = kmalloc(sizeof(struct pci_controller), GFP_KERNEL);
-       else
-               phb = alloc_bootmem(sizeof (struct pci_controller));
-       if (phb == NULL)
-               return NULL;
-       pci_setup_pci_controller(phb);
-       phb->arch_data = dev;
-       phb->is_dynamic = mem_init_done;
-       if (dev) {
-               int nid = of_node_to_nid(dev);
-
-               if (nid < 0 || !node_online(nid))
-                       nid = -1;
-
-               PHB_SET_NODE(phb, nid);
-       }
-       return phb;
-}
-
-void pcibios_free_controller(struct pci_controller *phb)
-{
-       spin_lock(&hose_spinlock);
-       list_del(&phb->list_node);
-       spin_unlock(&hose_spinlock);
-
-       if (phb->is_dynamic)
-               kfree(phb);
-}
-
 void __devinit pcibios_claim_one_bus(struct pci_bus *b)
 {
        struct pci_dev *dev;
@@ -283,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)
 {
@@ -302,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;
@@ -359,11 +306,14 @@ 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;
+       dev->dma_mask = 0xffffffff;
 
        if (!strcmp(type, "pci") || !strcmp(type, "pciex")) {
                /* a PCI-PCI bridge */
@@ -469,7 +419,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) {
@@ -488,7 +438,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);
@@ -638,7 +588,7 @@ int pci_proc_domain(struct pci_bus *bus)
                return 0;
        else {
                struct pci_controller *hose = pci_bus_to_host(bus);
-               return hose->buid;
+               return hose->buid != 0;
        }
 }
 
@@ -957,20 +907,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
 }
 EXPORT_SYMBOL(pcibios_fixup_bus);
 
-struct pci_controller* pci_find_hose_for_OF_device(struct device_node* node)
-{
-       if (!have_of)
-               return NULL;
-       while(node) {
-               struct pci_controller *hose, *tmp;
-               list_for_each_entry_safe(hose, tmp, &hose_list, list_node)
-                       if (hose->arch_data == node)
-                               return hose;
-               node = node->parent;
-       }
-       return NULL;
-}
-
 unsigned long pci_address_to_pio(phys_addr_t address)
 {
        struct pci_controller *hose, *tmp;