Skip to content

Commit 8395911

Browse files
author
Fox Snowpatch
committed
1 parent ad0be02 commit 8395911

File tree

1 file changed

+9
-14
lines changed
  • arch/powerpc/platforms/44x

1 file changed

+9
-14
lines changed

arch/powerpc/platforms/44x/pci.c

+9-14
Original file line numberDiff line numberDiff line change
@@ -94,29 +94,24 @@ static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose,
9494
struct resource *res)
9595
{
9696
u64 size;
97-
const u32 *ranges;
98-
int rlen;
99-
int pna = of_n_addr_cells(hose->dn);
100-
int np = pna + 5;
97+
struct of_range_parser parser;
98+
struct of_range range;
10199

102100
/* Default */
103101
res->start = 0;
104102
size = 0x80000000;
105103
res->end = size - 1;
106104
res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH;
107105

108-
/* Get dma-ranges property */
109-
ranges = of_get_property(hose->dn, "dma-ranges", &rlen);
110-
if (ranges == NULL)
106+
if (of_pci_dma_range_parser_init(&parser, hose->dn))
111107
goto out;
112108

113-
/* Walk it */
114-
while ((rlen -= np * 4) >= 0) {
115-
u32 pci_space = ranges[0];
116-
u64 pci_addr = of_read_number(ranges + 1, 2);
117-
u64 cpu_addr = of_translate_dma_address(hose->dn, ranges + 3);
118-
size = of_read_number(ranges + pna + 3, 2);
119-
ranges += np;
109+
for_each_of_range(&parser, &range) {
110+
u32 pci_space = range.flags;
111+
u64 pci_addr = range.bus_addr;
112+
u64 cpu_addr = range.cpu_addr;
113+
size = range.size;
114+
120115
if (cpu_addr == OF_BAD_ADDR || size == 0)
121116
continue;
122117

0 commit comments

Comments
 (0)