| // SPDX-License-Identifier: GPL-2.0-only OR MIT |
| /* |
| * https://www.beagleboard.org/boards/pocketbeagle-2 |
| * |
| * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/ |
| * Copyright (C) 2025 Robert Nelson, BeagleBoard.org Foundation |
| */ |
| |
| /dts-v1/; |
| |
| #include <dt-bindings/leds/common.h> |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/input.h> |
| #include "k3-am625.dtsi" |
| |
| / { |
| compatible = "beagle,am62-pocketbeagle2", "ti,am625"; |
| model = "BeagleBoard.org PocketBeagle2"; |
| |
| aliases { |
| serial0 = &wkup_uart0; |
| serial1 = &main_uart1; |
| serial2 = &main_uart6; |
| serial3 = &main_uart0; |
| mmc1 = &sdhci1; |
| usb0 = &usb0; |
| usb1 = &usb1; |
| i2c0 = &main_i2c0; |
| i2c2 = &main_i2c2; |
| i2c3 = &wkup_i2c0; |
| }; |
| |
| chosen { |
| stdout-path = &main_uart6; |
| }; |
| |
| memory@80000000 { |
| /* 512MB RAM */ |
| reg = <0x00000000 0x80000000 0x00000000 0x20000000>; |
| device_type = "memory"; |
| bootph-pre-ram; |
| }; |
| |
| reserved_memory: reserved-memory { |
| #address-cells = <2>; |
| #size-cells = <2>; |
| ranges; |
| |
| /* global cma region */ |
| linux,cma { |
| compatible = "shared-dma-pool"; |
| reusable; |
| size = <0x00 0x8000000>; |
| linux,cma-default; |
| }; |
| |
| secure_tfa_ddr: tfa@9e780000 { |
| reg = <0x00 0x9e780000 0x00 0x80000>; |
| alignment = <0x1000>; |
| no-map; |
| }; |
| |
| secure_ddr: optee@9e800000 { |
| reg = <0x00 0x9e800000 0x00 0x01800000>; |
| alignment = <0x1000>; |
| no-map; |
| }; |
| |
| wkup_r5fss0_core0_dma_memory_region: memory@9da00000 { |
| compatible = "shared-dma-pool"; |
| reg = <0x00 0x9da00000 0x00 0x100000>; |
| no-map; |
| }; |
| |
| wkup_r5fss0_core0_memory_region: memory@9db00000 { |
| compatible = "shared-dma-pool"; |
| reg = <0x00 0x9db00000 0x00 0xc00000>; |
| no-map; |
| }; |
| }; |
| |
| vsys_5v0: regulator-1 { |
| compatible = "regulator-fixed"; |
| regulator-name = "vsys_5v0"; |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| regulator-always-on; |
| regulator-boot-on; |
| bootph-all; |
| }; |
| |
| vdd_3v3: regulator-2 { |
| compatible = "regulator-fixed"; |
| regulator-name = "vdd_3v3"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| vin-supply = <&vsys_5v0>; |
| regulator-always-on; |
| regulator-boot-on; |
| bootph-all; |
| }; |
| |
| vdd_mmc1: regulator-3 { |
| compatible = "regulator-fixed"; |
| regulator-name = "vdd_mmc1"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&vdd_3v3_sd_pins_default>; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-boot-on; |
| enable-active-high; |
| regulator-always-on; |
| vin-supply = <&vdd_3v3>; |
| gpio = <&main_gpio0 0 GPIO_ACTIVE_HIGH>; |
| bootph-all; |
| }; |
| |
| vdd_sd_dv: regulator-4 { |
| compatible = "regulator-gpio"; |
| regulator-name = "sd_hs200_switch"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&vdd_sd_dv_pins_default>; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-boot-on; |
| vin-supply = <&vdd_3v3>; |
| gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>; |
| states = <1800000 0x0>, |
| <3300000 0x1>; |
| bootph-all; |
| }; |
| |
| adc_vref: regulator-5 { |
| compatible = "regulator-fixed"; |
| regulator-name = "default"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-boot-on; |
| }; |
| |
| leds { |
| compatible = "gpio-leds"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&led_pins_default>; |
| bootph-all; |
| |
| led-1 { |
| function = LED_FUNCTION_HEARTBEAT; |
| color = <LED_COLOR_ID_GREEN>; |
| linux,default-trigger = "heartbeat"; |
| gpios = <&main_gpio0 6 GPIO_ACTIVE_HIGH>; |
| default-state = "on"; |
| bootph-all; |
| }; |
| |
| led-2 { |
| function = LED_FUNCTION_DISK_ACTIVITY; |
| color = <LED_COLOR_ID_GREEN>; |
| linux,default-trigger = "mmc1"; |
| gpios = <&main_gpio0 5 GPIO_ACTIVE_HIGH>; |
| default-state = "on"; |
| bootph-all; |
| }; |
| |
| led-3 { |
| function = LED_FUNCTION_INDICATOR; |
| color = <LED_COLOR_ID_GREEN>; |
| gpios = <&main_gpio0 4 GPIO_ACTIVE_HIGH>; |
| default-state = "off"; |
| bootph-all; |
| }; |
| |
| led-4 { |
| function = LED_FUNCTION_INDICATOR; |
| color = <LED_COLOR_ID_GREEN>; |
| gpios = <&main_gpio0 3 GPIO_ACTIVE_HIGH>; |
| default-state = "off"; |
| bootph-all; |
| }; |
| }; |
| }; |
| |
| &main_pmx0 { |
| led_pins_default: led-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x000c, PIN_OUTPUT, 7) /* (E25) OSPI0_D0.GPIO0_3 */ |
| AM62X_IOPAD(0x0010, PIN_OUTPUT, 7) /* (G24) OSPI0_D1.GPIO0_4 */ |
| AM62X_IOPAD(0x0014, PIN_OUTPUT, 7) /* (F25) OSPI0_D2.GPIO0_5 */ |
| AM62X_IOPAD(0x0018, PIN_OUTPUT, 7) /* (F24) OSPI0_D3.GPIO0_6 */ |
| >; |
| bootph-all; |
| }; |
| |
| main_i2c0_pins_default: main-i2c0-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (B16) I2C0_SCL */ |
| AM62X_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (A16) I2C0_SDA */ |
| >; |
| bootph-all; |
| }; |
| |
| main_i2c2_pins_default: main-i2c2-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (K22) GPMC0_CSn2.I2C2_SCL */ |
| AM62X_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (K24) GPMC0_CSn3.I2C2_SDA */ |
| >; |
| bootph-all; |
| }; |
| |
| main_uart0_pins_default: main-uart0-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14/A13) UART0_RXD */ |
| AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14/E11) UART0_TXD */ |
| >; |
| bootph-all; |
| }; |
| |
| main_uart1_pins_default: main-uart1-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x194, PIN_INPUT, 2) /* (B19/B18) MCASP0_AXR3.UART1_CTSn */ |
| AM62X_IOPAD(0x198, PIN_OUTPUT, 2) /* (A19/B17) MCASP0_AXR2.UART1_RTSn */ |
| AM62X_IOPAD(0x1ac, PIN_INPUT, 2) /* (E19/D15) MCASP0_AFSR.UART1_RXD */ |
| AM62X_IOPAD(0x1b0, PIN_OUTPUT, 2) /* (A20/D16) MCASP0_ACLKR.UART1_TXD */ |
| >; |
| bootph-all; |
| }; |
| |
| main_uart6_pins_default: main-uart6-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x001c, PIN_INPUT, 3) /* (J23) OSPI0_D4.UART6_RXD */ |
| AM62X_IOPAD(0x0020, PIN_OUTPUT, 3) /* (J25) OSPI0_D5.UART6_TXD */ |
| >; |
| }; |
| |
| main_mmc1_pins_default: main-mmc1-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x23c, PIN_INPUT, 0) /* (A21/C18) MMC1_CMD */ |
| AM62X_IOPAD(0x234, PIN_INPUT, 0) /* (B22/A20) MMC1_CLK */ |
| AM62X_IOPAD(0x230, PIN_INPUT, 0) /* (A22/A19) MMC1_DAT0 */ |
| AM62X_IOPAD(0x22c, PIN_INPUT, 0) /* (B21/B19) MMC1_DAT1 */ |
| AM62X_IOPAD(0x228, PIN_INPUT, 0) /* (C21/B20) MMC1_DAT2 */ |
| AM62X_IOPAD(0x224, PIN_INPUT, 0) /* (D22/C19) MMC1_DAT3 */ |
| AM62X_IOPAD(0x240, PIN_INPUT, 7) /* (D17/C15) MMC1_SDCD.GPIO1_48 */ |
| >; |
| bootph-all; |
| }; |
| |
| vdd_sd_dv_pins_default: vdd-sd-dv-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x0244, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO1_49 */ |
| >; |
| bootph-all; |
| }; |
| |
| pmic_irq_pins_default: pmic-irq-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (D16) EXTINTn */ |
| >; |
| bootph-all; |
| }; |
| |
| vdd_3v3_sd_pins_default: vdd-3v3-sd-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x0000, PIN_OUTPUT, 7) /* (H24) OSPI0_CLK.GPIO0_0 */ |
| >; |
| bootph-all; |
| }; |
| |
| usb1_pins_default: usb1-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x0258, PIN_INPUT, 0) /* (F18) USB1_DRVVBUS */ |
| >; |
| bootph-all; |
| }; |
| |
| epwm2_pins_default: epwm2-default-pins { |
| pinctrl-single,pins = < |
| AM62X_IOPAD(0x01e8, PIN_OUTPUT, 8) /* (B17) I2C1_SCL.EHRPWM2_A */ |
| >; |
| }; |
| }; |
| |
| &epwm2 { |
| status = "okay"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&epwm2_pins_default>; |
| }; |
| |
| &main_uart0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_uart0_pins_default>; |
| bootph-all; |
| status = "okay"; |
| }; |
| |
| &main_uart1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_uart1_pins_default>; |
| bootph-pre-ram; |
| status = "reserved"; |
| }; |
| |
| &main_uart6 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_uart6_pins_default>; |
| bootph-all; |
| status = "okay"; |
| }; |
| |
| &main_i2c0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_i2c0_pins_default>; |
| clock-frequency = <400000>; |
| bootph-all; |
| status = "okay"; |
| |
| ad7291: adc@20 { |
| /* Emulated with MSPM0L1105 */ |
| compatible = "adi,ad7291"; |
| reg = <0x20>; |
| vref-supply = <&adc_vref>; |
| }; |
| |
| eeprom: eeprom@50 { |
| /* Emulated with MSPM0L1105 */ |
| compatible = "atmel,24c32"; |
| reg = <0x50>; |
| }; |
| }; |
| |
| &main_i2c2 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_i2c2_pins_default>; |
| clock-frequency = <400000>; |
| bootph-all; |
| status = "okay"; |
| }; |
| |
| &mcu_pmx0 { |
| wkup_uart0_pins_default: wkup-uart0-default-pins { |
| pinctrl-single,pins = < |
| AM62X_MCU_IOPAD(0x02c, PIN_INPUT, 0) /* (C6/A7) WKUP_UART0_CTSn */ |
| AM62X_MCU_IOPAD(0x030, PIN_OUTPUT, 0) /* (A4/B4) WKUP_UART0_RTSn */ |
| AM62X_MCU_IOPAD(0x024, PIN_INPUT, 0) /* (B4/B5) WKUP_UART0_RXD */ |
| AM62X_MCU_IOPAD(0x028, PIN_OUTPUT, 0) /* (C5/C6) WKUP_UART0_TXD */ |
| >; |
| bootph-all; |
| }; |
| |
| wkup_i2c0_pins_default: wkup-i2c0-default-pins { |
| pinctrl-single,pins = < |
| AM62X_MCU_IOPAD(0x004c, PIN_INPUT_PULLUP, 0) /* (B9) WKUP_I2C0_SCL */ |
| AM62X_MCU_IOPAD(0x0050, PIN_INPUT_PULLUP, 0) /* (A9) WKUP_I2C0_SDA */ |
| >; |
| bootph-all; |
| }; |
| }; |
| |
| &sdhci1 { |
| /* SD/MMC */ |
| vmmc-supply = <&vdd_mmc1>; |
| vqmmc-supply = <&vdd_sd_dv>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_mmc1_pins_default>; |
| disable-wp; |
| cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>; |
| cd-debounce-delay-ms = <100>; |
| bootph-all; |
| ti,fails-without-test-cd; |
| status = "okay"; |
| }; |
| |
| &usbss0 { |
| bootph-all; |
| ti,vbus-divider; |
| status = "okay"; |
| }; |
| |
| &usb0 { |
| /* This is a Type-C socket, but wired as USB 2.0 */ |
| dr_mode = "peripheral"; |
| bootph-all; |
| }; |
| |
| &usbss1 { |
| ti,vbus-divider; |
| status = "okay"; |
| }; |
| |
| &usb1 { |
| /* |
| * Default set here is compatible with original PocketBeagle, |
| * Expansion boards assumed this was pre-setup as host. |
| */ |
| dr_mode = "host"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&usb1_pins_default>; |
| }; |
| |
| &wkup_uart0 { |
| /* WKUP UART0 is used by Device Manager firmware */ |
| pinctrl-names = "default"; |
| pinctrl-0 = <&wkup_uart0_pins_default>; |
| bootph-all; |
| status = "reserved"; |
| }; |
| |
| &wkup_i2c0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&wkup_i2c0_pins_default>; |
| clock-frequency = <100000>; |
| bootph-all; |
| status = "okay"; |
| |
| tps65219: pmic@30 { |
| compatible = "ti,tps65219"; |
| reg = <0x30>; |
| buck1-supply = <&vsys_5v0>; |
| buck2-supply = <&vsys_5v0>; |
| buck3-supply = <&vsys_5v0>; |
| ldo1-supply = <&vdd_3v3>; |
| ldo2-supply = <&buck2_reg>; |
| ldo3-supply = <&vdd_3v3>; |
| ldo4-supply = <&vdd_3v3>; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pmic_irq_pins_default>; |
| interrupt-parent = <&gic500>; |
| interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>; |
| interrupt-controller; |
| #interrupt-cells = <1>; |
| |
| bootph-all; |
| system-power-controller; |
| ti,power-button; |
| |
| regulators { |
| buck1_reg: buck1 { |
| regulator-name = "VDD_CORE"; |
| regulator-min-microvolt = <850000>; |
| regulator-max-microvolt = <850000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| buck2_reg: buck2 { |
| regulator-name = "VDD_1V8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| buck3_reg: buck3 { |
| regulator-name = "VDD_1V2"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1200000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| ldo1_reg: ldo1 { |
| /* |
| * Regulator is left as is unused, vdd_sd |
| * is controlled via GPIO with bypass config |
| * as per the NVM configuration |
| */ |
| regulator-name = "VDD_SD_3V3"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-allow-bypass; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| ldo2_reg: ldo2 { |
| regulator-name = "VDDA_0V85"; |
| regulator-min-microvolt = <850000>; |
| regulator-max-microvolt = <850000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| ldo3_reg: ldo3 { |
| regulator-name = "VDDA_1V8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| ldo4_reg: ldo4 { |
| regulator-name = "VDD_2V5"; |
| regulator-min-microvolt = <2500000>; |
| regulator-max-microvolt = <2500000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| }; |
| }; |
| }; |
| |
| #include "k3-am62-ti-ipc-firmware.dtsi" |