mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-09-30 03:12:07 +00:00
d64b9cdcd4
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>
1301 lines
24 KiB
Text
1301 lines
24 KiB
Text
/dts-v1/;
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/gpio/sandbox-gpio.h>
|
|
#include <dt-bindings/pinctrl/sandbox-pinmux.h>
|
|
#include <dt-bindings/mux/mux.h>
|
|
|
|
/ {
|
|
model = "sandbox";
|
|
compatible = "sandbox";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
aliases {
|
|
console = &uart0;
|
|
eth0 = "/eth@10002000";
|
|
eth3 = ð_3;
|
|
eth5 = ð_5;
|
|
gpio1 = &gpio_a;
|
|
gpio2 = &gpio_b;
|
|
gpio3 = &gpio_c;
|
|
i2c0 = "/i2c@0";
|
|
mmc0 = "/mmc0";
|
|
mmc1 = "/mmc1";
|
|
pci0 = &pci0;
|
|
pci1 = &pci1;
|
|
pci2 = &pci2;
|
|
remoteproc0 = &rproc_1;
|
|
remoteproc1 = &rproc_2;
|
|
rtc0 = &rtc_0;
|
|
rtc1 = &rtc_1;
|
|
spi0 = "/spi@0";
|
|
testfdt6 = "/e-test";
|
|
testbus3 = "/some-bus";
|
|
testfdt0 = "/some-bus/c-test@0";
|
|
testfdt12 = "/some-bus/c-test@1";
|
|
testfdt3 = "/b-test";
|
|
testfdt5 = "/some-bus/c-test@5";
|
|
testfdt8 = "/a-test";
|
|
testfdtm1 = &testfdtm1;
|
|
fdt-dummy0 = "/translation-test@8000/dev@0,0";
|
|
fdt-dummy1 = "/translation-test@8000/dev@1,100";
|
|
fdt-dummy2 = "/translation-test@8000/dev@2,200";
|
|
fdt-dummy3 = "/translation-test@8000/noxlatebus@3,300/dev@42";
|
|
fdt-dummy4 = "/translation-test@8000/xlatebus@4,400/devs/dev@19";
|
|
usb0 = &usb_0;
|
|
usb1 = &usb_1;
|
|
usb2 = &usb_2;
|
|
axi0 = &axi;
|
|
osd0 = "/osd";
|
|
};
|
|
|
|
audio: audio-codec {
|
|
compatible = "sandbox,audio-codec";
|
|
#sound-dai-cells = <1>;
|
|
};
|
|
|
|
buttons {
|
|
compatible = "gpio-keys";
|
|
|
|
btn1 {
|
|
gpios = <&gpio_a 3 0>;
|
|
label = "button1";
|
|
};
|
|
|
|
btn2 {
|
|
gpios = <&gpio_a 4 0>;
|
|
label = "button2";
|
|
};
|
|
};
|
|
|
|
cros_ec: cros-ec {
|
|
reg = <0 0>;
|
|
compatible = "google,cros-ec-sandbox";
|
|
|
|
/*
|
|
* This describes the flash memory within the EC. Note
|
|
* that the STM32L flash erases to 0, not 0xff.
|
|
*/
|
|
flash {
|
|
image-pos = <0x08000000>;
|
|
size = <0x20000>;
|
|
erase-value = <0>;
|
|
|
|
/* Information for sandbox */
|
|
ro {
|
|
image-pos = <0>;
|
|
size = <0xf000>;
|
|
};
|
|
wp-ro {
|
|
image-pos = <0xf000>;
|
|
size = <0x1000>;
|
|
};
|
|
rw {
|
|
image-pos = <0x10000>;
|
|
size = <0x10000>;
|
|
};
|
|
};
|
|
};
|
|
|
|
dsi_host: dsi_host {
|
|
compatible = "sandbox,dsi-host";
|
|
};
|
|
|
|
a-test {
|
|
reg = <0 1>;
|
|
compatible = "denx,u-boot-fdt-test";
|
|
ping-expect = <0>;
|
|
ping-add = <0>;
|
|
u-boot,dm-pre-reloc;
|
|
test-gpios = <&gpio_a 1>, <&gpio_a 4>,
|
|
<&gpio_b 5 GPIO_ACTIVE_HIGH 3 2 1>,
|
|
<0>, <&gpio_a 12>;
|
|
test2-gpios = <&gpio_a 1>, <&gpio_a 4>,
|
|
<&gpio_b 6 GPIO_ACTIVE_LOW 3 2 1>,
|
|
<&gpio_b 7 GPIO_IN 3 2 1>,
|
|
<&gpio_b 8 GPIO_OUT 3 2 1>,
|
|
<&gpio_b 9 (GPIO_OUT|GPIO_OUT_ACTIVE) 3 2 1>;
|
|
test3-gpios =
|
|
<&gpio_c 0 (GPIO_OUT|GPIO_OPEN_DRAIN)>,
|
|
<&gpio_c 1 (GPIO_OUT|GPIO_OPEN_SOURCE)>,
|
|
<&gpio_c 2 GPIO_OUT>,
|
|
<&gpio_c 3 (GPIO_IN|GPIO_PULL_UP)>,
|
|
<&gpio_c 4 (GPIO_IN|GPIO_PULL_DOWN)>,
|
|
<&gpio_c 5 GPIO_IN>,
|
|
<&gpio_c 6 (GPIO_ACTIVE_LOW|GPIO_OUT|GPIO_OPEN_DRAIN)>,
|
|
<&gpio_c 7 (GPIO_ACTIVE_LOW|GPIO_OUT|GPIO_OPEN_SOURCE)>;
|
|
test4-gpios = <&gpio_a 14>, <&gpio_b 4 1 3 2 1>;
|
|
test5-gpios = <&gpio_a 19>;
|
|
|
|
int-value = <1234>;
|
|
uint-value = <(-1234)>;
|
|
int64-value = /bits/ 64 <0x1111222233334444>;
|
|
int-array = <5678 9123 4567>;
|
|
str-value = "test string";
|
|
interrupts-extended = <&irq 3 0>;
|
|
acpi,name = "GHIJ";
|
|
phandle-value = <&gpio_c 10>, <0xFFFFFFFF 20>, <&gpio_a 30>;
|
|
|
|
mux-controls = <&muxcontroller0 0>, <&muxcontroller0 1>,
|
|
<&muxcontroller0 2>, <&muxcontroller0 3>,
|
|
<&muxcontroller1>;
|
|
mux-control-names = "mux0", "mux1", "mux2", "mux3", "mux4";
|
|
mux-syscon = <&syscon3>;
|
|
};
|
|
|
|
junk {
|
|
reg = <1 1>;
|
|
compatible = "not,compatible";
|
|
};
|
|
|
|
no-compatible {
|
|
reg = <2 1>;
|
|
};
|
|
|
|
backlight: backlight {
|
|
compatible = "pwm-backlight";
|
|
enable-gpios = <&gpio_a 1>;
|
|
power-supply = <&ldo_1>;
|
|
pwms = <&pwm 0 1000>;
|
|
default-brightness-level = <5>;
|
|
brightness-levels = <0 16 32 64 128 170 202 234 255>;
|
|
};
|
|
|
|
bind-test {
|
|
compatible = "simple-bus";
|
|
bind-test-child1 {
|
|
compatible = "sandbox,phy";
|
|
#phy-cells = <1>;
|
|
};
|
|
|
|
bind-test-child2 {
|
|
compatible = "simple-bus";
|
|
};
|
|
};
|
|
|
|
b-test {
|
|
reg = <3 1>;
|
|
compatible = "denx,u-boot-fdt-test";
|
|
ping-expect = <3>;
|
|
ping-add = <3>;
|
|
|
|
mux-controls = <&muxcontroller0 0>;
|
|
mux-control-names = "mux0";
|
|
};
|
|
|
|
phy_provider0: gen_phy@0 {
|
|
compatible = "sandbox,phy";
|
|
#phy-cells = <1>;
|
|
};
|
|
|
|
phy_provider1: gen_phy@1 {
|
|
compatible = "sandbox,phy";
|
|
#phy-cells = <0>;
|
|
broken;
|
|
};
|
|
|
|
phy_provider2: gen_phy@2 {
|
|
compatible = "sandbox,phy";
|
|
#phy-cells = <0>;
|
|
};
|
|
|
|
gen_phy_user: gen_phy_user {
|
|
compatible = "simple-bus";
|
|
phys = <&phy_provider0 0>, <&phy_provider0 1>, <&phy_provider1>;
|
|
phy-names = "phy1", "phy2", "phy3";
|
|
};
|
|
|
|
gen_phy_user1: gen_phy_user1 {
|
|
compatible = "simple-bus";
|
|
phys = <&phy_provider0 0>, <&phy_provider2>;
|
|
phy-names = "phy1", "phy2";
|
|
};
|
|
|
|
some-bus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "denx,u-boot-test-bus";
|
|
reg = <3 1>;
|
|
ping-expect = <4>;
|
|
ping-add = <4>;
|
|
c-test@5 {
|
|
compatible = "denx,u-boot-fdt-test";
|
|
reg = <5>;
|
|
ping-expect = <5>;
|
|
ping-add = <5>;
|
|
};
|
|
c-test@0 {
|
|
compatible = "denx,u-boot-fdt-test";
|
|
reg = <0>;
|
|
ping-expect = <6>;
|
|
ping-add = <6>;
|
|
};
|
|
c-test@1 {
|
|
compatible = "denx,u-boot-fdt-test";
|
|
reg = <1>;
|
|
ping-expect = <7>;
|
|
ping-add = <7>;
|
|
};
|
|
};
|
|
|
|
d-test {
|
|
reg = <3 1>;
|
|
ping-expect = <6>;
|
|
ping-add = <6>;
|
|
compatible = "google,another-fdt-test";
|
|
};
|
|
|
|
e-test {
|
|
reg = <3 1>;
|
|
ping-expect = <6>;
|
|
ping-add = <6>;
|
|
compatible = "google,another-fdt-test";
|
|
};
|
|
|
|
f-test {
|
|
compatible = "denx,u-boot-fdt-test";
|
|
};
|
|
|
|
g-test {
|
|
compatible = "denx,u-boot-fdt-test";
|
|
};
|
|
|
|
h-test {
|
|
compatible = "denx,u-boot-fdt-test1";
|
|
};
|
|
|
|
i-test {
|
|
compatible = "mediatek,u-boot-fdt-test";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
subnode@0 {
|
|
reg = <0>;
|
|
};
|
|
|
|
subnode@1 {
|
|
reg = <1>;
|
|
};
|
|
|
|
subnode@2 {
|
|
reg = <2>;
|
|
};
|
|
};
|
|
|
|
devres-test {
|
|
compatible = "denx,u-boot-devres-test";
|
|
};
|
|
|
|
another-test {
|
|
reg = <0 2>;
|
|
compatible = "denx,u-boot-fdt-test";
|
|
test4-gpios = <&gpio_a 14>, <&gpio_b 4 1 3 2 1>;
|
|
test5-gpios = <&gpio_a 19>;
|
|
};
|
|
|
|
acpi_test1: acpi-test {
|
|
compatible = "denx,u-boot-acpi-test";
|
|
acpi-ssdt-test-data = "ab";
|
|
acpi-dsdt-test-data = "hi";
|
|
child {
|
|
compatible = "denx,u-boot-acpi-test";
|
|
};
|
|
};
|
|
|
|
acpi_test2: acpi-test2 {
|
|
compatible = "denx,u-boot-acpi-test";
|
|
acpi-ssdt-test-data = "cd";
|
|
acpi-dsdt-test-data = "jk";
|
|
};
|
|
|
|
clocks {
|
|
clk_fixed: clk-fixed {
|
|
compatible = "fixed-clock";
|
|
#clock-cells = <0>;
|
|
clock-frequency = <1234>;
|
|
};
|
|
|
|
clk_fixed_factor: clk-fixed-factor {
|
|
compatible = "fixed-factor-clock";
|
|
#clock-cells = <0>;
|
|
clock-div = <3>;
|
|
clock-mult = <2>;
|
|
clocks = <&clk_fixed>;
|
|
};
|
|
|
|
osc {
|
|
compatible = "fixed-clock";
|
|
#clock-cells = <0>;
|
|
clock-frequency = <20000000>;
|
|
};
|
|
};
|
|
|
|
clk_sandbox: clk-sbox {
|
|
compatible = "sandbox,clk";
|
|
#clock-cells = <1>;
|
|
assigned-clocks = <&clk_sandbox 3>;
|
|
assigned-clock-rates = <321>;
|
|
};
|
|
|
|
clk-test {
|
|
compatible = "sandbox,clk-test";
|
|
clocks = <&clk_fixed>,
|
|
<&clk_sandbox 1>,
|
|
<&clk_sandbox 0>,
|
|
<&clk_sandbox 3>,
|
|
<&clk_sandbox 2>;
|
|
clock-names = "fixed", "i2c", "spi", "uart2", "uart1";
|
|
};
|
|
|
|
ccf: clk-ccf {
|
|
compatible = "sandbox,clk-ccf";
|
|
};
|
|
|
|
eth@10002000 {
|
|
compatible = "sandbox,eth";
|
|
reg = <0x10002000 0x1000>;
|
|
fake-host-hwaddr = [00 00 66 44 22 00];
|
|
};
|
|
|
|
eth_5: eth@10003000 {
|
|
compatible = "sandbox,eth";
|
|
reg = <0x10003000 0x1000>;
|
|
fake-host-hwaddr = [00 00 66 44 22 11];
|
|
};
|
|
|
|
eth_3: sbe5 {
|
|
compatible = "sandbox,eth";
|
|
reg = <0x10005000 0x1000>;
|
|
fake-host-hwaddr = [00 00 66 44 22 33];
|
|
};
|
|
|
|
eth@10004000 {
|
|
compatible = "sandbox,eth";
|
|
reg = <0x10004000 0x1000>;
|
|
fake-host-hwaddr = [00 00 66 44 22 22];
|
|
};
|
|
|
|
firmware {
|
|
sandbox_firmware: sandbox-firmware {
|
|
compatible = "sandbox,firmware";
|
|
};
|
|
|
|
sandbox-scmi-agent@0 {
|
|
compatible = "sandbox,scmi-agent";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
clk_scmi0: protocol@14 {
|
|
reg = <0x14>;
|
|
#clock-cells = <1>;
|
|
};
|
|
|
|
reset_scmi0: protocol@16 {
|
|
reg = <0x16>;
|
|
#reset-cells = <1>;
|
|
};
|
|
};
|
|
|
|
sandbox-scmi-agent@1 {
|
|
compatible = "sandbox,scmi-agent";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
clk_scmi1: protocol@14 {
|
|
reg = <0x14>;
|
|
#clock-cells = <1>;
|
|
};
|
|
|
|
protocol@10 {
|
|
reg = <0x10>;
|
|
};
|
|
};
|
|
};
|
|
|
|
pinctrl-gpio {
|
|
compatible = "sandbox,pinctrl-gpio";
|
|
|
|
gpio_a: base-gpios {
|
|
compatible = "sandbox,gpio";
|
|
gpio-controller;
|
|
#gpio-cells = <1>;
|
|
gpio-bank-name = "a";
|
|
sandbox,gpio-count = <20>;
|
|
hog_input_active_low {
|
|
gpio-hog;
|
|
input;
|
|
gpios = <10 GPIO_ACTIVE_LOW>;
|
|
};
|
|
hog_input_active_high {
|
|
gpio-hog;
|
|
input;
|
|
gpios = <11 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
hog_output_low {
|
|
gpio-hog;
|
|
output-low;
|
|
gpios = <12 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
hog_output_high {
|
|
gpio-hog;
|
|
output-high;
|
|
gpios = <13 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
};
|
|
|
|
gpio_b: extra-gpios {
|
|
compatible = "sandbox,gpio";
|
|
gpio-controller;
|
|
#gpio-cells = <5>;
|
|
gpio-bank-name = "b";
|
|
sandbox,gpio-count = <10>;
|
|
};
|
|
|
|
gpio_c: pinmux-gpios {
|
|
compatible = "sandbox,gpio";
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
gpio-bank-name = "c";
|
|
sandbox,gpio-count = <10>;
|
|
};
|
|
};
|
|
|
|
i2c@0 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <0 1>;
|
|
compatible = "sandbox,i2c";
|
|
clock-frequency = <100000>;
|
|
eeprom@2c {
|
|
reg = <0x2c>;
|
|
compatible = "i2c-eeprom";
|
|
sandbox,emul = <&emul_eeprom>;
|
|
partitions {
|
|
compatible = "fixed-partitions";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
bootcount_i2c: bootcount@10 {
|
|
reg = <10 2>;
|
|
};
|
|
};
|
|
};
|
|
|
|
rtc_0: rtc@43 {
|
|
reg = <0x43>;
|
|
compatible = "sandbox-rtc";
|
|
sandbox,emul = <&emul0>;
|
|
};
|
|
|
|
rtc_1: rtc@61 {
|
|
reg = <0x61>;
|
|
compatible = "sandbox-rtc";
|
|
sandbox,emul = <&emul1>;
|
|
};
|
|
|
|
i2c_emul: emul {
|
|
reg = <0xff>;
|
|
compatible = "sandbox,i2c-emul-parent";
|
|
emul_eeprom: emul-eeprom {
|
|
compatible = "sandbox,i2c-eeprom";
|
|
sandbox,filename = "i2c.bin";
|
|
sandbox,size = <256>;
|
|
};
|
|
emul0: emul0 {
|
|
compatible = "sandbox,i2c-rtc";
|
|
};
|
|
emul1: emull {
|
|
compatible = "sandbox,i2c-rtc";
|
|
};
|
|
};
|
|
|
|
sandbox_pmic: sandbox_pmic {
|
|
reg = <0x40>;
|
|
sandbox,emul = <&emul_pmic0>;
|
|
};
|
|
|
|
mc34708: pmic@41 {
|
|
reg = <0x41>;
|
|
sandbox,emul = <&emul_pmic1>;
|
|
};
|
|
};
|
|
|
|
bootcount@0 {
|
|
compatible = "u-boot,bootcount-rtc";
|
|
rtc = <&rtc_1>;
|
|
offset = <0x13>;
|
|
};
|
|
|
|
bootcount {
|
|
compatible = "u-boot,bootcount-i2c-eeprom";
|
|
i2c-eeprom = <&bootcount_i2c>;
|
|
};
|
|
|
|
adc@0 {
|
|
compatible = "sandbox,adc";
|
|
vdd-supply = <&buck2>;
|
|
vss-microvolts = <0>;
|
|
};
|
|
|
|
irq: irq {
|
|
compatible = "sandbox,irq";
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
|
|
lcd {
|
|
u-boot,dm-pre-reloc;
|
|
compatible = "sandbox,lcd-sdl";
|
|
xres = <1366>;
|
|
yres = <768>;
|
|
};
|
|
|
|
leds {
|
|
compatible = "gpio-leds";
|
|
|
|
iracibble {
|
|
gpios = <&gpio_a 1 0>;
|
|
label = "sandbox:red";
|
|
};
|
|
|
|
martinet {
|
|
gpios = <&gpio_a 2 0>;
|
|
label = "sandbox:green";
|
|
};
|
|
|
|
default_on {
|
|
gpios = <&gpio_a 5 0>;
|
|
label = "sandbox:default_on";
|
|
default-state = "on";
|
|
};
|
|
|
|
default_off {
|
|
gpios = <&gpio_a 6 0>;
|
|
/* label intentionally omitted */
|
|
default-state = "off";
|
|
};
|
|
};
|
|
|
|
mbox: mbox {
|
|
compatible = "sandbox,mbox";
|
|
#mbox-cells = <1>;
|
|
};
|
|
|
|
mbox-test {
|
|
compatible = "sandbox,mbox-test";
|
|
mboxes = <&mbox 100>, <&mbox 1>;
|
|
mbox-names = "other", "test";
|
|
};
|
|
|
|
cpus {
|
|
timebase-frequency = <2000000>;
|
|
cpu-test1 {
|
|
timebase-frequency = <3000000>;
|
|
compatible = "sandbox,cpu_sandbox";
|
|
u-boot,dm-pre-reloc;
|
|
};
|
|
|
|
cpu-test2 {
|
|
compatible = "sandbox,cpu_sandbox";
|
|
u-boot,dm-pre-reloc;
|
|
};
|
|
|
|
cpu-test3 {
|
|
compatible = "sandbox,cpu_sandbox";
|
|
u-boot,dm-pre-reloc;
|
|
};
|
|
};
|
|
|
|
chipid: chipid {
|
|
compatible = "sandbox,soc";
|
|
};
|
|
|
|
i2s: i2s {
|
|
compatible = "sandbox,i2s";
|
|
#sound-dai-cells = <1>;
|
|
sandbox,silent; /* Don't emit sounds while testing */
|
|
};
|
|
|
|
nop-test_0 {
|
|
compatible = "sandbox,nop_sandbox1";
|
|
nop-test_1 {
|
|
compatible = "sandbox,nop_sandbox2";
|
|
bind = "True";
|
|
};
|
|
nop-test_2 {
|
|
compatible = "sandbox,nop_sandbox2";
|
|
bind = "False";
|
|
};
|
|
};
|
|
|
|
misc-test {
|
|
compatible = "sandbox,misc_sandbox";
|
|
};
|
|
|
|
mmc2 {
|
|
compatible = "sandbox,mmc";
|
|
};
|
|
|
|
mmc1 {
|
|
compatible = "sandbox,mmc";
|
|
};
|
|
|
|
mmc0 {
|
|
compatible = "sandbox,mmc";
|
|
};
|
|
|
|
pch {
|
|
compatible = "sandbox,pch";
|
|
};
|
|
|
|
pci0: pci@0 {
|
|
compatible = "sandbox,pci";
|
|
device_type = "pci";
|
|
bus-range = <0x00 0xff>;
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
ranges = <0x02000000 0 0x10000000 0x10000000 0 0x2000000
|
|
0x01000000 0 0x20000000 0x20000000 0 0x2000>;
|
|
pci@0,0 {
|
|
compatible = "pci-generic";
|
|
reg = <0x0000 0 0 0 0>;
|
|
sandbox,emul = <&swap_case_emul0_0>;
|
|
};
|
|
pci@1,0 {
|
|
compatible = "pci-generic";
|
|
/* reg 0 is at 0x14, using FDT_PCI_SPACE_MEM32 */
|
|
reg = <0x02000814 0 0 0 0
|
|
0x01000810 0 0 0 0>;
|
|
sandbox,emul = <&swap_case_emul0_1>;
|
|
};
|
|
p2sb-pci@2,0 {
|
|
compatible = "sandbox,p2sb";
|
|
reg = <0x02001010 0 0 0 0>;
|
|
sandbox,emul = <&p2sb_emul>;
|
|
|
|
adder {
|
|
intel,p2sb-port-id = <3>;
|
|
compatible = "sandbox,adder";
|
|
};
|
|
};
|
|
pci@1e,0 {
|
|
compatible = "sandbox,pmc";
|
|
reg = <0xf000 0 0 0 0>;
|
|
sandbox,emul = <&pmc_emul1e>;
|
|
acpi-base = <0x400>;
|
|
gpe0-dwx-mask = <0xf>;
|
|
gpe0-dwx-shift-base = <4>;
|
|
gpe0-dw = <6 7 9>;
|
|
gpe0-sts = <0x20>;
|
|
gpe0-en = <0x30>;
|
|
};
|
|
pci@1f,0 {
|
|
compatible = "pci-generic";
|
|
/* reg 0 is at 0x10, using FDT_PCI_SPACE_IO */
|
|
reg = <0x0100f810 0 0 0 0>;
|
|
sandbox,emul = <&swap_case_emul0_1f>;
|
|
};
|
|
};
|
|
|
|
pci-emul0 {
|
|
compatible = "sandbox,pci-emul-parent";
|
|
swap_case_emul0_0: emul0@0,0 {
|
|
compatible = "sandbox,swap-case";
|
|
};
|
|
swap_case_emul0_1: emul0@1,0 {
|
|
compatible = "sandbox,swap-case";
|
|
use-ea;
|
|
};
|
|
swap_case_emul0_1f: emul0@1f,0 {
|
|
compatible = "sandbox,swap-case";
|
|
};
|
|
p2sb_emul: emul@2,0 {
|
|
compatible = "sandbox,p2sb-emul";
|
|
};
|
|
pmc_emul1e: emul@1e,0 {
|
|
compatible = "sandbox,pmc-emul";
|
|
};
|
|
};
|
|
|
|
pci1: pci@1 {
|
|
compatible = "sandbox,pci";
|
|
device_type = "pci";
|
|
bus-range = <0x00 0xff>;
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
ranges = <0x02000000 0 0x30000000 0x30000000 0 0x2000 // MEM0
|
|
0x02000000 0 0x31000000 0x31000000 0 0x2000 // MEM1
|
|
0x01000000 0 0x40000000 0x40000000 0 0x2000>;
|
|
sandbox,dev-info = <0x08 0x00 0x1234 0x5678
|
|
0x0c 0x00 0x1234 0x5678
|
|
0x10 0x00 0x1234 0x5678>;
|
|
pci@10,0 {
|
|
reg = <0x8000 0 0 0 0>;
|
|
};
|
|
};
|
|
|
|
pci2: pci@2 {
|
|
compatible = "sandbox,pci";
|
|
device_type = "pci";
|
|
bus-range = <0x00 0xff>;
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
ranges = <0x02000000 0 0x50000000 0x50000000 0 0x2000
|
|
0x01000000 0 0x60000000 0x60000000 0 0x2000>;
|
|
sandbox,dev-info = <0x08 0x00 0x1234 0x5678>;
|
|
pci@1f,0 {
|
|
compatible = "pci-generic";
|
|
reg = <0xf800 0 0 0 0>;
|
|
sandbox,emul = <&swap_case_emul2_1f>;
|
|
};
|
|
};
|
|
|
|
pci-emul2 {
|
|
compatible = "sandbox,pci-emul-parent";
|
|
swap_case_emul2_1f: emul2@1f,0 {
|
|
compatible = "sandbox,swap-case";
|
|
};
|
|
};
|
|
|
|
pci_ep: pci_ep {
|
|
compatible = "sandbox,pci_ep";
|
|
};
|
|
|
|
probing {
|
|
compatible = "simple-bus";
|
|
test1 {
|
|
compatible = "denx,u-boot-probe-test";
|
|
};
|
|
|
|
test2 {
|
|
compatible = "denx,u-boot-probe-test";
|
|
};
|
|
|
|
test3 {
|
|
compatible = "denx,u-boot-probe-test";
|
|
};
|
|
|
|
test4 {
|
|
compatible = "denx,u-boot-probe-test";
|
|
first-syscon = <&syscon0>;
|
|
second-sys-ctrl = <&another_system_controller>;
|
|
third-syscon = <&syscon2>;
|
|
};
|
|
};
|
|
|
|
pwrdom: power-domain {
|
|
compatible = "sandbox,power-domain";
|
|
#power-domain-cells = <1>;
|
|
};
|
|
|
|
power-domain-test {
|
|
compatible = "sandbox,power-domain-test";
|
|
power-domains = <&pwrdom 2>;
|
|
};
|
|
|
|
pwm: pwm {
|
|
compatible = "sandbox,pwm";
|
|
#pwm-cells = <2>;
|
|
};
|
|
|
|
pwm2 {
|
|
compatible = "sandbox,pwm";
|
|
#pwm-cells = <2>;
|
|
};
|
|
|
|
ram {
|
|
compatible = "sandbox,ram";
|
|
};
|
|
|
|
reset@0 {
|
|
compatible = "sandbox,warm-reset";
|
|
};
|
|
|
|
reset@1 {
|
|
compatible = "sandbox,reset";
|
|
};
|
|
|
|
resetc: reset-ctl {
|
|
compatible = "sandbox,reset-ctl";
|
|
#reset-cells = <1>;
|
|
};
|
|
|
|
reset-ctl-test {
|
|
compatible = "sandbox,reset-ctl-test";
|
|
resets = <&resetc 100>, <&resetc 2>;
|
|
reset-names = "other", "test";
|
|
};
|
|
|
|
rng {
|
|
compatible = "sandbox,sandbox-rng";
|
|
};
|
|
|
|
rproc_1: rproc@1 {
|
|
compatible = "sandbox,test-processor";
|
|
remoteproc-name = "remoteproc-test-dev1";
|
|
};
|
|
|
|
rproc_2: rproc@2 {
|
|
compatible = "sandbox,test-processor";
|
|
internal-memory-mapped;
|
|
remoteproc-name = "remoteproc-test-dev2";
|
|
};
|
|
|
|
panel {
|
|
compatible = "simple-panel";
|
|
backlight = <&backlight 0 100>;
|
|
};
|
|
|
|
smem@0 {
|
|
compatible = "sandbox,smem";
|
|
};
|
|
|
|
sound {
|
|
compatible = "sandbox,sound";
|
|
cpu {
|
|
sound-dai = <&i2s 0>;
|
|
};
|
|
|
|
codec {
|
|
sound-dai = <&audio 0>;
|
|
};
|
|
};
|
|
|
|
spi@0 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <0 1>;
|
|
compatible = "sandbox,spi";
|
|
cs-gpios = <0>, <0>, <&gpio_a 0>;
|
|
spi.bin@0 {
|
|
reg = <0>;
|
|
compatible = "spansion,m25p16", "jedec,spi-nor";
|
|
spi-max-frequency = <40000000>;
|
|
sandbox,filename = "spi.bin";
|
|
};
|
|
spi.bin@1 {
|
|
reg = <1>;
|
|
compatible = "spansion,m25p16", "jedec,spi-nor";
|
|
spi-max-frequency = <50000000>;
|
|
sandbox,filename = "spi.bin";
|
|
spi-cpol;
|
|
spi-cpha;
|
|
};
|
|
};
|
|
|
|
syscon0: syscon@0 {
|
|
compatible = "sandbox,syscon0";
|
|
reg = <0x10 16>;
|
|
};
|
|
|
|
another_system_controller: syscon@1 {
|
|
compatible = "sandbox,syscon1";
|
|
reg = <0x20 5
|
|
0x28 6
|
|
0x30 7
|
|
0x38 8>;
|
|
};
|
|
|
|
syscon2: syscon@2 {
|
|
compatible = "simple-mfd", "syscon";
|
|
reg = <0x40 5
|
|
0x48 6
|
|
0x50 7
|
|
0x58 8>;
|
|
};
|
|
|
|
syscon3: syscon@3 {
|
|
compatible = "simple-mfd", "syscon";
|
|
reg = <0x000100 0x10>;
|
|
|
|
muxcontroller0: a-mux-controller {
|
|
compatible = "mmio-mux";
|
|
#mux-control-cells = <1>;
|
|
|
|
mux-reg-masks = <0x0 0x30>, /* 0: reg 0x0, bits 5:4 */
|
|
<0xc 0x1E>, /* 1: reg 0xc, bits 4:1 */
|
|
<0x4 0xFF>; /* 2: reg 0x4, bits 7:0 */
|
|
idle-states = <MUX_IDLE_AS_IS>, <0x02>, <0x73>;
|
|
u-boot,mux-autoprobe;
|
|
};
|
|
};
|
|
|
|
muxcontroller1: emul-mux-controller {
|
|
compatible = "mux-emul";
|
|
#mux-control-cells = <0>;
|
|
u-boot,mux-autoprobe;
|
|
idle-state = <0xabcd>;
|
|
};
|
|
|
|
testfdtm0 {
|
|
compatible = "denx,u-boot-fdtm-test";
|
|
};
|
|
|
|
testfdtm1: testfdtm1 {
|
|
compatible = "denx,u-boot-fdtm-test";
|
|
};
|
|
|
|
testfdtm2 {
|
|
compatible = "denx,u-boot-fdtm-test";
|
|
};
|
|
|
|
timer@0 {
|
|
compatible = "sandbox,timer";
|
|
clock-frequency = <1000000>;
|
|
};
|
|
|
|
timer@1 {
|
|
compatible = "sandbox,timer";
|
|
sandbox,timebase-frequency-fallback;
|
|
};
|
|
|
|
tpm2 {
|
|
compatible = "sandbox,tpm2";
|
|
};
|
|
|
|
uart0: serial {
|
|
compatible = "sandbox,serial";
|
|
u-boot,dm-pre-reloc;
|
|
};
|
|
|
|
usb_0: usb@0 {
|
|
compatible = "sandbox,usb";
|
|
status = "disabled";
|
|
hub {
|
|
compatible = "sandbox,usb-hub";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
flash-stick {
|
|
reg = <0>;
|
|
compatible = "sandbox,usb-flash";
|
|
};
|
|
};
|
|
};
|
|
|
|
usb_1: usb@1 {
|
|
compatible = "sandbox,usb";
|
|
hub {
|
|
compatible = "usb-hub";
|
|
usb,device-class = <9>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
hub-emul {
|
|
compatible = "sandbox,usb-hub";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
flash-stick@0 {
|
|
reg = <0>;
|
|
compatible = "sandbox,usb-flash";
|
|
sandbox,filepath = "testflash.bin";
|
|
};
|
|
|
|
flash-stick@1 {
|
|
reg = <1>;
|
|
compatible = "sandbox,usb-flash";
|
|
sandbox,filepath = "testflash1.bin";
|
|
};
|
|
|
|
flash-stick@2 {
|
|
reg = <2>;
|
|
compatible = "sandbox,usb-flash";
|
|
sandbox,filepath = "testflash2.bin";
|
|
};
|
|
|
|
keyb@3 {
|
|
reg = <3>;
|
|
compatible = "sandbox,usb-keyb";
|
|
};
|
|
|
|
};
|
|
|
|
usbstor@1 {
|
|
reg = <1>;
|
|
};
|
|
usbstor@3 {
|
|
reg = <3>;
|
|
};
|
|
};
|
|
};
|
|
|
|
usb_2: usb@2 {
|
|
compatible = "sandbox,usb";
|
|
status = "disabled";
|
|
};
|
|
|
|
spmi: spmi@0 {
|
|
compatible = "sandbox,spmi";
|
|
#address-cells = <0x1>;
|
|
#size-cells = <0x1>;
|
|
ranges;
|
|
pm8916@0 {
|
|
compatible = "qcom,spmi-pmic";
|
|
reg = <0x0 0x1>;
|
|
#address-cells = <0x1>;
|
|
#size-cells = <0x1>;
|
|
ranges;
|
|
|
|
spmi_gpios: gpios@c000 {
|
|
compatible = "qcom,pm8916-gpio";
|
|
reg = <0xc000 0x400>;
|
|
gpio-controller;
|
|
gpio-count = <4>;
|
|
#gpio-cells = <2>;
|
|
gpio-bank-name="spmi";
|
|
};
|
|
};
|
|
};
|
|
|
|
wdt0: wdt@0 {
|
|
compatible = "sandbox,wdt";
|
|
};
|
|
|
|
axi: axi@0 {
|
|
compatible = "sandbox,axi";
|
|
#address-cells = <0x1>;
|
|
#size-cells = <0x1>;
|
|
store@0 {
|
|
compatible = "sandbox,sandbox_store";
|
|
reg = <0x0 0x400>;
|
|
};
|
|
};
|
|
|
|
chosen {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
setting = "sunrise ohoka";
|
|
other-node = "/some-bus/c-test@5";
|
|
int-values = <0x1937 72993>;
|
|
u-boot,acpi-ssdt-order = <&acpi_test2 &acpi_test1>;
|
|
chosen-test {
|
|
compatible = "denx,u-boot-fdt-test";
|
|
reg = <9 1>;
|
|
};
|
|
};
|
|
|
|
translation-test@8000 {
|
|
compatible = "simple-bus";
|
|
reg = <0x8000 0x4000>;
|
|
|
|
#address-cells = <0x2>;
|
|
#size-cells = <0x1>;
|
|
|
|
ranges = <0 0x0 0x8000 0x1000
|
|
1 0x100 0x9000 0x1000
|
|
2 0x200 0xA000 0x1000
|
|
3 0x300 0xB000 0x1000
|
|
4 0x400 0xC000 0x1000
|
|
>;
|
|
|
|
dma-ranges = <0 0x000 0x10000000 0x1000
|
|
1 0x100 0x20000000 0x1000
|
|
>;
|
|
|
|
dev@0,0 {
|
|
compatible = "denx,u-boot-fdt-dummy";
|
|
reg = <0 0x0 0x1000>;
|
|
reg-names = "sandbox-dummy-0";
|
|
};
|
|
|
|
dev@1,100 {
|
|
compatible = "denx,u-boot-fdt-dummy";
|
|
reg = <1 0x100 0x1000>;
|
|
|
|
};
|
|
|
|
dev@2,200 {
|
|
compatible = "denx,u-boot-fdt-dummy";
|
|
reg = <2 0x200 0x1000>;
|
|
};
|
|
|
|
|
|
noxlatebus@3,300 {
|
|
compatible = "simple-bus";
|
|
reg = <3 0x300 0x1000>;
|
|
|
|
#address-cells = <0x1>;
|
|
#size-cells = <0x0>;
|
|
|
|
dev@42 {
|
|
compatible = "denx,u-boot-fdt-dummy";
|
|
reg = <0x42>;
|
|
};
|
|
};
|
|
|
|
xlatebus@4,400 {
|
|
compatible = "sandbox,zero-size-cells-bus";
|
|
reg = <4 0x400 0x1000>;
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges = <0 4 0x400 0x1000>;
|
|
|
|
devs {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
dev@19 {
|
|
compatible = "denx,u-boot-fdt-dummy";
|
|
reg = <0x19>;
|
|
};
|
|
};
|
|
};
|
|
|
|
};
|
|
|
|
osd {
|
|
compatible = "sandbox,sandbox_osd";
|
|
};
|
|
|
|
sandbox_tee {
|
|
compatible = "sandbox,tee";
|
|
};
|
|
|
|
sandbox_virtio1 {
|
|
compatible = "sandbox,virtio1";
|
|
};
|
|
|
|
sandbox_virtio2 {
|
|
compatible = "sandbox,virtio2";
|
|
};
|
|
|
|
sandbox_scmi {
|
|
compatible = "sandbox,scmi-devices";
|
|
clocks = <&clk_scmi0 7>, <&clk_scmi0 3>, <&clk_scmi1 1>;
|
|
resets = <&reset_scmi0 3>;
|
|
};
|
|
|
|
pinctrl {
|
|
compatible = "sandbox,pinctrl";
|
|
|
|
pinctrl-names = "default", "alternate";
|
|
pinctrl-0 = <&pinctrl_gpios>, <&pinctrl_i2s>;
|
|
pinctrl-1 = <&pinctrl_spi>, <&pinctrl_i2c>;
|
|
|
|
pinctrl_gpios: gpios {
|
|
gpio0 {
|
|
pins = "P5";
|
|
function = "GPIO";
|
|
bias-pull-up;
|
|
input-disable;
|
|
};
|
|
gpio1 {
|
|
pins = "P6";
|
|
function = "GPIO";
|
|
output-high;
|
|
drive-open-drain;
|
|
};
|
|
gpio2 {
|
|
pinmux = <SANDBOX_PINMUX(7, SANDBOX_PINMUX_GPIO)>;
|
|
bias-pull-down;
|
|
input-enable;
|
|
};
|
|
gpio3 {
|
|
pinmux = <SANDBOX_PINMUX(8, SANDBOX_PINMUX_GPIO)>;
|
|
bias-disable;
|
|
};
|
|
};
|
|
|
|
pinctrl_i2c: i2c {
|
|
groups {
|
|
groups = "I2C_UART";
|
|
function = "I2C";
|
|
};
|
|
|
|
pins {
|
|
pins = "P0", "P1";
|
|
drive-open-drain;
|
|
};
|
|
};
|
|
|
|
pinctrl_i2s: i2s {
|
|
groups = "SPI_I2S";
|
|
function = "I2S";
|
|
};
|
|
|
|
pinctrl_spi: spi {
|
|
groups = "SPI_I2S";
|
|
function = "SPI";
|
|
|
|
cs {
|
|
pinmux = <SANDBOX_PINMUX(5, SANDBOX_PINMUX_CS)>,
|
|
<SANDBOX_PINMUX(6, SANDBOX_PINMUX_CS)>;
|
|
};
|
|
};
|
|
};
|
|
|
|
hwspinlock@0 {
|
|
compatible = "sandbox,hwspinlock";
|
|
};
|
|
|
|
dma: dma {
|
|
compatible = "sandbox,dma";
|
|
#dma-cells = <1>;
|
|
|
|
dmas = <&dma 0>, <&dma 1>, <&dma 2>;
|
|
dma-names = "m2m", "tx0", "rx0";
|
|
};
|
|
|
|
/*
|
|
* keep mdio-mux ahead of mdio so that the mux is removed first at the
|
|
* end of the test. If parent mdio is removed first, clean-up of the
|
|
* mux will trigger a 2nd probe of parent-mdio, leaving parent-mdio
|
|
* active at the end of the test. That it turn doesn't allow the mdio
|
|
* class to be destroyed, triggering an error.
|
|
*/
|
|
mdio-mux-test {
|
|
compatible = "sandbox,mdio-mux";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
mdio-parent-bus = <&mdio>;
|
|
|
|
mdio-ch-test@0 {
|
|
reg = <0>;
|
|
};
|
|
mdio-ch-test@1 {
|
|
reg = <1>;
|
|
};
|
|
};
|
|
|
|
mdio: mdio-test {
|
|
compatible = "sandbox,mdio";
|
|
};
|
|
|
|
pm-bus-test {
|
|
compatible = "simple-pm-bus";
|
|
clocks = <&clk_sandbox 4>;
|
|
power-domains = <&pwrdom 1>;
|
|
};
|
|
|
|
resetc2: syscon-reset {
|
|
compatible = "syscon-reset";
|
|
#reset-cells = <1>;
|
|
regmap = <&syscon0>;
|
|
offset = <1>;
|
|
mask = <0x27FFFFFF>;
|
|
assert-high = <0>;
|
|
};
|
|
|
|
syscon-reset-test {
|
|
compatible = "sandbox,misc_sandbox";
|
|
resets = <&resetc2 15>, <&resetc2 30>, <&resetc2 60>;
|
|
reset-names = "valid", "no_mask", "out_of_range";
|
|
};
|
|
|
|
sysinfo {
|
|
compatible = "sandbox,sysinfo-sandbox";
|
|
};
|
|
|
|
some_regmapped-bus {
|
|
#address-cells = <0x1>;
|
|
#size-cells = <0x1>;
|
|
|
|
ranges = <0x0 0x0 0x10>;
|
|
compatible = "simple-bus";
|
|
|
|
regmap-test_0 {
|
|
reg = <0 0x10>;
|
|
compatible = "sandbox,regmap_test";
|
|
};
|
|
};
|
|
};
|
|
|
|
#include "sandbox_pmic.dtsi"
|