# Raspberry Pi 3
###### tags: `mimiker`
## Spodziewana topologia
```
> rootdev: (rpi3)
+ rm: mem[0]: BCM2835 peripherals (16MiB)
+ rm: mem[1]: BCM2836 shared processor (4KiB)
* intr_setup / intr_teardown
* alloc_resource / ...
> intc
+ rm: irq[0..31] ARM specific interrupts
+ rm: irq[32..95]: BCM2835 peripherals
> uart
+ irq[UART] z intc
+ mem[UART]
> timer
+ irq[0..3] z intc
> cpulist
> cpu0
```
## Dokumentacja
### Raspberry Pi 3
* [ARM local peripherals](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2836/QA7_rev3.4.pdf)
* [BCM2835 ARM peripherals](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/BCM2835-ARM-Peripherals.pdf)
* [BCM2835 datasheet errata](https://elinux.org/BCM2835_datasheet_errata)
### Flattened Device Tree
* [FreeBSD FDT](https://wiki.freebsd.org/FlattenedDeviceTree/)
* [Device Tree Reference](https://elinux.org/Device_Tree_Reference)
* [FDT sepcification](https://github.com/devicetree-org/devicetree-specification/releases/download/v0.3/devicetree-specification-v0.3.pdf)
## Linux
### _dtb_ -> _fdt_
```
/dts-v1/;
// magic: 0xd00dfeed
// totalsize: 0x3158 (12632)
// off_dt_struct: 0x48
// off_dt_strings: 0x2e30
// off_mem_rsvmap: 0x28
// version: 17
// last_comp_version: 16
// boot_cpuid_phys: 0x0
// size_dt_strings: 0x328
// size_dt_struct: 0x2de8
/memreserve/ 0 0x1000;
/ {
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
model = "Raspberry Pi 3 Model B";
interrupt-parent = <0x00000001>;
#address-cells = <0x00000001>;
#size-cells = <0x00000001>;
aliases {
serial0 = "/soc/serial@7e201000";
serial1 = "/soc/serial@7e215040";
ethernet0 = "/soc/usb@7e980000/usb1@1/usbether@1";
};
chosen {
stdout-path = "serial1:115200n8";
};
thermal-zones {
cpu-thermal {
polling-delay-passive = <0x00000000>;
polling-delay = <0x000003e8>;
thermal-sensors = <0x00000002>;
coefficients = <0xfffffde6 0x00064960>;
trips {
cpu-crit {
temperature = <0x00013880>;
hysteresis = <0x00000000>;
type = "critical";
};
};
cooling-maps {
};
};
};
soc {
compatible = "simple-bus";
#address-cells = <0x00000001>;
#size-cells = <0x00000001>;
ranges = <0x7e000000 0x3f000000 0x01000000 0x40000000 0x40000000 0x00001000>;
dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
timer@7e003000 {
compatible = "brcm,bcm2835-system-timer";
reg = <0x7e003000 0x00001000>;
interrupts = <0x00000001 0x00000000 0x00000001 0x00000001 0x00000001 0x00000002 0x00000001 0x00000003>;
clock-frequency = <0x000f4240>;
};
dma@7e007000 {
compatible = "brcm,bcm2835-dma";
reg = <0x7e007000 0x00000f00>;
interrupts = <0x00000001 0x00000010 0x00000001 0x00000011 0x00000001 0x00000012 0x00000001 0x00000013 0x00000001 0x00000014 0x00000001 0x00000015 0x00000001 0x00000016 0x00000001 0x00000017 0x00000001 0x00000018 0x00000001 0x00000019 0x00000001 0x0000001a 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001c>;
interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all";
#dma-cells = <0x00000001>;
brcm,dma-channel-mask = <0x00007f35>;
linux,phandle = <0x0000000a>;
phandle = <0x0000000a>;
};
interrupt-controller@7e00b200 {
compatible = "brcm,bcm2836-armctrl-ic";
reg = <0x7e00b200 0x00000200>;
interrupt-controller;
#interrupt-cells = <0x00000002>;
interrupt-parent = <0x00000003>;
interrupts = <0x00000008>;
linux,phandle = <0x00000001>;
phandle = <0x00000001>;
};
watchdog@7e100000 {
compatible = "brcm,bcm2835-pm-wdt";
reg = <0x7e100000 0x00000028>;
};
cprman@7e101000 {
compatible = "brcm,bcm2835-cprman";
#clock-cells = <0x00000001>;
reg = <0x7e101000 0x00002000>;
clocks = <0x00000004 0x00000005 0x00000000 0x00000005 0x00000001 0x00000005 0x00000002 0x00000006 0x00000000 0x00000006 0x00000001 0x00000006 0x00000002>;
linux,phandle = <0x00000007>;
phandle = <0x00000007>;
};
rng@7e104000 {
compatible = "brcm,bcm2835-rng";
reg = <0x7e104000 0x00000010>;
};
mailbox@7e00b880 {
compatible = "brcm,bcm2835-mbox";
reg = <0x7e00b880 0x00000040>;
interrupts = <0x00000000 0x00000001>;
#mbox-cells = <0x00000000>;
linux,phandle = <0x00000017>;
phandle = <0x00000017>;
};
gpio@7e200000 {
compatible = "brcm,bcm2835-gpio";
reg = <0x7e200000 0x000000b4>;
interrupts = <0x00000002 0x00000011 0x00000002 0x00000012 0x00000002 0x00000013 0x00000002 0x00000014>;
gpio-controller;
#gpio-cells = <0x00000002>;
interrupt-controller;
#interrupt-cells = <0x00000002>;
pinctrl-names = "default";
linux,phandle = <0x00000019>;
phandle = <0x00000019>;
dpi_gpio0 {
brcm,pins = <0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000d 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015 0x00000016 0x00000017 0x00000018 0x00000019 0x0000001a 0x0000001b>;
brcm,function = <0x00000006>;
};
emmc_gpio22 {
brcm,pins = <0x00000016 0x00000017 0x00000018 0x00000019 0x0000001a 0x0000001b>;
brcm,function = <0x00000007>;
};
emmc_gpio34 {
brcm,pins = <0x00000022 0x00000023 0x00000024 0x00000025 0x00000026 0x00000027>;
brcm,function = <0x00000007>;
brcm,pull = <0x00000000 0x00000002 0x00000002 0x00000002 0x00000002 0x00000002>;
linux,phandle = <0x00000012>;
phandle = <0x00000012>;
};
emmc_gpio48 {
brcm,pins = <0x00000030 0x00000031 0x00000032 0x00000033 0x00000034 0x00000035>;
brcm,function = <0x00000007>;
};
gpclk0_gpio4 {
brcm,pins = <0x00000004>;
brcm,function = <0x00000004>;
};
gpclk1_gpio5 {
brcm,pins = <0x00000005>;
brcm,function = <0x00000004>;
};
gpclk1_gpio42 {
brcm,pins = <0x0000002a>;
brcm,function = <0x00000004>;
};
gpclk1_gpio44 {
brcm,pins = <0x0000002c>;
brcm,function = <0x00000004>;
};
gpclk2_gpio6 {
brcm,pins = <0x00000006>;
brcm,function = <0x00000004>;
};
gpclk2_gpio43 {
brcm,pins = <0x0000002b>;
brcm,function = <0x00000004>;
linux,phandle = <0x00000009>;
phandle = <0x00000009>;
};
i2c0_gpio0 {
brcm,pins = <0x00000000 0x00000001>;
brcm,function = <0x00000004>;
linux,phandle = <0x0000000c>;
phandle = <0x0000000c>;
};
i2c0_gpio28 {
brcm,pins = <0x0000001c 0x0000001d>;
brcm,function = <0x00000004>;
};
i2c0_gpio44 {
brcm,pins = <0x0000002c 0x0000002d>;
brcm,function = <0x00000005>;
};
i2c1_gpio2 {
brcm,pins = <0x00000002 0x00000003>;
brcm,function = <0x00000004>;
linux,phandle = <0x00000013>;
phandle = <0x00000013>;
};
i2c1_gpio44 {
brcm,pins = <0x0000002c 0x0000002d>;
brcm,function = <0x00000006>;
};
i2c_slave_gpio18 {
brcm,pins = <0x00000012 0x00000013 0x00000014 0x00000015>;
brcm,function = <0x00000007>;
};
jtag_gpio4 {
brcm,pins = <0x00000004 0x00000005 0x00000006 0x0000000c 0x0000000d>;
brcm,function = <0x00000003>;
};
jtag_gpio22 {
brcm,pins = <0x00000016 0x00000017 0x00000018 0x00000019 0x0000001a 0x0000001b>;
brcm,function = <0x00000003>;
};
pcm_gpio18 {
brcm,pins = <0x00000012 0x00000013 0x00000014 0x00000015>;
brcm,function = <0x00000004>;
};
pcm_gpio28 {
brcm,pins = <0x0000001c 0x0000001d 0x0000001e 0x0000001f>;
brcm,function = <0x00000006>;
};
pwm0_gpio12 {
brcm,pins = <0x0000000c>;
brcm,function = <0x00000004>;
};
pwm0_gpio18 {
brcm,pins = <0x00000012>;
brcm,function = <0x00000002>;
};
pwm0_gpio40 {
brcm,pins = <0x00000028>;
brcm,function = <0x00000004>;
linux,phandle = <0x00000010>;
phandle = <0x00000010>;
};
pwm1_gpio13 {
brcm,pins = <0x0000000d>;
brcm,function = <0x00000004>;
};
pwm1_gpio19 {
brcm,pins = <0x00000013>;
brcm,function = <0x00000002>;
};
pwm1_gpio41 {
brcm,pins = <0x00000029>;
brcm,function = <0x00000004>;
};
pwm1_gpio45 {
brcm,pins = <0x0000002d>;
brcm,function = <0x00000004>;
linux,phandle = <0x00000011>;
phandle = <0x00000011>;
};
sdhost_gpio48 {
brcm,pins = <0x00000030 0x00000031 0x00000032 0x00000033 0x00000034 0x00000035>;
brcm,function = <0x00000004>;
linux,phandle = <0x0000000b>;
phandle = <0x0000000b>;
};
spi0_gpio7 {
brcm,pins = <0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b>;
brcm,function = <0x00000004>;
};
spi0_gpio35 {
brcm,pins = <0x00000023 0x00000024 0x00000025 0x00000026 0x00000027>;
brcm,function = <0x00000004>;
};
spi1_gpio16 {
brcm,pins = <0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015>;
brcm,function = <0x00000003>;
};
spi2_gpio40 {
brcm,pins = <0x00000028 0x00000029 0x0000002a 0x0000002b 0x0000002c 0x0000002d>;
brcm,function = <0x00000003>;
};
uart0_gpio14 {
brcm,pins = <0x0000000e 0x0000000f>;
brcm,function = <0x00000004>;
};
uart0_ctsrts_gpio16 {
brcm,pins = <0x00000010 0x00000011>;
brcm,function = <0x00000007>;
};
uart0_ctsrts_gpio30 {
brcm,pins = <0x0000001e 0x0000001f>;
brcm,function = <0x00000007>;
};
uart0_gpio32 {
brcm,pins = <0x00000020 0x00000021>;
brcm,function = <0x00000007>;
linux,phandle = <0x00000008>;
phandle = <0x00000008>;
};
uart0_gpio36 {
brcm,pins = <0x00000024 0x00000025>;
brcm,function = <0x00000006>;
};
uart0_ctsrts_gpio38 {
brcm,pins = <0x00000026 0x00000027>;
brcm,function = <0x00000006>;
};
uart1_gpio14 {
brcm,pins = <0x0000000e 0x0000000f>;
brcm,function = <0x00000002>;
linux,phandle = <0x0000000f>;
phandle = <0x0000000f>;
};
uart1_ctsrts_gpio16 {
brcm,pins = <0x00000010 0x00000011>;
brcm,function = <0x00000002>;
};
uart1_gpio32 {
brcm,pins = <0x00000020 0x00000021>;
brcm,function = <0x00000002>;
};
uart1_ctsrts_gpio30 {
brcm,pins = <0x0000001e 0x0000001f>;
brcm,function = <0x00000002>;
};
uart1_gpio40 {
brcm,pins = <0x00000028 0x00000029>;
brcm,function = <0x00000002>;
};
uart1_ctsrts_gpio42 {
brcm,pins = <0x0000002a 0x0000002b>;
brcm,function = <0x00000002>;
};
gpioout {
brcm,pins = <0x00000006>;
brcm,function = <0x00000001>;
};
alt0 {
brcm,pins = <0x00000004 0x00000005 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b>;
brcm,function = <0x00000004>;
};
};
serial@7e201000 {
compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
reg = <0x7e201000 0x00001000>;
interrupts = <0x00000002 0x00000019>;
clocks = <0x00000007 0x00000013 0x00000007 0x00000014>;
clock-names = "uartclk", "apb_pclk";
arm,primecell-periphid = <0x00241011>;
pinctrl-names = "default";
pinctrl-0 = <0x00000008 0x00000009>;
status = "okay";
};
mmc@7e202000 {
compatible = "brcm,bcm2835-sdhost";
reg = <0x7e202000 0x00000100>;
interrupts = <0x00000002 0x00000018>;
clocks = <0x00000007 0x00000014>;
dmas = <0x0000000a 0x0000000d>;
dma-names = "rx-tx";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x0000000b>;
bus-width = <0x00000004>;
};
i2s@7e203000 {
compatible = "brcm,bcm2835-i2s";
reg = <0x7e203000 0x00000020 0x7e101098 0x00000002>;
dmas = <0x0000000a 0x00000002 0x0000000a 0x00000003>;
dma-names = "tx", "rx";
status = "disabled";
};
spi@7e204000 {
compatible = "brcm,bcm2835-spi";
reg = <0x7e204000 0x00001000>;
interrupts = <0x00000002 0x00000016>;
clocks = <0x00000007 0x00000014>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
};
i2c@7e205000 {
compatible = "brcm,bcm2835-i2c";
reg = <0x7e205000 0x00001000>;
interrupts = <0x00000002 0x00000015>;
clocks = <0x00000007 0x00000014>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x0000000c>;
clock-frequency = <0x000186a0>;
};
pixelvalve@7e206000 {
compatible = "brcm,bcm2835-pixelvalve0";
reg = <0x7e206000 0x00000100>;
interrupts = <0x00000002 0x0000000d>;
};
pixelvalve@7e207000 {
compatible = "brcm,bcm2835-pixelvalve1";
reg = <0x7e207000 0x00000100>;
interrupts = <0x00000002 0x0000000e>;
};
dsi@7e209000 {
compatible = "brcm,bcm2835-dsi0";
reg = <0x7e209000 0x00000078>;
interrupts = <0x00000002 0x00000004>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
#clock-cells = <0x00000001>;
clocks = <0x00000007 0x00000020 0x00000007 0x0000002f 0x00000007 0x00000031>;
clock-names = "phy", "escape", "pixel";
clock-output-names = "dsi0_byte", "dsi0_ddr2", "dsi0_ddr";
power-domains = <0x0000000d 0x00000011>;
linux,phandle = <0x00000005>;
phandle = <0x00000005>;
};
thermal@7e212000 {
compatible = "brcm,bcm2837-thermal";
reg = <0x7e212000 0x00000008>;
clocks = <0x00000007 0x0000001b>;
#thermal-sensor-cells = <0x00000000>;
status = "okay";
linux,phandle = <0x00000002>;
phandle = <0x00000002>;
};
aux@0x7e215000 {
compatible = "brcm,bcm2835-aux";
#clock-cells = <0x00000001>;
reg = <0x7e215000 0x00000008>;
clocks = <0x00000007 0x00000014>;
linux,phandle = <0x0000000e>;
phandle = <0x0000000e>;
};
serial@7e215040 {
compatible = "brcm,bcm2835-aux-uart";
reg = <0x7e215040 0x00000040>;
interrupts = <0x00000001 0x0000001d>;
clocks = <0x0000000e 0x00000000>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x0000000f>;
};
spi@7e215080 {
compatible = "brcm,bcm2835-aux-spi";
reg = <0x7e215080 0x00000040>;
interrupts = <0x00000001 0x0000001d>;
clocks = <0x0000000e 0x00000001>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
};
spi@7e2150c0 {
compatible = "brcm,bcm2835-aux-spi";
reg = <0x7e2150c0 0x00000040>;
interrupts = <0x00000001 0x0000001d>;
clocks = <0x0000000e 0x00000002>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
};
pwm@7e20c000 {
compatible = "brcm,bcm2835-pwm";
reg = <0x7e20c000 0x00000028>;
clocks = <0x00000007 0x0000001e>;
assigned-clocks = <0x00000007 0x0000001e>;
assigned-clock-rates = <0x00989680>;
#pwm-cells = <0x00000002>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x00000010 0x00000011>;
};
sdhci@7e300000 {
compatible = "brcm,bcm2835-sdhci";
reg = <0x7e300000 0x00000100>;
interrupts = <0x00000002 0x0000001e>;
clocks = <0x00000007 0x0000001c>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x00000012>;
bus-width = <0x00000004>;
non-removable;
};
hvs@7e400000 {
compatible = "brcm,bcm2835-hvs";
reg = <0x7e400000 0x00006000>;
interrupts = <0x00000002 0x00000001>;
};
dsi@7e700000 {
compatible = "brcm,bcm2835-dsi1";
reg = <0x7e700000 0x0000008c>;
interrupts = <0x00000002 0x0000000c>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
#clock-cells = <0x00000001>;
clocks = <0x00000007 0x00000023 0x00000007 0x00000030 0x00000007 0x00000032>;
clock-names = "phy", "escape", "pixel";
clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
status = "disabled";
power-domains = <0x0000000d 0x00000012>;
linux,phandle = <0x00000006>;
phandle = <0x00000006>;
};
i2c@7e804000 {
compatible = "brcm,bcm2835-i2c";
reg = <0x7e804000 0x00001000>;
interrupts = <0x00000002 0x00000015>;
clocks = <0x00000007 0x00000014>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x00000013>;
clock-frequency = <0x000186a0>;
};
i2c@7e805000 {
compatible = "brcm,bcm2835-i2c";
reg = <0x7e805000 0x00001000>;
interrupts = <0x00000002 0x00000015>;
clocks = <0x00000007 0x00000014>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "okay";
linux,phandle = <0x00000014>;
phandle = <0x00000014>;
};
vec@7e806000 {
compatible = "brcm,bcm2835-vec";
reg = <0x7e806000 0x00001000>;
clocks = <0x00000007 0x00000018>;
interrupts = <0x00000002 0x0000001b>;
status = "okay";
power-domains = <0x0000000d 0x00000007>;
};
pixelvalve@7e807000 {
compatible = "brcm,bcm2835-pixelvalve2";
reg = <0x7e807000 0x00000100>;
interrupts = <0x00000002 0x0000000a>;
};
hdmi@7e902000 {
compatible = "brcm,bcm2835-hdmi";
reg = <0x7e902000 0x00000600 0x7e808000 0x00000100>;
interrupts = <0x00000002 0x00000008 0x00000002 0x00000009>;
ddc = <0x00000014>;
clocks = <0x00000007 0x00000010 0x00000007 0x00000019>;
clock-names = "pixel", "hdmi";
dmas = <0x0000000a 0x00000011>;
dma-names = "audio-rx";
status = "okay";
power-domains = <0x0000000d 0x00000005>;
};
usb@7e980000 {
compatible = "brcm,bcm2835-usb";
reg = <0x7e980000 0x00010000>;
interrupts = <0x00000001 0x00000009>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
clocks = <0x00000015>;
clock-names = "otg";
phys = <0x00000016>;
phy-names = "usb2-phy";
power-domains = <0x0000000d 0x00000006>;
dr_mode = "host";
usb1@1 {
compatible = "usb424,9514";
reg = <0x00000001>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
usbether@1 {
compatible = "usb424,ec00";
reg = <0x00000001>;
};
};
};
v3d@7ec00000 {
compatible = "brcm,bcm2835-v3d";
reg = <0x7ec00000 0x00001000>;
interrupts = <0x00000001 0x0000000a>;
power-domains = <0x0000000d 0x0000000a>;
};
gpu {
compatible = "brcm,bcm2835-vc4";
};
local_intc {
compatible = "brcm,bcm2836-l1-intc";
reg = <0x40000000 0x00000100>;
interrupt-controller;
#interrupt-cells = <0x00000001>;
interrupt-parent = <0x00000003>;
linux,phandle = <0x00000003>;
phandle = <0x00000003>;
};
firmware {
compatible = "raspberrypi,bcm2835-firmware";
mboxes = <0x00000017>;
linux,phandle = <0x00000018>;
phandle = <0x00000018>;
};
power {
compatible = "raspberrypi,bcm2835-power";
firmware = <0x00000018>;
#power-domain-cells = <0x00000001>;
linux,phandle = <0x0000000d>;
phandle = <0x0000000d>;
};
};
clocks {
compatible = "simple-bus";
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
clock@3 {
compatible = "fixed-clock";
reg = <0x00000003>;
#clock-cells = <0x00000000>;
clock-output-names = "osc";
clock-frequency = <0x0124f800>;
linux,phandle = <0x00000004>;
phandle = <0x00000004>;
};
clock@4 {
compatible = "fixed-clock";
reg = <0x00000004>;
#clock-cells = <0x00000000>;
clock-output-names = "otg";
clock-frequency = <0x1c9c3800>;
linux,phandle = <0x00000015>;
phandle = <0x00000015>;
};
};
phy {
compatible = "usb-nop-xceiv";
linux,phandle = <0x00000016>;
phandle = <0x00000016>;
};
timer {
compatible = "arm,armv7-timer";
interrupt-parent = <0x00000003>;
interrupts = <0x00000000 0x00000001 0x00000003 0x00000002>;
always-on;
};
cpus {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
enable-method = "brcm,bcm2836-smp";
cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x00000000>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000d8>;
};
cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x00000001>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000e0>;
};
cpu@2 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x00000002>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000e8>;
};
cpu@3 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x00000003>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000f0>;
};
};
memory {
device_type = "memory";
reg = <0x00000000 0x40000000>;
};
leds {
compatible = "gpio-leds";
act {
label = "ACT";
default-state = "keep";
linux,default-trigger = "heartbeat";
gpios = <0x00000019 0x0000002f 0x00000000>;
};
};
};
```
### lsusb -vvv
```
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 1
bMaxPacketSize0 64
idVendor 0x0424 Standard Microsystems Corp.
idProduct 0xec00 SMSC9512/9514 Fast Ethernet Adapter
bcdDevice 2.00
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 2mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 255
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 4
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 2 TT per port
bMaxPacketSize0 64
idVendor 0x0424 Standard Microsystems Corp.
idProduct 0x9514 SMC9514 Hub
bcdDevice 2.00
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 41
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 2mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 1 Single TT
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 12
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 2 TT per port
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 12
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 1 Single TT
bMaxPacketSize0 64
idVendor 0x1d6b Linux Foundation
idProduct 0x0002 2.0 root hub
bcdDevice 4.19
iManufacturer 3
iProduct 2
iSerial 1
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 0 Full speed (or root) hub
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 12
```
## FreeBSD
> Jak odpalić `qemu`? Skąd wziąć obraz?
Obraz jest dostępny na stronie głównej [freebsd](https://freebsd.org) ale __wybitnie__ nie chce on się porozumiewać z qemu. Aby cokolwiek wystartowało jest potrzebny _u-boot_ i zmuszenie _qemu_ do potraktowania go jako obrazu biosu. A i tak ostatecznie kernel dostaje gdzieś na początku bootstrapu błąd związany z wykonywaniem nieznanej instrukcji.
Ostatecznie odpaliłem to na fizycznym sprzęcie.
### `devinfo -r`
```
nexus0
ofwbus0
psci0
simplebus0
bcm_dma0
Interrupts:
0x8
0x9
0xc
0xd
0xe
0xf
Device Memory:
0x3f007000-0x3f007eff
intc0
Interrupts:
0x14
Device Memory:
0x3f00b200-0x3f00b3ff
bcmwd0
Device Memory:
0x3f100000-0x3f100027
bcmrng0
Device Memory:
0x3f104000-0x3f10400f
mbox0
Interrupts:
0x16
Device Memory:
0x3f00b880-0x3f00b8bf
gpio0
Interrupts:
0x17
0x18
Device Memory:
0x3f200000-0x3f2000b3
gpiobus0
gpioc0
uart0
Interrupts:
0x19
Device Memory:
0x3f201000-0x3f201fff
spi0
Interrupts:
0x1b
Device Memory:
0x3f204000-0x3f204fff
spibus0
iichb0
Interrupts:
0x28
Device Memory:
0x3f804000-0x3f804fff
iicbus0
iic0
bcm283x_dwcotg0
Interrupts:
0x2f
Device Memory:
0x3f980000-0x3f98ffff
usbus0
uhub0
uhub1
smsc0
miibus0
smscphy0
lintc0
Device Memory:
0x40000000-0x400000ff
sdhci_bcm0
Interrupts:
0x31
Device Memory:
0x3f300000-0x3f3000ff
mmc0
mmcsd0
fb0
fbd0
pmu0
Interrupts:
0x35
ofw_clkbus0
clk_fixed0
clk_fixed1
usb_nop_xceiv0
generic_timer0
Interrupts:
0x0
0x1
0x2
0x3
cpulist0
cpu0
bcm2835_cpufreq0
arm64_cpu0
cpufreq0
cpu1
arm64_cpu1
cpu2
arm64_cpu2
cpu3
arm64_cpu3
regfix0
regfix1
gpioled0
cryptosoft0
```
### odpowiadające sterowniki
- psci0 -> http://bxr.su/FreeBSD/sys/dev/psci/psci.c
- bcm_dma0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_dma.c
- intc0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_intr.c
- bcmwd0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_wdog.c
- bcmrng0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_rng.c
- mbox0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_mbox.c
- gpio0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_gpio.c
- uart0 -> http://bxr.su/FreeBSD/sys/dev/uart/uart_dev_pl011.c
- spi0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_spi.c
- iichb0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_bsc.c
- bcm283x_dwcotg0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm283x_dwc_fdt.c http://bxr.su/FreeBSD/sys/dev/usb/controller/dwc_otg_fdt.c
- lintc0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2836.c
- sdhci_bcm0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c
- fb0 -> http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_fb.c http://bxr.su/FreeBSD/sys/arm/broadcom/bcm2835/bcm2835_fbd.c
- pmu0 -> http://bxr.su/FreeBSD/sys/arm/arm/pmu.c
- ofw_clkbus0 -> http://bxr.su/FreeBSD/sys/dev/fdt/simplebus.c http://bxr.su/FreeBSD/sys/dev/dpaa/bman_fdt.c http://bxr.su/FreeBSD/sys/dev/dpaa/qman_fdt.c http://bxr.su/FreeBSD/sys/dev/extres/syscon/syscon_generic.c http://bxr.su/FreeBSD/sys/dev/fdt/fdt_common.c http://bxr.su/FreeBSD/sys/arm/mv/mv_common.c http://bxr.su/FreeBSD/sys/arm/mv/mv_armv7_machdep.c
- clk_fixed0, clk_fixed1 -> http://bxr.su/FreeBSD/sys/dev/extres/clk/clk_fixed.c
- usb_nop_xceiv0 -> http://bxr.su/FreeBSD/sys/arm/freescale/imx/imx_nop_usbphy.c http://bxr.su/FreeBSD/sys/dev/usb/controller/usb_nop_xceiv.c http://bxr.su/FreeBSD/sys/dev/usb/controller/ehci_imx.c
- generic_timer0 -> http://bxr.su/FreeBSD/sys/arm/arm/generic_timer.c
- cpu0, cpu1, cpu2, cpu3 -> http://bxr.su/FreeBSD/sys/arm/arm/identcpu-v6.c
- regfix0, regfix1 -> http://bxr.su/FreeBSD/sys/dev/extres/regulator/regulator_fixed.c
- gpioled0 -> http://bxr.su/FreeBSD/sys/dev/gpio/gpioled_fdt.c
### `devinfo -vr`
```
nexus0
ofwbus0
unknown pnpinfo name=framebuffer@3eaf0000 compat=simple-framebuffer
psci0 pnpinfo name=psci compat=arm,psci-0.2
unknown pnpinfo name=system
unknown pnpinfo name=axi
unknown pnpinfo name=aliases
unknown pnpinfo name=chosen
unknown pnpinfo name=thermal-zones
simplebus0 pnpinfo name=soc compat=simple-bus
bcm_dma0 pnpinfo name=dma@7e007000 compat=brcm,bcm2835-dma
Interrupts:
0x8
0x9
0xc
0xd
0xe
0xf
Device Memory:
0x3f007000-0x3f007eff
intc0 pnpinfo name=interrupt-controller@7e00b200 compat=brcm,bcm2836-armctrl-ic
Interrupts:
0x14
Device Memory:
0x3f00b200-0x3f00b3ff
bcmwd0 pnpinfo name=watchdog@7e100000 compat=brcm,bcm2835-pm-wdt
Device Memory:
0x3f100000-0x3f100027
unknown pnpinfo name=cprman@7e101000 compat=brcm,bcm2835-cprman
bcmrng0 pnpinfo name=rng@7e104000 compat=brcm,bcm2835-rng
Device Memory:
0x3f104000-0x3f10400f
mbox0 pnpinfo name=mailbox@7e00b880 compat=brcm,bcm2835-mbox
Interrupts:
0x16
Device Memory:
0x3f00b880-0x3f00b8bf
gpio0 pnpinfo name=gpio@7e200000 compat=brcm,bcm2835-gpio
Interrupts:
0x17
0x18
Device Memory:
0x3f200000-0x3f2000b3
gpiobus0
gpioc0
uart0 pnpinfo name=serial@7e201000 compat=brcm,bcm2835-pl011
Interrupts:
0x19
Device Memory:
0x3f201000-0x3f201fff
unknown
unknown
spi0 pnpinfo name=spi@7e204000 compat=brcm,bcm2835-spi
Interrupts:
0x1b
Device Memory:
0x3f204000-0x3f204fff
spibus0
unknown pnpinfo name=spidev@0 compat=spidev at bus=0 cs=0
unknown pnpinfo name=spidev@1 compat=spidev at bus=0 cs=1
unknown
unknown
unknown
unknown
unknown pnpinfo name=dsi@7e209000 compat=brcm,bcm2835-dsi0
unknown pnpinfo name=thermal@7e212000 compat=brcm,bcm2837-thermal
unknown pnpinfo name=aux@0x7e215000 compat=brcm,bcm2835-aux
unknown
unknown
unknown
unknown pnpinfo name=pwm@7e20c000 compat=brcm,bcm2835-pwm
unknown
unknown
unknown
unknown
iichb0 pnpinfo name=i2c@7e804000 compat=brcm,bcm2835-i2c
Interrupts:
0x28
Device Memory:
0x3f804000-0x3f804fff
iicbus0
iic0 at addr=0
unknown
unknown
unknown
unknown
bcm283x_dwcotg0 pnpinfo name=usb@7e980000 compat=brcm,bcm2708-usb
Interrupts:
0x2f
Device Memory:
0x3f980000-0x3f98ffff
usbus0
uhub0
uhub1 pnpinfo vendor=0x0424 product=0x9514 devclass=0x09 devsubclass=0x00 devproto=0x02 sernum="" release=0x0200 mode=host intclass=0x09 intsubclass=0x00 intprotocol=0x02 at bus=0 hubaddr=1 port=1 devaddr=2 interface=0 ugen=ugen0.2
smsc0 pnpinfo vendor=0x0424 product=0xec00 devclass=0xff devsubclass=0x00 devproto=0x01 sernum="" release=0x0200 mode=host intclass=0xff intsubclass=0x00 intprotocol=0xff at bus=0 hubaddr=2 port=1 devaddr=3 interface=0 ugen=ugen0.3
miibus0
smscphy0 pnpinfo oui=0x800f model=0xc rev=0x3 at phyno=1
unknown
unknown
lintc0 pnpinfo name=local_intc@40000000 compat=brcm,bcm2836-l1-intc
Device Memory:
0x40000000-0x400000ff
sdhci_bcm0 pnpinfo name=mmc@7e300000 compat=brcm,bcm2835-mmc
Interrupts:
0x31
Device Memory:
0x3f300000-0x3f3000ff
mmc0
mmcsd0 at rca=0xe624
unknown
unknown
unknown
unknown pnpinfo name=gpiomem compat=brcm,bcm2835-gpiomem
unknown pnpinfo name=firmware compat=raspberrypi,bcm2835-firmware
unknown pnpinfo name=power compat=raspberrypi,bcm2835-power
fb0 pnpinfo name=fb compat=brcm,bcm2708-fb
fbd0
unknown pnpinfo name=vchiq compat=brcm,bcm2835-vchiq
unknown pnpinfo name=vcsm compat=raspberrypi,bcm2835-vcsm
unknown pnpinfo name=audio compat=brcm,bcm2835-audio
unknown
pmu0 pnpinfo name=arm-pmu compat=arm,cortex-a7-pmu
Interrupts:
0x35
unknown pnpinfo name=virtgpio compat=brcm,bcm2835-virtgpio
unknown pnpinfo name=expgpio compat=brcm,bcm2835-expgpio
ofw_clkbus0 pnpinfo name=clocks compat=simple-bus
clk_fixed0 pnpinfo name=clock@3 compat=fixed-clock
clk_fixed1 pnpinfo name=clock@4 compat=fixed-clock
usb_nop_xceiv0 pnpinfo name=phy compat=usb-nop-xceiv
generic_timer0 pnpinfo name=timer compat=arm,armv7-timer
Interrupts:
0x0
0x1
0x2
0x3
cpulist0 pnpinfo name=cpus
cpu0 pnpinfo name=cpu@0 compat=arm,cortex-a53
bcm2835_cpufreq0
arm64_cpu0
cpufreq0
cpu1 pnpinfo name=cpu@1 compat=arm,cortex-a53
bcm2835_cpufreq1
arm64_cpu1
cpu2 pnpinfo name=cpu@2 compat=arm,cortex-a53
bcm2835_cpufreq2
arm64_cpu2
cpu3 pnpinfo name=cpu@3 compat=arm,cortex-a53
bcm2835_cpufreq3
arm64_cpu3
regfix0 pnpinfo name=fixedregulator_5v0 compat=regulator-fixed
regfix1 pnpinfo name=fixedregulator_3v3 compat=regulator-fixed
unknown pnpinfo name=__overrides__
unknown pnpinfo name=memory
gpioled0 pnpinfo name=leds compat=gpio-leds
unknown pnpinfo name=__symbols__
cryptosoft0
efirtc0
```
### _dtb_ -> _fdt_
#### v1
```
/dts-v1/;
// magic: 0xd00dfeed
// totalsize: 0x62df (25311)
// off_dt_struct: 0x48
// off_dt_strings: 0x5950
// off_mem_rsvmap: 0x28
// version: 17
// last_comp_version: 16
// boot_cpuid_phys: 0x0
// size_dt_strings: 0x98f
// size_dt_struct: 0x5908
/memreserve/ 0 0x1000;
/ {
compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
model = "Raspberry Pi 3 Model B";
interrupt-parent = <0x00000001>;
#address-cells = <0x00000001>;
#size-cells = <0x00000001>;
aliases {
serial0 = "/soc/serial@7e215040";
serial1 = "/soc/serial@7e201000";
audio = "/soc/audio";
aux = "/soc/aux@0x7e215000";
sound = "/soc/sound";
soc = "/soc";
dma = "/soc/dma@7e007000";
intc = "/soc/interrupt-controller@7e00b200";
watchdog = "/soc/watchdog@7e100000";
random = "/soc/rng@7e104000";
mailbox = "/soc/mailbox@7e00b880";
gpio = "/soc/gpio@7e200000";
uart0 = "/soc/serial@7e201000";
sdhost = "/soc/mmc@7e202000";
mmc0 = "/soc/mmc@7e202000";
i2s = "/soc/i2s@7e203000";
spi0 = "/soc/spi@7e204000";
i2c0 = "/soc/i2c@7e205000";
uart1 = "/soc/serial@7e215040";
spi1 = "/soc/spi@7e215080";
spi2 = "/soc/spi@7e2150c0";
mmc = "/soc/mmc@7e300000";
mmc1 = "/soc/mmc@7e300000";
i2c1 = "/soc/i2c@7e804000";
i2c2 = "/soc/i2c@7e805000";
usb = "/soc/usb@7e980000";
leds = "/leds";
fb = "/soc/fb";
vchiq = "/soc/vchiq";
thermal = "/soc/thermal@7e212000";
axiperf = "/soc/axiperf";
ethernet0 = "/soc/usb@7e980000/usb1@1/usbether@1";
};
chosen {
bootargs = "8250.nr_uarts=1";
};
thermal-zones {
cpu-thermal {
polling-delay-passive = <0x00000000>;
polling-delay = <0x000003e8>;
thermal-sensors = <0x00000002>;
coefficients = <0xfffffde6 0x00064960>;
phandle = <0x00000031>;
cooling-maps {
};
};
};
soc {
compatible = "simple-bus";
#address-cells = <0x00000001>;
#size-cells = <0x00000001>;
ranges = <0x7e000000 0x3f000000 0x01000000 0x40000000 0x40000000 0x00001000>;
dma-ranges = <0xc0000000 0x00000000 0x3f000000>;
phandle = <0x00000032>;
dma@7e007000 {
compatible = "brcm,bcm2835-dma";
reg = <0x7e007000 0x00000f00>;
interrupts = <0x00000001 0x00000010 0x00000001 0x00000011 0x00000001 0x00000012 0x00000001 0x00000013 0x00000001 0x00000014 0x00000001 0x00000015 0x00000001 0x00000016 0x00000001 0x00000017 0x00000001 0x00000018 0x00000001 0x00000019 0x00000001 0x0000001a 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001c>;
interrupt-names = "dma0", "dma1", "dma2", "dma3", "dma4", "dma5", "dma6", "dma7", "dma8", "dma9", "dma10", "dma11", "dma12", "dma13", "dma14", "dma-shared-all";
#dma-cells = <0x00000001>;
brcm,dma-channel-mask = <0x00007f34>;
phandle = <0x0000000b>;
};
interrupt-controller@7e00b200 {
compatible = "brcm,bcm2836-armctrl-ic";
reg = <0x7e00b200 0x00000200>;
interrupt-controller;
#interrupt-cells = <0x00000002>;
interrupt-parent = <0x00000003>;
interrupts = <0x00000008>;
phandle = <0x00000001>;
};
watchdog@7e100000 {
compatible = "brcm,bcm2835-pm-wdt";
reg = <0x7e100000 0x00000028>;
phandle = <0x00000025>;
};
cprman@7e101000 {
compatible = "brcm,bcm2835-cprman";
#clock-cells = <0x00000001>;
reg = <0x7e101000 0x00002000>;
clocks = <0x00000004 0x00000005 0x00000000 0x00000005 0x00000001 0x00000005 0x00000002 0x00000006 0x00000000 0x00000006 0x00000001 0x00000006 0x00000002>;
firmware = <0x00000007>;
phandle = <0x00000008>;
};
rng@7e104000 {
compatible = "brcm,bcm2835-rng";
reg = <0x7e104000 0x00000010>;
interrupts = <0x00000002 0x0000001d>;
phandle = <0x00000026>;
};
mailbox@7e00b880 {
compatible = "brcm,bcm2835-mbox";
reg = <0x7e00b880 0x00000040>;
interrupts = <0x00000000 0x00000001>;
#mbox-cells = <0x00000000>;
phandle = <0x0000001b>;
};
gpio@7e200000 {
compatible = "brcm,bcm2835-gpio";
reg = <0x7e200000 0x000000b4>;
interrupts = <0x00000002 0x00000011 0x00000002 0x00000012>;
gpio-controller;
#gpio-cells = <0x00000002>;
interrupt-controller;
#interrupt-cells = <0x00000002>;
phandle = <0x00000010>;
dpi_gpio0 {
brcm,pins = <0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000d 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015 0x00000016 0x00000017 0x00000018 0x00000019 0x0000001a 0x0000001b>;
brcm,function = <0x00000006>;
phandle = <0x00000033>;
};
emmc_gpio22 {
brcm,pins = <0x00000016 0x00000017 0x00000018 0x00000019 0x0000001a 0x0000001b>;
brcm,function = <0x00000007>;
phandle = <0x00000034>;
};
emmc_gpio34 {
brcm,pins = <0x00000022 0x00000023 0x00000024 0x00000025 0x00000026 0x00000027>;
brcm,function = <0x00000007>;
brcm,pull = <0x00000000 0x00000002 0x00000002 0x00000002 0x00000002 0x00000002>;
phandle = <0x00000035>;
};
emmc_gpio48 {
brcm,pins = <0x00000030 0x00000031 0x00000032 0x00000033 0x00000034 0x00000035>;
brcm,function = <0x00000007>;
phandle = <0x00000036>;
};
gpclk0_gpio4 {
brcm,pins = <0x00000004>;
brcm,function = <0x00000004>;
phandle = <0x00000037>;
};
gpclk1_gpio5 {
brcm,pins = <0x00000005>;
brcm,function = <0x00000004>;
phandle = <0x00000038>;
};
gpclk1_gpio42 {
brcm,pins = <0x0000002a>;
brcm,function = <0x00000004>;
phandle = <0x00000039>;
};
gpclk1_gpio44 {
brcm,pins = <0x0000002c>;
brcm,function = <0x00000004>;
phandle = <0x0000003a>;
};
gpclk2_gpio6 {
brcm,pins = <0x00000006>;
brcm,function = <0x00000004>;
phandle = <0x0000003b>;
};
gpclk2_gpio43 {
brcm,pins = <0x0000002b>;
brcm,function = <0x00000004>;
phandle = <0x0000003c>;
};
i2c0_gpio0 {
brcm,pins = <0x00000000 0x00000001>;
brcm,function = <0x00000004>;
phandle = <0x0000003d>;
};
i2c0_gpio28 {
brcm,pins = <0x0000001c 0x0000001d>;
brcm,function = <0x00000004>;
phandle = <0x0000003e>;
};
i2c0_gpio44 {
brcm,pins = <0x0000002c 0x0000002d>;
brcm,function = <0x00000005>;
phandle = <0x0000003f>;
};
i2c1_gpio2 {
brcm,pins = <0x00000002 0x00000003>;
brcm,function = <0x00000004>;
phandle = <0x00000040>;
};
i2c1_gpio44 {
brcm,pins = <0x0000002c 0x0000002d>;
brcm,function = <0x00000006>;
phandle = <0x00000041>;
};
i2c_slave_gpio18 {
brcm,pins = <0x00000012 0x00000013 0x00000014 0x00000015>;
brcm,function = <0x00000007>;
phandle = <0x00000042>;
};
jtag_gpio4 {
brcm,pins = <0x00000004 0x00000005 0x00000006 0x0000000c 0x0000000d>;
brcm,function = <0x00000002>;
phandle = <0x00000043>;
};
jtag_gpio22 {
brcm,pins = <0x00000016 0x00000017 0x00000018 0x00000019 0x0000001a 0x0000001b>;
brcm,function = <0x00000003>;
phandle = <0x00000044>;
};
pcm_gpio18 {
brcm,pins = <0x00000012 0x00000013 0x00000014 0x00000015>;
brcm,function = <0x00000004>;
phandle = <0x00000045>;
};
pcm_gpio28 {
brcm,pins = <0x0000001c 0x0000001d 0x0000001e 0x0000001f>;
brcm,function = <0x00000006>;
phandle = <0x00000046>;
};
pwm0_gpio12 {
brcm,pins = <0x0000000c>;
brcm,function = <0x00000004>;
phandle = <0x00000047>;
};
pwm0_gpio18 {
brcm,pins = <0x00000012>;
brcm,function = <0x00000002>;
phandle = <0x00000048>;
};
pwm0_gpio40 {
brcm,pins = <0x00000028>;
brcm,function = <0x00000004>;
phandle = <0x00000049>;
};
pwm1_gpio13 {
brcm,pins = <0x0000000d>;
brcm,function = <0x00000004>;
phandle = <0x0000004a>;
};
pwm1_gpio19 {
brcm,pins = <0x00000013>;
brcm,function = <0x00000002>;
phandle = <0x0000004b>;
};
pwm1_gpio41 {
brcm,pins = <0x00000029>;
brcm,function = <0x00000004>;
phandle = <0x0000004c>;
};
pwm1_gpio45 {
brcm,pins = <0x0000002d>;
brcm,function = <0x00000004>;
phandle = <0x0000004d>;
};
sdhost_gpio48 {
brcm,pins = <0x00000030 0x00000031 0x00000032 0x00000033 0x00000034 0x00000035>;
brcm,function = <0x00000004>;
phandle = <0x0000000c>;
};
spi0_gpio7 {
brcm,pins = <0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b>;
brcm,function = <0x00000004>;
phandle = <0x0000004e>;
};
spi0_gpio35 {
brcm,pins = <0x00000023 0x00000024 0x00000025 0x00000026 0x00000027>;
brcm,function = <0x00000004>;
phandle = <0x0000004f>;
};
spi1_gpio16 {
brcm,pins = <0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015>;
brcm,function = <0x00000003>;
phandle = <0x00000050>;
};
spi2_gpio40 {
brcm,pins = <0x00000028 0x00000029 0x0000002a 0x0000002b 0x0000002c 0x0000002d>;
brcm,function = <0x00000003>;
phandle = <0x00000051>;
};
uart0_gpio14 {
brcm,pins = <0x0000000e 0x0000000f>;
brcm,function = <0x00000004>;
phandle = <0x00000052>;
};
uart0_ctsrts_gpio16 {
brcm,pins = <0x00000010 0x00000011>;
brcm,function = <0x00000007>;
phandle = <0x00000053>;
};
uart0_ctsrts_gpio30 {
brcm,pins = <0x0000001e 0x0000001f>;
brcm,function = <0x00000007>;
phandle = <0x00000054>;
};
uart0_gpio32 {
brcm,pins = <0x00000020 0x00000021>;
brcm,function = <0x00000007>;
phandle = <0x00000055>;
};
uart0_gpio36 {
brcm,pins = <0x00000024 0x00000025>;
brcm,function = <0x00000006>;
phandle = <0x00000056>;
};
uart0_ctsrts_gpio38 {
brcm,pins = <0x00000026 0x00000027>;
brcm,function = <0x00000006>;
phandle = <0x00000057>;
};
uart1_gpio14 {
brcm,pins = <0x0000000e 0x0000000f>;
brcm,function = <0x00000002>;
phandle = <0x00000058>;
};
uart1_ctsrts_gpio16 {
brcm,pins = <0x00000010 0x00000011>;
brcm,function = <0x00000002>;
phandle = <0x00000059>;
};
uart1_gpio32 {
brcm,pins = <0x00000020 0x00000021>;
brcm,function = <0x00000002>;
phandle = <0x0000005a>;
};
uart1_ctsrts_gpio30 {
brcm,pins = <0x0000001e 0x0000001f>;
brcm,function = <0x00000002>;
phandle = <0x0000005b>;
};
uart1_gpio40 {
brcm,pins = <0x00000028 0x00000029>;
brcm,function = <0x00000002>;
phandle = <0x0000005c>;
};
uart1_ctsrts_gpio42 {
brcm,pins = <0x0000002a 0x0000002b>;
brcm,function = <0x00000002>;
phandle = <0x0000005d>;
};
dpi_18bit_gpio0 {
brcm,pins = <0x00000000 0x00000001 0x00000002 0x00000003 0x00000004 0x00000005 0x00000006 0x00000007 0x00000008 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000d 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000012 0x00000013 0x00000014 0x00000015>;
brcm,function = <0x00000006>;
phandle = <0x0000005e>;
};
spi0_pins {
brcm,pins = <0x00000009 0x0000000a 0x0000000b>;
brcm,function = <0x00000004>;
phandle = <0x0000000e>;
};
spi0_cs_pins {
brcm,pins = <0x00000008 0x00000007>;
brcm,function = <0x00000001>;
phandle = <0x0000000f>;
};
i2c0 {
brcm,pins = <0x00000000 0x00000001>;
brcm,function = <0x00000004>;
phandle = <0x00000011>;
};
i2c1 {
brcm,pins = <0x00000002 0x00000003>;
brcm,function = <0x00000004>;
phandle = <0x00000015>;
};
i2s {
brcm,pins = <0x00000012 0x00000013 0x00000014 0x00000015>;
brcm,function = <0x00000004>;
phandle = <0x0000000d>;
};
sdio_pins {
brcm,pins = <0x00000022 0x00000023 0x00000024 0x00000025 0x00000026 0x00000027>;
brcm,function = <0x00000007>;
brcm,pull = <0x00000000 0x00000002 0x00000002 0x00000002 0x00000002 0x00000002>;
phandle = <0x0000001a>;
};
bt_pins {
brcm,pins = <0x0000002b>;
brcm,function = <0x00000004>;
brcm,pull = <0x00000000>;
phandle = <0x0000000a>;
};
uart0_pins {
brcm,pins = <0x00000020 0x00000021>;
brcm,function = <0x00000007>;
brcm,pull = <0x00000000 0x00000002>;
phandle = <0x00000009>;
};
uart1_pins {
brcm,pins;
brcm,function;
brcm,pull;
phandle = <0x00000013>;
};
audio_pins {
brcm,pins = <0x00000028 0x00000029>;
brcm,function = <0x00000004>;
phandle = <0x0000001c>;
};
};
serial@7e201000 {
compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
reg = <0x7e201000 0x00001000>;
interrupts = <0x00000002 0x00000019>;
clocks = <0x00000008 0x00000013 0x00000008 0x00000014>;
clock-names = "uartclk", "apb_pclk";
arm,primecell-periphid = <0x00241011>;
cts-event-workaround;
pinctrl-names = "default";
pinctrl-0 = <0x00000009 0x0000000a>;
status = "okay";
phandle = <0x0000001e>;
};
mmc@7e202000 {
compatible = "brcm,bcm2835-sdhost";
reg = <0x7e202000 0x00000100>;
interrupts = <0x00000002 0x00000018>;
clocks = <0x00000008 0x00000014>;
dmas = <0x0000000b 0x0000000d>;
dma-names = "rx-tx";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x0000000c>;
bus-width = <0x00000004>;
brcm,overclock-50 = <0x00000000>;
brcm,pio-limit = <0x00000001>;
phandle = <0x00000027>;
};
i2s@7e203000 {
compatible = "brcm,bcm2835-i2s";
reg = <0x7e203000 0x00000024>;
clocks = <0x00000008 0x0000001f>;
dmas = <0x0000000b 0x00000002 0x0000000b 0x00000003>;
dma-names = "tx", "rx";
status = "disabled";
#sound-dai-cells = <0x00000000>;
pinctrl-names = "default";
pinctrl-0 = <0x0000000d>;
phandle = <0x00000020>;
};
spi@7e204000 {
compatible = "brcm,bcm2835-spi";
reg = <0x7e204000 0x00001000>;
interrupts = <0x00000002 0x00000016>;
clocks = <0x00000008 0x00000014>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
dmas = <0x0000000b 0x00000006 0x0000000b 0x00000007>;
dma-names = "tx", "rx";
pinctrl-names = "default";
pinctrl-0 = <0x0000000e 0x0000000f>;
cs-gpios = <0x00000010 0x00000008 0x00000001 0x00000010 0x00000007 0x00000001>;
phandle = <0x00000021>;
spidev@0 {
compatible = "spidev";
reg = <0x00000000>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
spi-max-frequency = <0x07735940>;
phandle = <0x0000005f>;
};
spidev@1 {
compatible = "spidev";
reg = <0x00000001>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
spi-max-frequency = <0x07735940>;
phandle = <0x00000060>;
};
};
i2c@7e205000 {
compatible = "brcm,bcm2835-i2c";
reg = <0x7e205000 0x00001000>;
interrupts = <0x00000002 0x00000015>;
clocks = <0x00000008 0x00000014>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <0x00000011>;
clock-frequency = <0x000186a0>;
phandle = <0x00000022>;
};
pixelvalve@7e206000 {
compatible = "brcm,bcm2835-pixelvalve0";
reg = <0x7e206000 0x00000100>;
interrupts = <0x00000002 0x0000000d>;
status = "disabled";
phandle = <0x00000061>;
};
pixelvalve@7e207000 {
compatible = "brcm,bcm2835-pixelvalve1";
reg = <0x7e207000 0x00000100>;
interrupts = <0x00000002 0x0000000e>;
status = "disabled";
phandle = <0x00000062>;
};
dpi@7e208000 {
compatible = "brcm,bcm2835-dpi";
reg = <0x7e208000 0x0000008c>;
clocks = <0x00000008 0x00000014 0x00000008 0x0000002c>;
clock-names = "core", "pixel";
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
phandle = <0x00000063>;
};
dsi@7e209000 {
compatible = "brcm,bcm2835-dsi0";
reg = <0x7e209000 0x00000078>;
interrupts = <0x00000002 0x00000004>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
#clock-cells = <0x00000001>;
clocks = <0x00000008 0x00000020 0x00000008 0x0000002f 0x00000008 0x00000031>;
clock-names = "phy", "escape", "pixel";
clock-output-names = "dsi0_byte", "dsi0_ddr2", "dsi0_ddr";
phandle = <0x00000005>;
};
thermal@7e212000 {
compatible = "brcm,bcm2837-thermal";
reg = <0x7e212000 0x00000008>;
clocks = <0x00000008 0x0000001b>;
#thermal-sensor-cells = <0x00000000>;
status = "okay";
phandle = <0x00000002>;
};
aux@0x7e215000 {
compatible = "brcm,bcm2835-aux";
#clock-cells = <0x00000001>;
reg = <0x7e215000 0x00000008>;
clocks = <0x00000008 0x00000014>;
interrupts = <0x00000001 0x0000001d>;
interrupt-controller;
#interrupt-cells = <0x00000001>;
phandle = <0x00000012>;
};
serial@7e215040 {
compatible = "brcm,bcm2835-aux-uart";
reg = <0x7e215040 0x00000040>;
interrupts = <0x00000000>;
clocks = <0x00000012 0x00000000>;
status = "okay";
interrupt-parent = <0x00000012>;
pinctrl-names = "default";
pinctrl-0 = <0x00000013>;
phandle = <0x0000001f>;
};
spi@7e215080 {
compatible = "brcm,bcm2835-aux-spi";
reg = <0x7e215080 0x00000040>;
interrupts = <0x00000001>;
clocks = <0x00000012 0x00000001>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
interrupt-parent = <0x00000012>;
phandle = <0x00000064>;
};
spi@7e2150c0 {
compatible = "brcm,bcm2835-aux-spi";
reg = <0x7e2150c0 0x00000040>;
interrupts = <0x00000002>;
clocks = <0x00000012 0x00000002>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
interrupt-parent = <0x00000012>;
phandle = <0x00000065>;
};
pwm@7e20c000 {
compatible = "brcm,bcm2835-pwm";
reg = <0x7e20c000 0x00000028>;
clocks = <0x00000008 0x0000001e>;
assigned-clocks = <0x00000008 0x0000001e>;
assigned-clock-rates = <0x00989680>;
#pwm-cells = <0x00000002>;
status = "disabled";
phandle = <0x00000066>;
};
hvs@7e400000 {
compatible = "brcm,bcm2835-hvs";
reg = <0x7e400000 0x00006000>;
interrupts = <0x00000002 0x00000001>;
status = "disabled";
phandle = <0x00000067>;
};
dsi@7e700000 {
compatible = "brcm,bcm2835-dsi1";
reg = <0x7e700000 0x0000008c>;
interrupts = <0x00000002 0x0000000c>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
#clock-cells = <0x00000001>;
clocks = <0x00000008 0x00000023 0x00000008 0x00000030 0x00000008 0x00000032>;
clock-names = "phy", "escape", "pixel";
clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
status = "disabled";
phandle = <0x00000006>;
};
csi0@7e800000 {
compatible = "brcm,bcm2835-unicam";
reg = <0x7e800000 0x00000800 0x7e802000 0x00000004>;
interrupts = <0x00000002 0x00000006>;
clocks = <0x00000008 0x0000002d>;
clock-names = "lp";
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
#clock-cells = <0x00000001>;
status = "disabled";
power-domains = <0x00000014 0x0000000c>;
phandle = <0x00000068>;
};
csi1@7e801000 {
compatible = "brcm,bcm2835-unicam";
reg = <0x7e801000 0x00000800 0x7e802004 0x00000004>;
interrupts = <0x00000002 0x00000007>;
clocks = <0x00000008 0x0000002e>;
clock-names = "lp";
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
#clock-cells = <0x00000001>;
status = "disabled";
power-domains = <0x00000014 0x0000000d>;
phandle = <0x00000069>;
port {
endpoint {
data-lanes = <0x00000001 0x00000002>;
};
};
};
i2c@7e804000 {
compatible = "brcm,bcm2835-i2c";
reg = <0x7e804000 0x00001000>;
interrupts = <0x00000002 0x00000015>;
clocks = <0x00000008 0x00000014>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <0x00000015>;
clock-frequency = <0x000186a0>;
phandle = <0x00000023>;
};
i2c@7e805000 {
compatible = "brcm,bcm2835-i2c";
reg = <0x7e805000 0x00001000>;
interrupts = <0x00000002 0x00000015>;
clocks = <0x00000008 0x00000014>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
status = "disabled";
clock-frequency = <0x000186a0>;
phandle = <0x00000016>;
};
vec@7e806000 {
compatible = "brcm,bcm2835-vec";
reg = <0x7e806000 0x00001000>;
clocks = <0x00000008 0x00000018>;
interrupts = <0x00000002 0x0000001b>;
status = "disabled";
phandle = <0x0000006a>;
};
pixelvalve@7e807000 {
compatible = "brcm,bcm2835-pixelvalve2";
reg = <0x7e807000 0x00000100>;
interrupts = <0x00000002 0x0000000a>;
status = "disabled";
phandle = <0x0000006b>;
};
hdmi@7e902000 {
compatible = "brcm,bcm2835-hdmi";
reg = <0x7e902000 0x00000600 0x7e808000 0x00000100>;
interrupts = <0x00000002 0x00000008 0x00000002 0x00000009>;
ddc = <0x00000016>;
clocks = <0x00000008 0x00000010 0x00000008 0x00000019>;
clock-names = "pixel", "hdmi";
dmas = <0x0000000b 0x00000011>;
dma-names = "audio-rx";
status = "disabled";
power-domains = <0x00000014 0x00000005>;
hpd-gpios = <0x00000017 0x00000004 0x00000001>;
phandle = <0x0000006c>;
};
usb@7e980000 {
compatible = "brcm,bcm2708-usb";
reg = <0x7e980000 0x00010000 0x7e006000 0x00001000>;
interrupts = <0x00000002 0x00000000 0x00000001 0x00000009>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
clocks = <0x00000018>;
clock-names = "otg";
phys = <0x00000019>;
phy-names = "usb2-phy";
power-domains = <0x00000014 0x00000006>;
phandle = <0x0000006d>;
usb1@1 {
compatible = "usb424,9514";
reg = <0x00000001>;
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
usbether@1 {
compatible = "usb424,ec00";
reg = <0x00000001>;
phandle = <0x0000006e>;
};
};
};
v3d@7ec00000 {
compatible = "brcm,vc4-v3d";
reg = <0x7ec00000 0x00001000>;
interrupts = <0x00000001 0x0000000a>;
power-domains = <0x00000014 0x0000000a>;
status = "disabled";
phandle = <0x0000006f>;
};
gpu {
compatible = "brcm,bcm2835-vc4";
status = "disabled";
phandle = <0x00000070>;
};
local_intc@40000000 {
compatible = "brcm,bcm2836-l1-intc";
reg = <0x40000000 0x00000100>;
interrupt-controller;
#interrupt-cells = <0x00000001>;
interrupt-parent = <0x00000003>;
phandle = <0x00000003>;
};
mmc@7e300000 {
compatible = "brcm,bcm2835-mmc", "brcm,bcm2835-sdhci";
reg = <0x7e300000 0x00000100>;
interrupts = <0x00000002 0x0000001e>;
clocks = <0x00000008 0x0000001c>;
dmas = <0x0000000b 0x0000000b>;
dma-names = "rx-tx";
brcm,overclock-50 = <0x00000000>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x0000001a>;
non-removable;
bus-width = <0x00000004>;
phandle = <0x00000028>;
};
firmwarekms@7e600000 {
compatible = "raspberrypi,rpi-firmware-kms";
reg = <0x7e600000 0x00000100>;
interrupts = <0x00000002 0x00000010>;
brcm,firmware = <0x00000007>;
status = "disabled";
phandle = <0x00000071>;
};
smi@7e600000 {
compatible = "brcm,bcm2835-smi";
reg = <0x7e600000 0x00000100>;
interrupts = <0x00000002 0x00000010>;
clocks = <0x00000008 0x0000002a>;
assigned-clocks = <0x00000008 0x0000002a>;
assigned-clock-rates = <0x07735940>;
dmas = <0x0000000b 0x00000004>;
dma-names = "rx-tx";
status = "disabled";
phandle = <0x00000072>;
};
axiperf {
compatible = "brcm,bcm2835-axiperf";
reg = <0x7e009800 0x00000100 0x7ee08000 0x00000100>;
firmware = <0x00000007>;
status = "disabled";
phandle = <0x00000029>;
};
gpiomem {
compatible = "brcm,bcm2835-gpiomem";
reg = <0x7e200000 0x00001000>;
};
firmware {
compatible = "raspberrypi,bcm2835-firmware";
mboxes = <0x0000001b>;
phandle = <0x00000007>;
};
power {
compatible = "raspberrypi,bcm2835-power";
firmware = <0x00000007>;
#power-domain-cells = <0x00000001>;
phandle = <0x00000014>;
};
fb {
compatible = "brcm,bcm2708-fb";
firmware = <0x00000007>;
status = "okay";
phandle = <0x00000073>;
};
vchiq {
compatible = "brcm,bcm2835-vchiq";
reg = <0x7e00b840 0x0000000f>;
interrupts = <0x00000000 0x00000002>;
cache-line-size = <0x00000020>;
firmware = <0x00000007>;
phandle = <0x0000001d>;
};
vcsm {
compatible = "raspberrypi,bcm2835-vcsm";
firmware = <0x00000007>;
status = "okay";
phandle = <0x00000074>;
};
audio {
compatible = "brcm,bcm2835-audio";
brcm,pwm-channels = <0x00000008>;
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <0x0000001c>;
phandle = <0x00000024>;
};
sound {
status = "disabled";
phandle = <0x00000075>;
};
arm-pmu {
compatible = "arm,cortex-a7-pmu";
interrupt-parent = <0x00000003>;
interrupts = <0x00000009>;
};
virtgpio {
compatible = "brcm,bcm2835-virtgpio";
gpio-controller;
#gpio-cells = <0x00000002>;
firmware = <0x00000007>;
status = "okay";
phandle = <0x00000030>;
};
expgpio {
compatible = "brcm,bcm2835-expgpio";
gpio-controller;
#gpio-cells = <0x00000002>;
firmware = <0x00000007>;
status = "okay";
phandle = <0x00000017>;
};
};
clocks {
compatible = "simple-bus";
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
clock@3 {
compatible = "fixed-clock";
reg = <0x00000003>;
#clock-cells = <0x00000000>;
clock-output-names = "osc";
clock-frequency = <0x0124f800>;
phandle = <0x00000004>;
};
clock@4 {
compatible = "fixed-clock";
reg = <0x00000004>;
#clock-cells = <0x00000000>;
clock-output-names = "otg";
clock-frequency = <0x1c9c3800>;
phandle = <0x00000018>;
};
};
phy {
compatible = "usb-nop-xceiv";
#phy-cells = <0x00000000>;
phandle = <0x00000019>;
};
timer {
compatible = "arm,armv7-timer";
interrupt-parent = <0x00000003>;
interrupts = <0x00000000 0x00000001 0x00000003 0x00000002>;
always-on;
};
cpus {
#address-cells = <0x00000001>;
#size-cells = <0x00000000>;
enable-method = "brcm,bcm2836-smp";
phandle = <0x00000076>;
cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x00000000>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000d8>;
phandle = <0x0000002a>;
};
cpu@1 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x00000001>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000e0>;
phandle = <0x0000002b>;
};
cpu@2 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x00000002>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000e8>;
phandle = <0x0000002c>;
};
cpu@3 {
device_type = "cpu";
compatible = "arm,cortex-a53";
reg = <0x00000003>;
enable-method = "spin-table";
cpu-release-addr = <0x00000000 0x000000f0>;
phandle = <0x0000002d>;
};
};
fixedregulator_5v0 {
compatible = "regulator-fixed";
regulator-name = "5v0";
regulator-min-microvolt = <0x004c4b40>;
regulator-max-microvolt = <0x004c4b40>;
regulator-always-on;
phandle = <0x00000077>;
};
fixedregulator_3v3 {
compatible = "regulator-fixed";
regulator-name = "3v3";
regulator-min-microvolt = <0x00325aa0>;
regulator-max-microvolt = <0x00325aa0>;
regulator-always-on;
phandle = <0x00000078>;
};
__overrides__ {
cam0-pwdn-ctrl;
cam0-pwdn;
cam0-led-ctrl;
cam0-led;
cache_line_size = [00 00 00 1d 63 61 63 68 65 2d 6c 69 6e 65 2d 73 69 7a 65 3a 30 00];
uart0 = [00 00 00 1e 73 74 61 74 75 73 00];
uart1 = [00 00 00 1f 73 74 61 74 75 73 00];
i2s = [00 00 00 20 73 74 61 74 75 73 00];
spi = [00 00 00 21 73 74 61 74 75 73 00];
i2c0 = [00 00 00 22 73 74 61 74 75 73 00];
i2c1 = [00 00 00 23 73 74 61 74 75 73 00];
i2c2_iknowwhatimdoing = [00 00 00 16 73 74 61 74 75 73 00];
i2c0_baudrate = [00 00 00 22 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
i2c1_baudrate = [00 00 00 23 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
i2c2_baudrate = [00 00 00 16 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
audio = [00 00 00 24 73 74 61 74 75 73 00];
watchdog = [00 00 00 25 73 74 61 74 75 73 00];
random = [00 00 00 26 73 74 61 74 75 73 00];
sd_overclock = <0x00000027 0x6272636d 0x2c6f7665 0x72636c6f 0x636b2d35 0x303a3000>;
sd_force_pio = <0x00000027 0x6272636d 0x2c666f72 0x63652d70 0x696f3f00>;
sd_pio_limit = [00 00 00 27 62 72 63 6d 2c 70 69 6f 2d 6c 69 6d 69 74 3a 30 00];
sd_debug = [00 00 00 27 62 72 63 6d 2c 64 65 62 75 67 00];
sdio_overclock = <0x00000028 0x6272636d 0x2c6f7665 0x72636c6f 0x636b2d35 0x303a3000>;
axiperf = [00 00 00 29 73 74 61 74 75 73 00];
arm_freq = <0x0000002a 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x002b636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000 0x0000002c 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x002d636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000>;
act_led_gpio = <0x0000002e 0x6770696f 0x733a3400>;
act_led_activelow = <0x0000002e 0x6770696f 0x733a3800>;
act_led_trigger = [00 00 00 2e 6c 69 6e 75 78 2c 64 65 66 61 75 6c 74 2d 74 72 69 67 67 65 72 00];
pwr_led_gpio = <0x0000002f 0x6770696f 0x733a3400>;
pwr_led_activelow = <0x0000002f 0x6770696f 0x733a3800>;
pwr_led_trigger = [00 00 00 2f 6c 69 6e 75 78 2c 64 65 66 61 75 6c 74 2d 74 72 69 67 67 65 72 00];
};
memory {
device_type = "memory";
reg = <0x00000000 0x00000000>;
};
leds {
compatible = "gpio-leds";
phandle = <0x00000079>;
act {
label = "led0";
linux,default-trigger = "mmc0";
gpios = <0x00000030 0x00000000 0x00000000>;
phandle = <0x0000002e>;
};
pwr {
label = "led1";
linux,default-trigger = "input";
gpios = <0x00000017 0x00000007 0x00000000>;
phandle = <0x0000002f>;
};
};
__symbols__ {
cpu_thermal = "/thermal-zones/cpu-thermal";
soc = "/soc";
dma = "/soc/dma@7e007000";
intc = "/soc/interrupt-controller@7e00b200";
watchdog = "/soc/watchdog@7e100000";
clocks = "/soc/cprman@7e101000";
random = "/soc/rng@7e104000";
mailbox = "/soc/mailbox@7e00b880";
gpio = "/soc/gpio@7e200000";
dpi_gpio0 = "/soc/gpio@7e200000/dpi_gpio0";
emmc_gpio22 = "/soc/gpio@7e200000/emmc_gpio22";
emmc_gpio34 = "/soc/gpio@7e200000/emmc_gpio34";
emmc_gpio48 = "/soc/gpio@7e200000/emmc_gpio48";
gpclk0_gpio4 = "/soc/gpio@7e200000/gpclk0_gpio4";
gpclk1_gpio5 = "/soc/gpio@7e200000/gpclk1_gpio5";
gpclk1_gpio42 = "/soc/gpio@7e200000/gpclk1_gpio42";
gpclk1_gpio44 = "/soc/gpio@7e200000/gpclk1_gpio44";
gpclk2_gpio6 = "/soc/gpio@7e200000/gpclk2_gpio6";
gpclk2_gpio43 = "/soc/gpio@7e200000/gpclk2_gpio43";
i2c0_gpio0 = "/soc/gpio@7e200000/i2c0_gpio0";
i2c0_gpio28 = "/soc/gpio@7e200000/i2c0_gpio28";
i2c0_gpio44 = "/soc/gpio@7e200000/i2c0_gpio44";
i2c1_gpio2 = "/soc/gpio@7e200000/i2c1_gpio2";
i2c1_gpio44 = "/soc/gpio@7e200000/i2c1_gpio44";
i2c_slave_gpio18 = "/soc/gpio@7e200000/i2c_slave_gpio18";
jtag_gpio4 = "/soc/gpio@7e200000/jtag_gpio4";
jtag_gpio22 = "/soc/gpio@7e200000/jtag_gpio22";
pcm_gpio18 = "/soc/gpio@7e200000/pcm_gpio18";
pcm_gpio28 = "/soc/gpio@7e200000/pcm_gpio28";
pwm0_gpio12 = "/soc/gpio@7e200000/pwm0_gpio12";
pwm0_gpio18 = "/soc/gpio@7e200000/pwm0_gpio18";
pwm0_gpio40 = "/soc/gpio@7e200000/pwm0_gpio40";
pwm1_gpio13 = "/soc/gpio@7e200000/pwm1_gpio13";
pwm1_gpio19 = "/soc/gpio@7e200000/pwm1_gpio19";
pwm1_gpio41 = "/soc/gpio@7e200000/pwm1_gpio41";
pwm1_gpio45 = "/soc/gpio@7e200000/pwm1_gpio45";
sdhost_pins = "/soc/gpio@7e200000/sdhost_gpio48";
sdhost_gpio48 = "/soc/gpio@7e200000/sdhost_gpio48";
spi0_gpio7 = "/soc/gpio@7e200000/spi0_gpio7";
spi0_gpio35 = "/soc/gpio@7e200000/spi0_gpio35";
spi1_gpio16 = "/soc/gpio@7e200000/spi1_gpio16";
spi2_gpio40 = "/soc/gpio@7e200000/spi2_gpio40";
uart0_gpio14 = "/soc/gpio@7e200000/uart0_gpio14";
uart0_ctsrts_gpio16 = "/soc/gpio@7e200000/uart0_ctsrts_gpio16";
uart0_ctsrts_gpio30 = "/soc/gpio@7e200000/uart0_ctsrts_gpio30";
uart0_gpio32 = "/soc/gpio@7e200000/uart0_gpio32";
uart0_gpio36 = "/soc/gpio@7e200000/uart0_gpio36";
uart0_ctsrts_gpio38 = "/soc/gpio@7e200000/uart0_ctsrts_gpio38";
uart1_gpio14 = "/soc/gpio@7e200000/uart1_gpio14";
uart1_ctsrts_gpio16 = "/soc/gpio@7e200000/uart1_ctsrts_gpio16";
uart1_gpio32 = "/soc/gpio@7e200000/uart1_gpio32";
uart1_ctsrts_gpio30 = "/soc/gpio@7e200000/uart1_ctsrts_gpio30";
uart1_gpio40 = "/soc/gpio@7e200000/uart1_gpio40";
uart1_ctsrts_gpio42 = "/soc/gpio@7e200000/uart1_ctsrts_gpio42";
dpi_18bit_gpio0 = "/soc/gpio@7e200000/dpi_18bit_gpio0";
spi0_pins = "/soc/gpio@7e200000/spi0_pins";
spi0_cs_pins = "/soc/gpio@7e200000/spi0_cs_pins";
i2c0_pins = "/soc/gpio@7e200000/i2c0";
i2c1_pins = "/soc/gpio@7e200000/i2c1";
i2s_pins = "/soc/gpio@7e200000/i2s";
sdio_pins = "/soc/gpio@7e200000/sdio_pins";
bt_pins = "/soc/gpio@7e200000/bt_pins";
uart0_pins = "/soc/gpio@7e200000/uart0_pins";
uart1_pins = "/soc/gpio@7e200000/uart1_pins";
audio_pins = "/soc/gpio@7e200000/audio_pins";
uart0 = "/soc/serial@7e201000";
sdhost = "/soc/mmc@7e202000";
i2s = "/soc/i2s@7e203000";
spi0 = "/soc/spi@7e204000";
spi = "/soc/spi@7e204000";
spidev0 = "/soc/spi@7e204000/spidev@0";
spidev1 = "/soc/spi@7e204000/spidev@1";
i2c0 = "/soc/i2c@7e205000";
pixelvalve0 = "/soc/pixelvalve@7e206000";
pixelvalve1 = "/soc/pixelvalve@7e207000";
dpi = "/soc/dpi@7e208000";
dsi0 = "/soc/dsi@7e209000";
thermal = "/soc/thermal@7e212000";
aux = "/soc/aux@0x7e215000";
uart1 = "/soc/serial@7e215040";
spi1 = "/soc/spi@7e215080";
spi2 = "/soc/spi@7e2150c0";
pwm = "/soc/pwm@7e20c000";
hvs = "/soc/hvs@7e400000";
dsi1 = "/soc/dsi@7e700000";
csi0 = "/soc/csi0@7e800000";
csi1 = "/soc/csi1@7e801000";
i2c1 = "/soc/i2c@7e804000";
i2c2 = "/soc/i2c@7e805000";
vec = "/soc/vec@7e806000";
pixelvalve2 = "/soc/pixelvalve@7e807000";
hdmi = "/soc/hdmi@7e902000";
usb = "/soc/usb@7e980000";
ethernet = "/soc/usb@7e980000/usb1@1/usbether@1";
v3d = "/soc/v3d@7ec00000";
vc4 = "/soc/gpu";
local_intc = "/soc/local_intc@40000000";
mmc = "/soc/mmc@7e300000";
firmwarekms = "/soc/firmwarekms@7e600000";
smi = "/soc/smi@7e600000";
axiperf = "/soc/axiperf";
firmware = "/soc/firmware";
power = "/soc/power";
fb = "/soc/fb";
vchiq = "/soc/vchiq";
vcsm = "/soc/vcsm";
audio = "/soc/audio";
sound = "/soc/sound";
virtgpio = "/soc/virtgpio";
expgpio = "/soc/expgpio";
clk_osc = "/clocks/clock@3";
clk_usb = "/clocks/clock@4";
usbphy = "/phy";
cpus = "/cpus";
cpu0 = "/cpus/cpu@0";
cpu1 = "/cpus/cpu@1";
cpu2 = "/cpus/cpu@2";
cpu3 = "/cpus/cpu@3";
vdd_5v0_reg = "/fixedregulator_5v0";
vdd_3v3_reg = "/fixedregulator_3v3";
leds = "/leds";
act_led = "/leds/act";
pwr_led = "/leds/pwr";
};
};
```
#### v2
(tutaj mamy limit rozmiaru notatki) [link](https://hackmd.io/7rTkNEyFSDe0_smY8djQng?view)