Commit 817a763a authored by Rob Herring (Arm)'s avatar Rob Herring (Arm) Committed by Michael Ellerman
Browse files

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: default avatarRob Herring (Arm) <robh@kernel.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://patch.msgid.link/20241106212640.341677-1-robh@kernel.org
parent a8a54a65
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -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;