Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
436 lines
11 KiB
Devicetree
436 lines
11 KiB
Devicetree
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Common dtsi for Variscite VAR-SOM-AM62P
|
|
*
|
|
* Link: https://www.variscite.com/product/system-on-module-som/cortex-a53-krait/var-som-am62p-ti-sitara-am62px/
|
|
*
|
|
* Copyright (C) 2025 Variscite Ltd. - https://www.variscite.com/
|
|
*
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/input/input.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/leds/common.h>
|
|
#include <dt-bindings/pwm/pwm.h>
|
|
#include "k3-am62p5.dtsi"
|
|
|
|
/ {
|
|
compatible = "variscite,var-som-am62p", "ti,am62p5";
|
|
|
|
wifi_pwrseq: wifi-pwrseq {
|
|
compatible = "mmc-pwrseq-simple";
|
|
post-power-on-delay-ms = <100>;
|
|
power-off-delay-us = <10000>;
|
|
reset-gpios = <&main_gpio0 54 GPIO_ACTIVE_LOW>, /* WIFI_PWR_EN */
|
|
<&main_gpio0 59 GPIO_ACTIVE_LOW>; /* WIFI_EN */
|
|
};
|
|
|
|
mmc_pwrseq: mmc-pwrseq {
|
|
compatible = "mmc-pwrseq-emmc";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_mmc_pwrseq>;
|
|
reset-gpios = <&main_gpio0 49 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
memory@80000000 {
|
|
/* 8G RAM */
|
|
reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
|
|
<0x00000008 0x80000000 0x00000001 0x80000000>;
|
|
device_type = "memory";
|
|
bootph-pre-ram;
|
|
};
|
|
|
|
opp-table {
|
|
/* Add 1.4GHz OPP for am62p5-sk board. Requires VDD_CORE at 0v85 */
|
|
opp-1400000000 {
|
|
opp-hz = /bits/ 64 <1400000000>;
|
|
opp-supported-hw = <0x01 0x0004>;
|
|
clock-latency-ns = <6000000>;
|
|
};
|
|
};
|
|
|
|
reserved_memory: reserved-memory {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
ranges;
|
|
|
|
rtos_ipc_memory_region: rtos-ipc-memory@9b500000 {
|
|
compatible = "shared-dma-pool";
|
|
reg = <0x00 0x9b500000 0x00 0x00300000>;
|
|
no-map;
|
|
};
|
|
|
|
wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
|
|
compatible = "shared-dma-pool";
|
|
reg = <0x00 0x9c800000 0x00 0x00100000>;
|
|
no-map;
|
|
};
|
|
|
|
wkup_r5fss0_core0_memory_region: r5f-memory@9c900000 {
|
|
compatible = "shared-dma-pool";
|
|
reg = <0x00 0x9c900000 0x00 0x01e00000>;
|
|
no-map;
|
|
};
|
|
|
|
secure_tfa_ddr: tfa@9e780000 {
|
|
reg = <0x00 0x9e780000 0x00 0x80000>;
|
|
no-map;
|
|
};
|
|
|
|
secure_ddr: optee@9e800000 {
|
|
reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
|
|
no-map;
|
|
};
|
|
};
|
|
|
|
reg_3v3: regulator-3v3 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "On-module +V3.3";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
reg_1v8: regulator-1v8 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "On-module +V1.8";
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
vin-supply = <®_3v3>;
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
};
|
|
|
|
reg_3v3_phy: regulator-3v3-phy {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "On-module +V3.3_PHY";
|
|
gpios = <&main_gpio0 45 GPIO_ACTIVE_HIGH>;
|
|
enable-active-high;
|
|
regulator-always-on;
|
|
};
|
|
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
simple-audio-card,bitclock-master = <&codec_dai>;
|
|
simple-audio-card,format = "dsp_b";
|
|
simple-audio-card,frame-master = <&codec_dai>;
|
|
simple-audio-card,name = "wm8904-audio";
|
|
simple-audio-card,mclk-fs = <256>;
|
|
simple-audio-card,routing =
|
|
"Headphone Jack", "HPOUTL",
|
|
"Headphone Jack", "HPOUTR",
|
|
"IN2L", "Line In Jack",
|
|
"IN2R", "Line In Jack",
|
|
"IN1L", "Microphone Jack",
|
|
"IN1R", "Microphone Jack";
|
|
simple-audio-card,widgets =
|
|
"Microphone", "Microphone Jack",
|
|
"Headphone", "Headphone Jack",
|
|
"Line", "Line In Jack";
|
|
|
|
codec_dai: simple-audio-card,codec {
|
|
sound-dai = <&wm8904>;
|
|
};
|
|
|
|
simple-audio-card,cpu {
|
|
sound-dai = <&mcasp1>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&audio_refclk1 {
|
|
assigned-clock-rates = <100000000>;
|
|
};
|
|
|
|
&cpsw3g {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_rgmii1>;
|
|
};
|
|
|
|
&cpsw3g_mdio {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_mdio1>;
|
|
status = "okay";
|
|
|
|
cpsw3g_phy0: ethernet-phy@4 {
|
|
compatible = "ethernet-phy-id0283.bc30";
|
|
reg = <4>;
|
|
reset-gpios = <&main_gpio0 46 GPIO_ACTIVE_LOW>;
|
|
reset-assert-us = <10000>;
|
|
reset-deassert-us = <100000>;
|
|
};
|
|
};
|
|
|
|
&cpsw_port1 {
|
|
/*
|
|
* The required RGMII TX and RX 2ns delays are implemented directly
|
|
* in hardware via passive delay elements on the SOM PCB.
|
|
* No delay configuration is needed in software via PHY driver.
|
|
*/
|
|
phy-mode = "rgmii";
|
|
phy-handle = <&cpsw3g_phy0>;
|
|
status = "okay";
|
|
};
|
|
|
|
&main_i2c2 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_i2c2>;
|
|
clock-frequency = <400000>;
|
|
status = "okay";
|
|
|
|
wm8904: audio-codec@1a {
|
|
compatible = "wlf,wm8904";
|
|
reg = <0x1a>;
|
|
#sound-dai-cells = <0>;
|
|
clocks = <&audio_refclk1>;
|
|
clock-names = "mclk";
|
|
AVDD-supply = <®_1v8>;
|
|
CPVDD-supply = <®_1v8>;
|
|
DBVDD-supply = <®_3v3>;
|
|
DCVDD-supply = <®_1v8>;
|
|
MICVDD-supply = <®_1v8>;
|
|
};
|
|
};
|
|
|
|
&main_i2c3 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_i2c3>;
|
|
clock-frequency = <400000>;
|
|
status = "okay";
|
|
};
|
|
|
|
&main_pmx0 {
|
|
pinctrl_mmc_pwrseq: main-emmc-pwrseq-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x00c8, PIN_OUTPUT, 7) /* (AB23) VOUT0_DATA4.GPIO0_49 */
|
|
>;
|
|
};
|
|
|
|
pinctrl_i2c2: main-i2c2-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (T22) GPMC0_CSn2.I2C2_SCL */
|
|
AM62PX_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (U25) GPMC0_CSn3.I2C2_SDA */
|
|
>;
|
|
};
|
|
|
|
pinctrl_i2c3: main-i2c3-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x01d0, PIN_INPUT_PULLUP, 2) /* (A23) UART0_CTSn.I2C3_SCL */
|
|
AM62PX_IOPAD(0x01d4, PIN_INPUT_PULLUP, 2) /* (C22) UART0_RTSn.I2C3_SDA */
|
|
>;
|
|
};
|
|
|
|
pinctrl_mcasp1: main-mcasp1-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x0090, PIN_INPUT, 2) /* (U24) GPMC0_BE0n_CLE.MCASP1_ACLKX */
|
|
AM62PX_IOPAD(0x0098, PIN_INPUT, 2) /* (AA24) GPMC0_WAIT0.MCASP1_AFSX */
|
|
AM62PX_IOPAD(0x008c, PIN_OUTPUT, 2) /* (T25) GPMC0_WEn.MCASP1_AXR0 */
|
|
AM62PX_IOPAD(0x0084, PIN_INPUT, 2) /* (R25) GPMC0_ADVn_ALE.MCASP1_AXR2 */
|
|
AM62PX_IOPAD(0x00a0, PIN_OUTPUT, 1) /* (P24) GPMC0_WPn.AUDIO_EXT_REFCLK1 */
|
|
>;
|
|
};
|
|
|
|
pinctrl_mdio1: main-mdio1-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x0160, PIN_OUTPUT, 0) /* (F17) MDIO0_MDC */
|
|
AM62PX_IOPAD(0x015c, PIN_INPUT, 0) /* (F16) MDIO0_MDIO */
|
|
>;
|
|
};
|
|
|
|
pinctrl_mmc2: main-mmc2-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x0120, PIN_INPUT_PULLUP, 0) /* (K24) MMC2_CMD */
|
|
AM62PX_IOPAD(0x0118, PIN_INPUT_PULLDOWN, 0) /* (K21) MMC2_CLK */
|
|
AM62PX_IOPAD(0x011c, PIN_INPUT_PULLUP, 0) /* () MMC2_CLKLB */
|
|
AM62PX_IOPAD(0x0114, PIN_INPUT_PULLUP, 0) /* (K23) MMC2_DAT0 */
|
|
AM62PX_IOPAD(0x0110, PIN_INPUT_PULLUP, 0) /* (K22) MMC2_DAT1 */
|
|
AM62PX_IOPAD(0x010c, PIN_INPUT_PULLUP, 0) /* (L20) MMC2_DAT2 */
|
|
AM62PX_IOPAD(0x0108, PIN_INPUT_PULLUP, 0) /* (L21) MMC2_DAT3 */
|
|
>;
|
|
};
|
|
|
|
pinctrl_rgmii1: main-rgmii1-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x014c, PIN_INPUT, 0) /* (B15) RGMII1_RD0 */
|
|
AM62PX_IOPAD(0x0150, PIN_INPUT, 0) /* (B16) RGMII1_RD1 */
|
|
AM62PX_IOPAD(0x0154, PIN_INPUT, 0) /* (A14) RGMII1_RD2 */
|
|
AM62PX_IOPAD(0x0158, PIN_INPUT, 0) /* (B14) RGMII1_RD3 */
|
|
AM62PX_IOPAD(0x0148, PIN_INPUT, 0) /* (A16) RGMII1_RXC */
|
|
AM62PX_IOPAD(0x0144, PIN_INPUT, 0) /* (A15) RGMII1_RX_CTL */
|
|
AM62PX_IOPAD(0x0134, PIN_INPUT, 0) /* (A18) RGMII1_TD0 */
|
|
AM62PX_IOPAD(0x0138, PIN_INPUT, 0) /* (C17) RGMII1_TD1 */
|
|
AM62PX_IOPAD(0x013c, PIN_INPUT, 0) /* (A17) RGMII1_TD2 */
|
|
AM62PX_IOPAD(0x0140, PIN_INPUT, 0) /* (C16) RGMII1_TD3 */
|
|
AM62PX_IOPAD(0x0130, PIN_INPUT, 0) /* (B17) RGMII1_TXC */
|
|
AM62PX_IOPAD(0x012c, PIN_INPUT, 0) /* (B18) RGMII1_TX_CTL */
|
|
>;
|
|
bootph-all;
|
|
};
|
|
|
|
pinctrl_spi0: main-spi0-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x01bc, PIN_OUTPUT, 0) /* (B21) SPI0_CLK */
|
|
AM62PX_IOPAD(0x01b4, PIN_OUTPUT, 0) /* (D20) SPI0_CS0 */
|
|
AM62PX_IOPAD(0x01c0, PIN_OUTPUT, 0) /* (B20) SPI0_D0 */
|
|
AM62PX_IOPAD(0x01c4, PIN_INPUT, 0) /* (C21) SPI0_D1 */
|
|
>;
|
|
};
|
|
|
|
pinctrl_uart5: main-uart5-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x00ec, PIN_INPUT, 4) /* (AC21) VOUT0_DATA13.UART5_CTSn */
|
|
AM62PX_IOPAD(0x00e8, PIN_OUTPUT, 4) /* (AD21) VOUT0_DATA12.UART5_RTSn */
|
|
AM62PX_IOPAD(0x00d0, PIN_INPUT, 4) /* (AC23) VOUT0_DATA6.UART5_RXD */
|
|
AM62PX_IOPAD(0x00d4, PIN_OUTPUT, 4) /* (AE23) VOUT0_DATA7.UART5_TXD */
|
|
>;
|
|
};
|
|
|
|
pinctrl_bt: main-btgrp-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x00f4, PIN_OUTPUT, 7) /* (Y20) VOUT0_DATA15.GPIO0_60 (BT_EN) */
|
|
>;
|
|
};
|
|
|
|
pinctrl_restouch: main-restouch-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x00c4, PIN_INPUT_PULLUP, 7) /* (Y23) VOUT0_DATA3.GPIO0_48 */
|
|
>;
|
|
};
|
|
|
|
pinctrl_wifi: main-wifi-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_IOPAD(0x00dc, PIN_OUTPUT, 7) /* (AC22) VOUT0_DATA9.GPIO0_54 - WIFI_PWR_EN - */
|
|
AM62PX_IOPAD(0x00f0, PIN_OUTPUT, 7) /* (AA20) VOUT0_DATA14.GPIO0_59 - WIFI_EN - */
|
|
>;
|
|
};
|
|
};
|
|
|
|
&mcu_pmx0 {
|
|
pinctrl_wkup_clkout0: wkup-clkout0-default-pins {
|
|
pinctrl-single,pins = <
|
|
AM62PX_MCU_IOPAD(0x0084, PIN_OUTPUT, 0) /* (F13) WKUP_CLKOUT0 */
|
|
>;
|
|
};
|
|
};
|
|
|
|
&main_spi0 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_spi0>;
|
|
ti,pindir-d0-out-d1-in;
|
|
status = "okay";
|
|
|
|
/* Resistive touch controller */
|
|
ads7846: touchscreen@0 {
|
|
compatible = "ti,ads7846";
|
|
reg = <0>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_restouch>;
|
|
interrupt-parent = <&main_gpio0>;
|
|
interrupts = <48 IRQ_TYPE_EDGE_FALLING>;
|
|
spi-max-frequency = <1500000>;
|
|
pendown-gpio = <&main_gpio0 48 GPIO_ACTIVE_LOW>;
|
|
ti,x-min = /bits/ 16 <125>;
|
|
ti,x-max = /bits/ 16 <4008>;
|
|
ti,y-min = /bits/ 16 <282>;
|
|
ti,y-max = /bits/ 16 <3864>;
|
|
ti,x-plate-ohms = /bits/ 16 <180>;
|
|
ti,pressure-max = /bits/ 16 <255>;
|
|
ti,debounce-max = /bits/ 16 <10>;
|
|
ti,debounce-tol = /bits/ 16 <3>;
|
|
ti,debounce-rep = /bits/ 16 <1>;
|
|
ti,settle-delay-usec = /bits/ 16 <150>;
|
|
ti,keep-vref-on;
|
|
wakeup-source;
|
|
};
|
|
};
|
|
|
|
&main_uart5 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_uart5>, <&pinctrl_bt>;
|
|
uart-has-rtscts;
|
|
status = "okay";
|
|
|
|
bluetooth {
|
|
compatible = "nxp,88w8987-bt";
|
|
};
|
|
};
|
|
|
|
&mcasp1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_mcasp1>;
|
|
op-mode = <0>; /* MCASP_IIS_MODE */
|
|
serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
|
|
1 0 2 0
|
|
0 0 0 0
|
|
0 0 0 0
|
|
0 0 0 0
|
|
>;
|
|
tdm-slots = <2>;
|
|
tx-num-evt = <0>;
|
|
rx-num-evt = <0>;
|
|
#sound-dai-cells = <0>;
|
|
status = "okay";
|
|
};
|
|
|
|
&sdhci0 {
|
|
/* On-module eMMC */
|
|
ti,driver-strength-ohm = <50>;
|
|
mmc-pwrseq = <&mmc_pwrseq>;
|
|
bootph-all;
|
|
status = "okay";
|
|
};
|
|
|
|
&sdhci2 {
|
|
/* On-module WiFi */
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_mmc2>, <&pinctrl_wifi>;
|
|
bus-width = <4>;
|
|
non-removable;
|
|
keep-power-in-suspend;
|
|
mmc-pwrseq = <&wifi_pwrseq>;
|
|
ti,fails-without-test-cd;
|
|
status = "okay";
|
|
};
|
|
|
|
&usbss0 {
|
|
ti,vbus-divider;
|
|
};
|
|
|
|
&usbss1 {
|
|
ti,vbus-divider;
|
|
};
|
|
|
|
/* mcu_gpio0 and mcu_gpio_intr are reserved for mcu firmware usage */
|
|
&mcu_gpio0 {
|
|
status = "reserved";
|
|
};
|
|
|
|
&mcu_gpio_intr {
|
|
status = "reserved";
|
|
};
|
|
|
|
&wkup_rtc0 {
|
|
status = "disabled";
|
|
};
|
|
|
|
&wkup_rti0 {
|
|
/* WKUP RTI0 is used by DM firmware */
|
|
status = "reserved";
|
|
};
|
|
|
|
&wkup_uart0 {
|
|
/* WKUP UART0 is used by DM firmware */
|
|
status = "reserved";
|
|
};
|
|
|
|
&main_uart1 {
|
|
/* Main UART1 is used by TIFS firmware */
|
|
status = "reserved";
|
|
};
|
|
|
|
#include "k3-am62p-ti-ipc-firmware.dtsi"
|