u-boot-brain/test/dm
Dario Binacchi d64b9cdcd4 fdt: translate address if #size-cells = <0>
The __of_translate_address routine translates an address from the
device tree into a CPU physical address. A note in the description of
the routine explains that the crossing of any level with
since inherited from IBM. This does not happen for Texas Instruments, or
at least for the beaglebone device tree. Without this patch, in fact,
the translation into physical addresses of the registers contained in the
am33xx-clocks.dtsi nodes would not be possible. They all have a parent
with #size-cells = <0>.

The CONFIG_OF_TRANSLATE_ZERO_SIZE_CELLS symbol makes translation
possible even in the case of crossing levels with #size-cells = <0>.

The patch acts conservatively on address translation, except for
removing a check within the of_translate_one function in the
drivers/core/of_addr.c file:

+
        ranges = of_get_property(parent, rprop, &rlen);
-       if (ranges == NULL && !of_empty_ranges_quirk(parent)) {
-               debug("no ranges; cannot translate\n");
-               return 1;
-       }
        if (ranges == NULL || rlen == 0) {
                offset = of_read_number(addr, na);
                memset(addr, 0, pna * 4);
		debug("empty ranges; 1:1 translation\n");

There are two reasons:
1 The function of_empty_ranges_quirk always returns false, invalidating
  the following if statement in case of null ranges. Therefore one of
  the two checks is useless.

2 The implementation of the of_translate_one function found in the
  common/fdt_support.c file has removed this check while keeping the one
  about the 1:1 translation.

The patch adds a test and modifies a check for the correctness of an
address in the case of enabling translation also for zero size cells.
The added test checks translations of addresses generated by nodes of
a device tree similar to those you can find in the files am33xx.dtsi
and am33xx-clocks.dtsi for which the patch was created.

The patch was also tested on a beaglebone black board. The addresses
generated for the registers of the loaded drivers are those specified
by the AM335x reference manual.

Signed-off-by: Dario Binacchi <dariobin@libero.it>
Tested-by: Dario Binacchi <dariobin@libero.it>
Reviewed-by: Simon Glass <sjg@chromium.org>
2021-01-12 10:58:05 +05:30
..
acpi_dp.c dm: acpi: Use correct GPIO polarity type in acpi_dp_add_gpio() 2020-09-25 11:27:14 +08:00
acpi.c x86: Simplify acpi_device_infer_name() 2020-12-18 20:32:21 -07:00
acpi.h acpi: Support generation of a scope 2020-07-17 14:32:24 +08:00
acpigen.c acpi: Add more support for generating processor tables 2020-09-25 11:27:18 +08:00
adc.c dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
audio.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
axi.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
blk.c dm: test: Drop assumptions of no sequence numbers 2020-12-18 20:32:21 -07:00
bootcount.c i2c: eeprom: Use reg property instead of offset and size 2020-08-20 09:49:20 +02:00
bus.c dm: core: Access device flags through functions 2021-01-05 12:24:41 -07:00
button.c test: sharpen button label unit test 2020-10-14 11:16:34 -04:00
cache.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
clk_ccf.c clk: do not disable clock if it is critical 2020-09-22 11:27:18 +03:00
clk.c clk: add clk_round_rate() 2021-01-12 10:58:04 +05:30
core.c dm: Rename DM_GET_DRIVER() to DM_DRIVER_GET() 2021-01-05 12:26:35 -07:00
cpu.c dm: core: Access device flags through functions 2021-01-05 12:24:41 -07:00
devres.c dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
dma.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
dsi_host.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
eth.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
fdtdec.c test: fdtdec: Add test for new no-map fdtdec_add_reserved_memory() parameter 2020-09-22 12:54:13 -06:00
firmware.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
gpio.c dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
hwspinlock.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
i2c.c dm: test: Drop assumptions of no sequence numbers 2020-12-18 20:32:21 -07:00
i2s.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
irq.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
k210_pll.c clk: Add K210 pll support 2020-07-01 15:01:21 +08:00
Kconfig test: Move the unit tests to their own menu 2015-05-21 09:16:17 -04:00
led.c test: dm: Test for default led naming 2020-10-08 11:42:36 -04:00
mailbox.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
Makefile board: Rename uclass to sysinfo 2020-11-06 10:18:20 +08:00
mdio_mux.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
mdio.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
misc.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
mmc.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
mux-cmd.c test: mux-cmd: Add tests for the 'mux' command 2020-10-28 11:49:31 -04:00
mux-emul.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
mux-mmio.c test: Add tests for the multiplexer framework 2020-10-28 11:49:31 -04:00
nop.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
of_platdata.c dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
ofnode.c dm: core: Add a livetree function to check node status 2020-12-13 07:58:18 -07:00
ofread.c dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
osd.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
p2sb.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
panel.c video: backlight: fix pwm's duty cycle calculation 2020-10-18 15:07:33 +02:00
pch.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
pci_ep.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
pci.c dm: core: Use dev_has_ofnode() instead of dev_of_valid() 2021-01-05 12:24:41 -07:00
phy.c sandbox: dts: Add compatible string for bind-test node 2020-08-22 07:58:39 -06:00
pinmux.c test: pinmux: Add test for pin muxing 2020-10-08 11:42:36 -04:00
pmc.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
pmic.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
power-domain.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
pwm.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
ram.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
regmap.c dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
regulator.c dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
remoteproc.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
reset.c test: reset: Add tests for the managed API 2020-09-30 11:55:22 -04:00
rng.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
rtc.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
scmi.c firmware: smci: sandbox test for SCMI reset controllers 2020-09-30 11:55:24 -04:00
serial.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
sf.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
simple-pm-bus.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
smem.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
soc.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
sound.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
spi.c test: dm: spi: Add testcase for spi_claim_bus() 2020-12-22 20:39:26 -07:00
spmi.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
syscon-reset.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
syscon.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
sysinfo.c board: Rename uclass to sysinfo 2020-11-06 10:18:20 +08:00
sysreset.c test: adjust sysreset tests 2020-11-05 09:11:30 -07:00
tee.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00
test-driver.c dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
test-fdt.c fdt: translate address if #size-cells = <0> 2021-01-12 10:58:05 +05:30
test-main.c dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
test-uclass.c dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
timer.c timer: Add a test for timer_timebase_fallback 2020-09-30 08:54:45 +08:00
usb.c common: rename getc() to getchar() 2020-10-22 09:54:53 -04:00
video.c dm: treewide: Rename dev_get_platdata() to dev_get_plat() 2020-12-13 16:51:09 -07:00
virtio.c dm: core: Access device flags through functions 2021-01-05 12:24:41 -07:00
wdt.c dm: Rename DM test flags to make them more generic 2020-08-07 22:31:32 -04:00