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
This commit is contained in:
Rob Herring (Arm) 2024-11-06 15:26:39 -06:00 committed by Michael Ellerman
parent a8a54a65ca
commit 817a763a07

View File

@ -94,10 +94,8 @@ static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose,
struct resource *res)
{
u64 size;
const u32 *ranges;
int rlen;
int pna = of_n_addr_cells(hose->dn);
int np = pna + 5;
struct of_range_parser parser;
struct of_range range;
/* Default */
res->start = 0;
@ -105,18 +103,15 @@ static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose,
res->end = size - 1;
res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH;
/* Get dma-ranges property */
ranges = of_get_property(hose->dn, "dma-ranges", &rlen);
if (ranges == NULL)
if (of_pci_dma_range_parser_init(&parser, hose->dn))
goto out;
/* Walk it */
while ((rlen -= np * 4) >= 0) {
u32 pci_space = ranges[0];
u64 pci_addr = of_read_number(ranges + 1, 2);
u64 cpu_addr = of_translate_dma_address(hose->dn, ranges + 3);
size = of_read_number(ranges + pna + 3, 2);
ranges += np;
for_each_of_range(&parser, &range) {
u32 pci_space = range.flags;
u64 pci_addr = range.bus_addr;
u64 cpu_addr = range.cpu_addr;
size = range.size;
if (cpu_addr == OF_BAD_ADDR || size == 0)
continue;