Skip to content

Commit 817a763

Browse files
robherringmpe
authored andcommitted
powerpc/44x: Use for_each_of_range() iterator
Simplify the ppc44x PCI dma-ranges parsing to use the for_each_of_range() iterator. Signed-off-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://patch.msgid.link/20241106212640.341677-1-robh@kernel.org
1 parent a8a54a6 commit 817a763

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

Lines changed: 9 additions & 14 deletions
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)