| // SPDX-License-Identifier: (GPL-2.0 OR MIT) |
| /dts-v1/; |
| |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/input.h> |
| #include "bcm2712.dtsi" |
| |
| / { |
| compatible = "raspberrypi,5-model-b", "brcm,bcm2712"; |
| model = "Raspberry Pi 5"; |
| |
| aliases { |
| serial10 = &uart10; |
| }; |
| |
| chosen: chosen { |
| stdout-path = "serial10:115200n8"; |
| }; |
| |
| clk_rp1_xosc: clock-50000000 { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-output-names = "rp1-xosc"; |
| clock-frequency = <50000000>; |
| }; |
| |
| /* Will be filled by the bootloader */ |
| memory@0 { |
| device_type = "memory"; |
| reg = <0 0 0 0x28000000>; |
| }; |
| |
| gpio-keys { |
| compatible = "gpio-keys"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pwr_button_default>; |
| status = "okay"; |
| |
| power_button: power-button { |
| label = "pwr_button"; |
| linux,code = <KEY_POWER>; |
| gpios = <&gio 20 GPIO_ACTIVE_LOW>; |
| debounce-interval = <50>; |
| }; |
| }; |
| |
| sd_io_1v8_reg: sd-io-1v8-reg { |
| compatible = "regulator-gpio"; |
| regulator-name = "vdd-sd-io"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-boot-on; |
| regulator-always-on; |
| regulator-settling-time-us = <5000>; |
| gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>; |
| states = <1800000 1>, |
| <3300000 0>; |
| }; |
| |
| sd_vcc_reg: sd-vcc-reg { |
| compatible = "regulator-fixed"; |
| regulator-name = "vcc-sd"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-boot-on; |
| enable-active-high; |
| gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>; |
| }; |
| |
| wl_on_reg: wl-on-reg { |
| compatible = "regulator-fixed"; |
| regulator-name = "wl-on-regulator"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| pinctrl-0 = <&wl_on_default>; |
| pinctrl-names = "default"; |
| gpio = <&gio 28 GPIO_ACTIVE_HIGH>; |
| startup-delay-us = <150000>; |
| enable-active-high; |
| }; |
| }; |
| |
| &pinctrl { |
| bt_shutdown_default: bt-shutdown-default-state { |
| function = "gpio"; |
| pins = "gpio29"; |
| }; |
| |
| emmc_sd_default: emmc-sd-default-state { |
| pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3"; |
| bias-pull-up; |
| }; |
| |
| pwr_button_default: pwr-button-default-state { |
| function = "gpio"; |
| pins = "gpio20"; |
| bias-pull-up; |
| }; |
| |
| sdio2_30_default: sdio2-30-default-state { |
| clk-pins { |
| function = "sd2"; |
| pins = "gpio30"; |
| bias-disable; |
| }; |
| cmd-pins { |
| function = "sd2"; |
| pins = "gpio31"; |
| bias-pull-up; |
| }; |
| dat-pins { |
| function = "sd2"; |
| pins = "gpio32", "gpio33", "gpio34", "gpio35"; |
| bias-pull-up; |
| }; |
| }; |
| |
| uarta_24_default: uarta-24-default-state { |
| rts-pins { |
| function = "uart0"; |
| pins = "gpio24"; |
| bias-disable; |
| }; |
| cts-pins { |
| function = "uart0"; |
| pins = "gpio25"; |
| bias-pull-up; |
| }; |
| txd-pins { |
| function = "uart0"; |
| pins = "gpio26"; |
| bias-disable; |
| }; |
| rxd-pins { |
| function = "uart0"; |
| pins = "gpio27"; |
| bias-pull-up; |
| }; |
| }; |
| |
| wl_on_default: wl-on-default-state { |
| function = "gpio"; |
| pins = "gpio28"; |
| }; |
| }; |
| |
| &pinctrl_aon { |
| emmc_aon_cd_default: emmc-aon-cd-default-state { |
| function = "sd_card_g"; |
| pins = "aon_gpio5"; |
| bias-pull-up; |
| }; |
| }; |
| |
| /* The Debug UART, on Rpi5 it's on JST-SH 1.0mm 3-pin connector |
| * labeled "UART", i.e. the interface with the system console. |
| */ |
| &uart10 { |
| status = "okay"; |
| }; |
| |
| /* SDIO1 is used to drive the SD card */ |
| &sdio1 { |
| pinctrl-0 = <&emmc_sd_default>, <&emmc_aon_cd_default>; |
| pinctrl-names = "default"; |
| vqmmc-supply = <&sd_io_1v8_reg>; |
| vmmc-supply = <&sd_vcc_reg>; |
| bus-width = <4>; |
| sd-uhs-sdr50; |
| sd-uhs-ddr50; |
| sd-uhs-sdr104; |
| cd-gpios = <&gio_aon 5 GPIO_ACTIVE_LOW>; |
| }; |
| |
| &sdio2 { |
| pinctrl-0 = <&sdio2_30_default>; |
| pinctrl-names = "default"; |
| bus-width = <4>; |
| vmmc-supply = <&wl_on_reg>; |
| sd-uhs-ddr50; |
| non-removable; |
| status = "okay"; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| wifi: wifi@1 { |
| reg = <1>; |
| compatible = "brcm,bcm4329-fmac"; |
| }; |
| }; |
| |
| &soc { |
| firmware: firmware { |
| compatible = "raspberrypi,bcm2835-firmware", "simple-mfd"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| mboxes = <&mailbox>; |
| dma-ranges; |
| |
| firmware_clocks: clocks { |
| compatible = "raspberrypi,firmware-clocks"; |
| #clock-cells = <1>; |
| }; |
| |
| reset: reset { |
| compatible = "raspberrypi,firmware-reset"; |
| #reset-cells = <1>; |
| }; |
| }; |
| |
| power: power { |
| compatible = "raspberrypi,bcm2835-power"; |
| firmware = <&firmware>; |
| #power-domain-cells = <1>; |
| }; |
| }; |
| |
| /* uarta communicates with the BT module */ |
| &uarta { |
| uart-has-rtscts; |
| pinctrl-0 = <&uarta_24_default &bt_shutdown_default>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| bluetooth: bluetooth { |
| compatible = "brcm,bcm43438-bt"; |
| max-speed = <3000000>; |
| shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>; |
| }; |
| }; |
| |
| &hvs { |
| clocks = <&firmware_clocks 4>, <&firmware_clocks 16>; |
| clock-names = "core", "disp"; |
| }; |
| |
| &hdmi0 { |
| clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>; |
| clock-names = "hdmi", "bvb", "audio", "cec"; |
| }; |
| |
| &hdmi1 { |
| clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>; |
| clock-names = "hdmi", "bvb", "audio", "cec"; |
| }; |
| |
| &pcie1 { |
| status = "okay"; |
| }; |
| |
| &pcie2 { |
| status = "okay"; |
| }; |