[PATCH] ppc64: Fix PCI flags when using OF device tree
Paul Mackerras
paulus at samba.org
Wed Sep 21 14:14:22 EST 2005
My code to set up the PCI tree from the Open Firmware device tree was
setting IORESOURCE_* flags on the resources for the devices, but not
the PCI_BASE_ADDRESS_* flags. This meant that some drivers
misbehaved, and /proc/pci showed the wrong types for the resources.
This fixes it.
Signed-off-by: Paul Mackerras <paulus at samba.org>
---
diff -urN linux-2.6/arch/ppc64/kernel/pci.c hch/arch/ppc64/kernel/pci.c
--- linux-2.6/arch/ppc64/kernel/pci.c 2005-09-13 07:43:47.000000000 +1000
+++ hch/arch/ppc64/kernel/pci.c 2005-09-20 10:20:54.000000000 +1000
@@ -246,11 +246,14 @@
unsigned int flags = 0;
if (addr0 & 0x02000000) {
- flags |= IORESOURCE_MEM;
+ flags = IORESOURCE_MEM | PCI_BASE_ADDRESS_SPACE_MEMORY;
+ flags |= (addr0 >> 22) & PCI_BASE_ADDRESS_MEM_TYPE_64;
+ flags |= (addr0 >> 28) & PCI_BASE_ADDRESS_MEM_TYPE_1M;
if (addr0 & 0x40000000)
- flags |= IORESOURCE_PREFETCH;
+ flags |= IORESOURCE_PREFETCH
+ | PCI_BASE_ADDRESS_MEM_PREFETCH;
} else if (addr0 & 0x01000000)
- flags |= IORESOURCE_IO;
+ flags = IORESOURCE_IO | PCI_BASE_ADDRESS_SPACE_IO;
return flags;
}
More information about the Linuxppc64-dev
mailing list