# Result of calling 'dtc --sort -I fs -O dts /sys/firmware/devicetree/base > device_tree.out' on a Raspberry Pi with wfx driver installed # This is an abstract with only wfx-related items # Comments are added, trying to explain what each line is for and what it contains. # Since this is coming from a compiled device tree, all user-defined 'phandle' names have been replaced by hex numbers, only names meaningful for the linux kernel and thr driver are kept. # Links are provided to the official (mostly Broadcom) docs in the linux kernel, for reference. # For other platforms, refer to the corresponding platform documentation /dts-v1/; / { #address-cells = < 0x01 >; # integer 1: 1 address cell #size-cells = < 0x01 >; # integer 1: cell size is 1 byte compatible = "raspberrypi,3-model-b\0brcm,bcm2837"; # driver using the device tree interrupt-parent = < 0x01 >; # soc/interrupt-controller@7e00b200/phandle memreserve = < 0x3b400000 0x4c00000 >; model = "Raspberry Pi 3 Model B Rev 1.2"; serial-number = "000000001e309345"; __overrides__ { sdio_overclock = "\0\0\0,brcm,overclock-50:0\0\0\0\0-brcm,overclock-50:0"; }; soc { #address-cells = < 0x01 >; # integer 1: 1 address cell #size-cells = < 0x01 >; # integer 1: cell size is 1 byte compatible = "simple-bus"; dma-ranges = < 0xc0000000 0x00 0x3f000000 >; phandle = < 0x33 >; # unused handle ranges = < 0x7e000000 0x3f000000 0x1000000 0x40000000 0x40000000 0x1000 >; cprman@7e101000 { #clock-cells = < 0x01 >; # integer 1: 1 cell clocks = < 0x04 0x05 0x00 0x05 0x01 0x05 0x02 0x06 0x00 0x06 0x01 0x06 0x02 >; compatible = "brcm,bcm2835-cprman"; # driver to use for clock power management firmware = < 0x07 >; phandle = < 0x03 >; # used in soc/mmc@7e30000/clocks reg = < 0x7e101000 0x2000 >; }; dma@7e007000 { #dma-cells = < 0x01 >; brcm,dma-channel-mask = < 0x7f35 >; compatible = "brcm,bcm2835-dma"; interrupt-names = "dma0\0dma1\0dma2\0dma3\0dma4\0dma5\0dma6\0dma7\0dma8\0dma9\0dma10\0dma11\0dma12\0dma13\0dma14\0dma-shared-all"; interrupts = < 0x01 0x10 0x01 0x11 0x01 0x12 0x01 0x13 0x01 0x14 0x01 0x15 0x01 0x16 0x01 0x17 0x01 0x18 0x01 0x19 0x01 0x1a 0x01 0x1b 0x01 0x1b 0x01 0x1b 0x01 0x1b 0x01 0x1c >; phandle = < 0x0a >; # used in soc/mmc@7e300000/dmas reg = < 0x7e007000 0xf00 >; }; # Broadcom BCM2835 GPIO (and pinmux) controller. See https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/brcm,bcm2835-gpio.txt gpio@7e200000 { #gpio-cells = < 0x02 >; # integer 2: 2 gpio cells #interrupt-cells = < 0x02 >; # integer 2: 2 interrupt cells compatible = "brcm,bcm2835-gpio"; # driver to use for gpio. gpio-controller; # this is a gpio controller interrupt-controller; # this is an interrupt controller interrupts = < 0x02 0x11 0x02 0x12 >; # interrupts definition (2 cells of size 2) phandle = < 0x0f >; # used in soc/mmc@7e300000/mmc@1/wakeup-gpios and wfx_pwrseq/reset-gpios pinctrl-names = "default"; reg = < 0x7e200000 0xb4 >; # Generic GPIO sub nodes. See https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt # See Generic pin multiplexing node schema in https://www.kernel.org/doc/Documentation/devicetree/bindings/pinctrl/pinmux-node.yaml sdio_pins { brcm,function = < 0x07 >; brcm,pins = < 0x16 0x17 0x18 0x19 0x1a 0x1b >; # pin numbers brcm,pull = < 0x00 0x02 0x02 0x02 0x02 0x02 >; # pull-up settings phandle = < 0x80 >; # used in soc/mmc@7e300000/pinctrl-0 }; wfx_irq { brcm,function = < 0x00 >; brcm,pins = < 0x10 >; brcm,pull = < 0x01 >; phandle = < 0x82 >; # used in soc/mmc@7e300000/mmc@1/pinctrl-0 }; wfx_reset { brcm,function = < 0x01 >; brcm,pins = < 0x0d >; brcm,pull = < 0x00 >; phandle = < 0x7f >; # used in wfx_pwrseq/pinctrl-0 }; wfx_wakeup { brcm,function = < 0x01 >; brcm,pins = < 0x0c >; brcm,pull = < 0x00 >; phandle = < 0x83 >; # used in soc/mmc@7e300000/mmc@1/pinctrl-0 }; }; # BCM2835 Top-Level ("ARMCTRL") Interrupt Controller. See https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/brcm%2Cbcm2835-armctrl-ic.txt interrupt-controller@7e00b200 { #interrupt-cells = < 0x02 >; # integer 2 compatible = "brcm,bcm2836-armctrl-ic"; # driver to use for interrupt control interrupt-controller; # this is an interrupt controller interrupt-parent = < 0x19 >; # soc/local_inct@40000000/phandle interrupts = < 0x08 0x04 >; # interrupt definition (2 cells of size 1) phandle = < 0x01 >; # used in interrupt-parent reg = < 0x7e00b200 0x200 >; }; # BCM2836 per-CPU interrupt controller. See https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/brcm%2Cbcm2836-l1-intc.txt local_intc@40000000 { #interrupt-cells = < 0x02 >; # integer 2 compatible = "brcm,bcm2836-l1-intc"; # driver to use with this interrupt controller interrupt-controller; # this is an interrupt controller interrupt-parent = < 0x19 >; # soc/local_intc@40000000/phandle (self) phandle = < 0x19 >; # used in soc/interrupt-controller@7e00b200 soc/local_intc@40000000(self) reg = < 0x40000000 0x100 >; }; mmc@7e300000 { #address-cells = < 0x01 >; # integer 1 #size-cells = < 0x00 >; # integer 0 brcm,overclock-50 = < 0x19 >; # integer 25 bus-width = < 0x04 >; # integer 4 clocks = < 0x03 0x1c >; # soc/cprman@7e101000/phandle compatible = "brcm,bcm2835-mmc\0brcm,bcm2835-sdhci"; # driver to use for mmc dma-names = "rx-tx"; dmas = < 0x0a 0x0b >; # soc/dma@7e007000/phandle interrupts = < 0x02 0x1e >; # interrupts definition (2 cells of size 1) max-frequency = < 0x2faf080 >; # integer 50000000 mmc-pwrseq = < 0x81 >; # wfx_pwrseg/phandle non-removable; phandle = < 0x2c >; # unused handle pinctrl-0 = < 0x80 >; # soc/gpio@7e200000/sdio_pins/phandle pinctrl-names = "default"; reg = < 0x7e300000 0x100 >; status = "okay"; # activate mmc mmc@1 { compatible = "silabs,wfx-sdio"; # driver to use for wfx config-file = "wf200.pds"; # PDS file to use for wfx phandle = < 0x84 >; # unused handle pinctrl-0 = < 0x82 0x83 >; # soc/gpio@7e200000/wfx_irq gpio@7e200000/wfx_wakeup pinctrl-names = "default"; reg = < 0x01 >; # integer 1 status = "okay"; # activate the wfx driver wakeup-gpios = < 0x0f 0x0c 0x00 >; # GPIO definition: }; }; mmcnr@7e300000 { status = "disabled"; # disabled mmcnr driver via overlay: target = <&mmcnr>; status = "disabled"; }; # The simple MMC power sequence provider. See https://www.kernel.org/doc/Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.txt wfx_pwrseq { compatible = "mmc-pwrseq-simple"; phandle = < 0x81 >; # used in soc/mmc@7e300000/mmc-pwrseq pinctrl-0 = < 0x7f >; # soc/gpio@7e200000/wfx_reset/phandle pinctrl-names = "default"; reset-gpios = < 0x0f 0x0d 0x01 >; # GPIO definition: }; };