diff options
author | Kumar Gala <galak@gate.crashing.org> | 2005-12-13 15:46:29 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-08 22:54:06 -0500 |
commit | cd0c7f06803be06a5cf4564aa5a900f4b6aea603 (patch) | |
tree | 23c89e6dde3b316aea54890e7c605ec8a5574716 /arch/ppc/kernel | |
parent | 31087d7d49bf5fc9cbc2c4852a079213755e8733 (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')
-rw-r--r-- | arch/ppc/kernel/pci.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/ppc/kernel/pci.c b/arch/ppc/kernel/pci.c index af364003880b..8de320308e87 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 | } |