mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-01 15:14:52 +00:00

BeagleBoard.org PocketBeagle 2 is an upgraded version of the popular PocketBeagle. It is based on Texas Instruments AM6232 or AM6254 SoC. Its dual or quad A53 cores can provide higher performance than classic PocketBeagle. The new design comes with pre-soldered headers, a 3-pin JST-SH 1.00mm UART debug port, a USB-C port, Texas Instruments MSPM0L1105 Cortex-M0+ MCU for ADC, 512MB RAM, and a LiPo Battery charger. MSPM0L1105 firmware source: https://openbeagle.org/pocketbeagle/mspm0-adc-eeprom * EEPROM 24c32 emulation * ADC ad7291 emulation https://www.beagleboard.org/boards/pocketbeagle-2 https://openbeagle.org/pocketbeagle/pocketbeagle-2 Signed-off-by: Robert Nelson <robertcnelson@gmail.com> Tested-by: Dhruva Gole <d-gole@ti.com> Reviewed-by: Bryan Brattlof <bb@ti.com> Reviewed-by: Dhruva Gole <d-gole@ti.com> Link: https://lore.kernel.org/r/20250415225940.3899486-2-robertcnelson@gmail.com Signed-off-by: Nishanth Menon <nm@ti.com>
522 lines
12 KiB
Plaintext
522 lines
12 KiB
Plaintext
// 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;
|
|
};
|
|
|
|
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 = <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>;
|
|
};
|
|
|
|
&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 = <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;
|
|
};
|
|
};
|
|
};
|
|
};
|