diff options
Diffstat (limited to 'arch/sparc/kernel/pci.c')
| -rw-r--r-- | arch/sparc/kernel/pci.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c index 539e83f8e087..37b66c60abe3 100644 --- a/arch/sparc/kernel/pci.c +++ b/arch/sparc/kernel/pci.c | |||
| @@ -247,6 +247,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
| 247 | struct pci_bus *bus, int devfn) | 247 | struct pci_bus *bus, int devfn) |
| 248 | { | 248 | { |
| 249 | struct dev_archdata *sd; | 249 | struct dev_archdata *sd; |
| 250 | struct pci_slot *slot; | ||
| 250 | struct of_device *op; | 251 | struct of_device *op; |
| 251 | struct pci_dev *dev; | 252 | struct pci_dev *dev; |
| 252 | const char *type; | 253 | const char *type; |
| @@ -286,6 +287,11 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
| 286 | dev->dev.bus = &pci_bus_type; | 287 | dev->dev.bus = &pci_bus_type; |
| 287 | dev->devfn = devfn; | 288 | dev->devfn = devfn; |
| 288 | dev->multifunction = 0; /* maybe a lie? */ | 289 | dev->multifunction = 0; /* maybe a lie? */ |
| 290 | set_pcie_port_type(dev); | ||
| 291 | |||
| 292 | list_for_each_entry(slot, &dev->bus->slots, list) | ||
| 293 | if (PCI_SLOT(dev->devfn) == slot->number) | ||
| 294 | dev->slot = slot; | ||
| 289 | 295 | ||
| 290 | dev->vendor = of_getintprop_default(node, "vendor-id", 0xffff); | 296 | dev->vendor = of_getintprop_default(node, "vendor-id", 0xffff); |
| 291 | dev->device = of_getintprop_default(node, "device-id", 0xffff); | 297 | dev->device = of_getintprop_default(node, "device-id", 0xffff); |
| @@ -322,6 +328,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
| 322 | 328 | ||
| 323 | dev->current_state = 4; /* unknown power state */ | 329 | dev->current_state = 4; /* unknown power state */ |
| 324 | dev->error_state = pci_channel_io_normal; | 330 | dev->error_state = pci_channel_io_normal; |
| 331 | dev->dma_mask = 0xffffffff; | ||
| 325 | 332 | ||
| 326 | if (!strcmp(node->name, "pci")) { | 333 | if (!strcmp(node->name, "pci")) { |
| 327 | /* a PCI-PCI bridge */ | 334 | /* a PCI-PCI bridge */ |
| @@ -715,9 +722,10 @@ void pcibios_update_irq(struct pci_dev *pdev, int irq) | |||
| 715 | { | 722 | { |
| 716 | } | 723 | } |
| 717 | 724 | ||
| 718 | void pcibios_align_resource(void *data, struct resource *res, | 725 | resource_size_t pcibios_align_resource(void *data, const struct resource *res, |
| 719 | resource_size_t size, resource_size_t align) | 726 | resource_size_t size, resource_size_t align) |
| 720 | { | 727 | { |
| 728 | return res->start; | ||
| 721 | } | 729 | } |
| 722 | 730 | ||
| 723 | int pcibios_enable_device(struct pci_dev *dev, int mask) | 731 | int pcibios_enable_device(struct pci_dev *dev, int mask) |
