// 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 #include #include #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; }; mcu_m4fss_dma_memory_region: m4f-dma-memory@9cb00000 { compatible = "shared-dma-pool"; reg = <0x00 0x9cb00000 0x00 0x100000>; no-map; }; mcu_m4fss_memory_region: m4f-memory@9cc00000 { compatible = "shared-dma-pool"; reg = <0x00 0x9cc00000 0x00 0xe00000>; no-map; }; 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: r5f-dma-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 = ; linux,default-trigger = "heartbeat"; gpios = <&main_gpio0 6 GPIO_ACTIVE_HIGH>; default-state = "on"; bootph-all; }; led-2 { function = LED_FUNCTION_DISK_ACTIVITY; color = ; linux,default-trigger = "mmc1"; gpios = <&main_gpio0 5 GPIO_ACTIVE_HIGH>; default-state = "on"; bootph-all; }; led-3 { function = LED_FUNCTION_INDICATOR; color = ; gpios = <&main_gpio0 4 GPIO_ACTIVE_HIGH>; default-state = "off"; bootph-all; }; led-4 { function = LED_FUNCTION_INDICATOR; color = ; 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>; }; &mailbox0_cluster0 { mbox_m4_0: mbox-m4-0 { ti,mbox-rx = <0 0 0>; ti,mbox-tx = <1 0 0>; }; }; &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_m4fss { mboxes = <&mailbox0_cluster0 &mbox_m4_0>; memory-region = <&mcu_m4fss_dma_memory_region>, <&mcu_m4fss_memory_region>; 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 = ; 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; }; }; }; };