aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc/kernel/pci.c
diff options
context:
space:
mode:
authorKumar Gala <galak@gate.crashing.org>2005-12-13 15:46:29 -0500
committerPaul Mackerras <paulus@samba.org>2006-01-08 22:54:06 -0500
commitcd0c7f06803be06a5cf4564aa5a900f4b6aea603 (patch)
tree23c89e6dde3b316aea54890e7c605ec8a5574716 /arch/ppc/kernel/pci.c
parent31087d7d49bf5fc9cbc2c4852a079213755e8733 (diff)
[PATCH] powerpc: Detect prefetchable windows in pci_process_bridge_OF_ranges
Added the ability to determine if an outbound window in the PCI host controller is for prefetchable memory and report it as such. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/ppc/kernel/pci.c')
-rw-r--r--arch/ppc/kernel/pci.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/ppc/kernel/pci.c b/arch/ppc/kernel/pci.c
index af364003880..8de320308e8 100644
--- a/arch/ppc/kernel/pci.c
+++ b/arch/ppc/kernel/pci.c
@@ -941,7 +941,7 @@ pci_process_bridge_OF_ranges(struct pci_controller *hose,
941 while (ranges && (rlen -= np * sizeof(unsigned int)) >= 0) { 941 while (ranges && (rlen -= np * sizeof(unsigned int)) >= 0) {
942 res = NULL; 942 res = NULL;
943 size = ranges[na+4]; 943 size = ranges[na+4];
944 switch (ranges[0] >> 24) { 944 switch ((ranges[0] >> 24) & 0x3) {
945 case 1: /* I/O space */ 945 case 1: /* I/O space */
946 if (ranges[2] != 0) 946 if (ranges[2] != 0)
947 break; 947 break;
@@ -955,6 +955,8 @@ pci_process_bridge_OF_ranges(struct pci_controller *hose,
955 res = &hose->io_resource; 955 res = &hose->io_resource;
956 res->flags = IORESOURCE_IO; 956 res->flags = IORESOURCE_IO;
957 res->start = ranges[2]; 957 res->start = ranges[2];
958 DBG("PCI: IO 0x%lx -> 0x%lx\n",
959 res->start, res->start + size - 1);
958 break; 960 break;
959 case 2: /* memory space */ 961 case 2: /* memory space */
960 memno = 0; 962 memno = 0;
@@ -972,7 +974,11 @@ pci_process_bridge_OF_ranges(struct pci_controller *hose,
972 if (memno < 3) { 974 if (memno < 3) {
973 res = &hose->mem_resources[memno]; 975 res = &hose->mem_resources[memno];
974 res->flags = IORESOURCE_MEM; 976 res->flags = IORESOURCE_MEM;
977 if(ranges[0] & 0x40000000)
978 res->flags |= IORESOURCE_PREFETCH;
975 res->start = ranges[na+2]; 979 res->start = ranges[na+2];
980 DBG("PCI: MEM[%d] 0x%lx -> 0x%lx\n", memno,
981 res->start, res->start + size - 1);
976 } 982 }
977 break; 983 break;
978 } 984 }