linux-hardened/drivers/of
Stephen Warren 5d61b165c8 of: Allow busses with #size-cells=0
It's quite legitimate for a DT node to specify #size-cells=0. One example
is a node that's used to collect a number of non-memory-mapped devices.
In that scenario, there may be multiple child nodes with the same name
(type) thus necessitating the use of unit addresses in node names, and
reg properties:

/ {
	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		regulator@0 {
			compatible = "regulator-fixed";
			reg = <0>;
			...
		};

		regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			...
		};

		...
	};
};

However, #size-cells=0 prevents translation of reg property values into
the parent node's address space. In turn, this triggers the kernel to
emit error messages during boot, such as:

    prom_parse: Bad cell count for /regulators/regulator@0

To prevent printing these error messages for legitimate DT content, a
number of changes are made:

1) of_get_address()/of_get_pci_address() are modified only to validate
   the value of #address-cells, and not #size-cells.

2) of_can_translate_address() is added to indicate whether address
   translation is possible.

3) of_device_make_bus_id() is modified to name devices based on the
   translated address only where possible, and otherwise fall back to
   using the (first cell of the) raw untranslated address.

4) of_device_alloc() is modified to create memory resources for a device
   only if the address can be translated into the CPU's address space.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
2012-08-03 08:01:46 -05:00
..
address.c of: Allow busses with #size-cells=0 2012-08-03 08:01:46 -05:00
base.c Devicetree updates for 3.6 2012-07-24 14:07:22 -07:00
device.c drivercore: Output common devicetree information in uevent 2012-02-01 14:26:30 -07:00
fdt.c of/fdt.c: asm/setup.h included twice 2012-02-27 10:09:25 -06:00
irq.c devicetree: add helper inline for retrieving a node's full name 2012-07-06 07:16:34 -05:00
Kconfig GPIO driver changes for v3.5 merge window 2012-05-24 14:01:46 -07:00
Makefile GPIO driver changes for v3.5 merge window 2012-05-24 14:01:46 -07:00
of_i2c.c of/i2c: implement of_find_i2c_adapter_by_node 2012-05-12 14:28:17 +02:00
of_mdio.c netdev/phy/of: Handle IEEE802.3 clause 45 Ethernet PHYs in of_mdiobus_register() 2012-06-27 21:23:24 -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
pdt.c of/pdt: fix section mismatch warning 2011-12-27 16:37:30 -06:00
platform.c of: Allow busses with #size-cells=0 2012-08-03 08:01:46 -05:00
selftest.c of: Add of_property_match_string() to find index into a string list 2012-01-28 10:29:20 -07:00