linux/drivers/of
Andrew Murray 29b635c00f of/pci: Provide support for parsing PCI DT ranges property
This patch factors out common implementation patterns to reduce overall kernel
code and provide a means for host bridge drivers to directly obtain struct
resources from the DT's ranges property without relying on architecture specific
DT handling. This will make it easier to write archiecture independent host bridge
drivers and mitigate against further duplication of DT parsing code.

This patch can be used in the following way:

	struct of_pci_range_parser parser;
	struct of_pci_range range;

	if (of_pci_range_parser_init(&parser, np))
		; //no ranges property

	for_each_of_pci_range(&parser, &range) {

		/*
			directly access properties of the address range, e.g.:
			range.pci_space, range.pci_addr, range.cpu_addr,
			range.size, range.flags

			alternatively obtain a struct resource, e.g.:
			struct resource res;
			of_pci_range_to_resource(&range, np, &res);
		*/
	}

Additionally the implementation takes care of adjacent ranges and merges them
into a single range (as was the case with powerpc and microblaze).

Signed-off-by: Andrew Murray <Andrew.Murray@arm.com>
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Rob Herring <rob.herring@calxeda.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Jingoo Han <jg1.han@samsung.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
2013-05-19 20:29:55 +00:00
..
Kconfig of_i2c: sparc: Allow OF_I2C for sparc 2012-12-07 09:17:55 -08:00
Makefile GPIO driver changes for v3.5 merge window 2012-05-24 14:01:46 -07:00
address.c of/pci: Provide support for parsing PCI DT ranges property 2013-05-19 20:29:55 +00:00
base.c ARM: arm-soc driver changes for 3.10 2013-05-04 12:31:18 -07:00
device.c of: Output devicetree alias names in uevent 2013-02-06 11:06:35 +00:00
fdt.c drivers/of/fdt.c: re-use kernel's kbasename() 2012-12-17 17:15:18 -08:00
irq.c of/irq: sparse fixes 2012-10-17 15:53:02 -05:00
of_i2c.c of_i2c: Honour "status=disabled" property of device 2012-11-29 17:28:08 +00:00
of_mdio.c net: of_mdio: fix behavior on missing phy device 2013-05-08 13:13:29 -07:00
of_mtd.c of: mtd: nuke useless const qualifier 2012-07-10 10:32:06 -05:00
of_net.c drivers/of: include export.h for EXPORT_SYMBOL_GPL/THIS_MODULE as required 2011-10-31 19:31:56 -04:00
of_pci.c of: of_pci.c needs export.h since it uses EXPORT_SYMBOLS 2011-10-31 19:31:14 -04:00
of_pci_irq.c OF: PCI: const usage needed by MIPS 2012-05-21 14:31:48 +01:00
of_private.h of: Output devicetree alias names in uevent 2013-02-06 11:06:35 +00:00
pdt.c Fix build when CONFIG_W1_MASTER_GPIO=m b exporting "allnodes" 2012-11-30 10:04:06 +00:00
platform.c Revert "of: use platform_device_add" 2013-02-17 20:03:27 +00:00
selftest.c of: Create function for counting number of phandles in a property 2013-02-13 10:09:31 +00:00