| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * AM62A SK: https://www.ti.com/lit/zip/sprr459 |
| * |
| * Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/ |
| */ |
| |
| /dts-v1/; |
| |
| #include <dt-bindings/leds/common.h> |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/net/ti-dp83867.h> |
| #include "k3-am62a7.dtsi" |
| |
| / { |
| compatible = "ti,am62a7-sk", "ti,am62a7"; |
| model = "Texas Instruments AM62A7 SK"; |
| |
| aliases { |
| serial0 = &wkup_uart0; |
| serial2 = &main_uart0; |
| serial3 = &main_uart1; |
| mmc1 = &sdhci1; |
| }; |
| |
| chosen { |
| stdout-path = "serial2:115200n8"; |
| }; |
| |
| memory@80000000 { |
| device_type = "memory"; |
| /* 4G RAM */ |
| reg = <0x00000000 0x80000000 0x00000000 0x80000000>, |
| <0x00000008 0x80000000 0x00000000 0x80000000>; |
| }; |
| |
| reserved-memory { |
| #address-cells = <2>; |
| #size-cells = <2>; |
| ranges; |
| |
| secure_tfa_ddr: tfa@9e780000 { |
| reg = <0x00 0x9e780000 0x00 0x80000>; |
| alignment = <0x1000>; |
| no-map; |
| }; |
| |
| secure_ddr: optee@9e800000 { |
| reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */ |
| alignment = <0x1000>; |
| no-map; |
| }; |
| |
| wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 { |
| compatible = "shared-dma-pool"; |
| reg = <0x00 0x9c900000 0x00 0x01e00000>; |
| no-map; |
| }; |
| }; |
| |
| vmain_pd: regulator-0 { |
| /* TPS25750 PD CONTROLLER OUTPUT */ |
| compatible = "regulator-fixed"; |
| regulator-name = "vmain_pd"; |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| vcc_5v0: regulator-1 { |
| /* Output of TPS63070 */ |
| compatible = "regulator-fixed"; |
| regulator-name = "vcc_5v0"; |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| vin-supply = <&vmain_pd>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| vcc_3v3_main: regulator-2 { |
| /* output of LM5141-Q1 */ |
| compatible = "regulator-fixed"; |
| regulator-name = "vcc_3v3_main"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| vin-supply = <&vmain_pd>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| vdd_mmc1: regulator-3 { |
| /* TPS22918DBVR */ |
| compatible = "regulator-fixed"; |
| regulator-name = "vdd_mmc1"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-boot-on; |
| enable-active-high; |
| gpio = <&exp1 3 GPIO_ACTIVE_HIGH>; |
| }; |
| |
| vcc_3v3_sys: regulator-4 { |
| /* output of TPS222965DSGT */ |
| compatible = "regulator-fixed"; |
| regulator-name = "vcc_3v3_sys"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| vin-supply = <&vcc_3v3_main>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| leds { |
| compatible = "gpio-leds"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&usr_led_pins_default>; |
| |
| led-0 { |
| label = "am62a-sk:green:heartbeat"; |
| gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>; |
| linux,default-trigger = "heartbeat"; |
| function = LED_FUNCTION_HEARTBEAT; |
| default-state = "off"; |
| }; |
| }; |
| |
| tlv320_mclk: clk-0 { |
| #clock-cells = <0>; |
| compatible = "fixed-clock"; |
| clock-frequency = <12288000>; |
| }; |
| |
| codec_audio: sound { |
| compatible = "simple-audio-card"; |
| simple-audio-card,name = "AM62Ax-SKEVM"; |
| simple-audio-card,widgets = |
| "Headphone", "Headphone Jack", |
| "Line", "Line In", |
| "Microphone", "Microphone Jack"; |
| simple-audio-card,routing = |
| "Headphone Jack", "HPLOUT", |
| "Headphone Jack", "HPROUT", |
| "LINE1L", "Line In", |
| "LINE1R", "Line In", |
| "MIC3R", "Microphone Jack", |
| "Microphone Jack", "Mic Bias"; |
| simple-audio-card,format = "dsp_b"; |
| simple-audio-card,bitclock-master = <&sound_master>; |
| simple-audio-card,frame-master = <&sound_master>; |
| simple-audio-card,bitclock-inversion; |
| |
| simple-audio-card,cpu { |
| sound-dai = <&mcasp1>; |
| }; |
| |
| sound_master: simple-audio-card,codec { |
| sound-dai = <&tlv320aic3106>; |
| clocks = <&tlv320_mclk>; |
| }; |
| }; |
| }; |
| |
| &mcu_pmx0 { |
| wkup_uart0_pins_default: wkup-uart0-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_MCU_IOPAD(0x0024, PIN_INPUT, 0) /* (C9) WKUP_UART0_RXD */ |
| AM62AX_MCU_IOPAD(0x0028, PIN_OUTPUT, 0) /* (E9) WKUP_UART0_TXD */ |
| AM62AX_MCU_IOPAD(0x002c, PIN_INPUT, 0) /* (C10) WKUP_UART0_CTSn */ |
| AM62AX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C8) WKUP_UART0_RTSn */ |
| >; |
| }; |
| }; |
| |
| /* WKUP UART0 is used for DM firmware logs */ |
| &wkup_uart0 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&wkup_uart0_pins_default>; |
| status = "reserved"; |
| }; |
| |
| &main_pmx0 { |
| main_uart0_pins_default: main-uart0-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x1c8, PIN_INPUT, 0) /* (E14) UART0_RXD */ |
| AM62AX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */ |
| >; |
| }; |
| |
| main_uart1_pins_default: main-uart1-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x01e8, PIN_INPUT, 1) /* (C17) I2C1_SCL.UART1_RXD */ |
| AM62AX_IOPAD(0x01ec, PIN_OUTPUT, 1) /* (E17) I2C1_SDA.UART1_TXD */ |
| AM62AX_IOPAD(0x0194, PIN_INPUT, 2) /* (C19) MCASP0_AXR3.UART1_CTSn */ |
| AM62AX_IOPAD(0x0198, PIN_OUTPUT, 2) /* (B19) MCASP0_AXR2.UART1_RTSn */ |
| >; |
| }; |
| |
| main_i2c0_pins_default: main-i2c0-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (B16) I2C0_SCL */ |
| AM62AX_IOPAD(0x1e4, PIN_INPUT_PULLUP, 0) /* (A16) I2C0_SDA */ |
| >; |
| }; |
| |
| main_i2c1_pins_default: main-i2c1-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x1e8, PIN_INPUT_PULLUP, 0) /* (B17) I2C1_SCL */ |
| AM62AX_IOPAD(0x1ec, PIN_INPUT_PULLUP, 0) /* (A17) I2C1_SDA */ |
| >; |
| }; |
| |
| main_i2c2_pins_default: main-i2c2-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x0b0, PIN_INPUT_PULLUP, 1) /* (K22) GPMC0_CSn2.I2C2_SCL */ |
| AM62AX_IOPAD(0x0b4, PIN_INPUT_PULLUP, 1) /* (K24) GPMC0_CSn3.I2C2_SDA */ |
| >; |
| }; |
| |
| main_mmc1_pins_default: main-mmc1-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x23c, PIN_INPUT, 0) /* (A21) MMC1_CMD */ |
| AM62AX_IOPAD(0x234, PIN_INPUT, 0) /* (B22) MMC1_CLK */ |
| AM62AX_IOPAD(0x230, PIN_INPUT, 0) /* (A22) MMC1_DAT0 */ |
| AM62AX_IOPAD(0x22c, PIN_INPUT, 0) /* (B21) MMC1_DAT1 */ |
| AM62AX_IOPAD(0x228, PIN_INPUT, 0) /* (C21) MMC1_DAT2 */ |
| AM62AX_IOPAD(0x224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */ |
| AM62AX_IOPAD(0x240, PIN_INPUT, 0) /* (D17) MMC1_SDCD */ |
| >; |
| }; |
| |
| usr_led_pins_default: usr-led-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x244, PIN_OUTPUT, 7) /* (D18) MMC1_SDWP.GPIO1_49 */ |
| >; |
| }; |
| |
| main_usb1_pins_default: main-usb1-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x0258, PIN_OUTPUT, 0) /* (F18) USB1_DRVVBUS */ |
| >; |
| }; |
| |
| main_mdio1_pins_default: main-mdio1-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */ |
| AM62AX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */ |
| >; |
| }; |
| |
| main_rgmii1_pins_default: main-rgmii1-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x14c, PIN_INPUT, 0) /* (AB16) RGMII1_RD0 */ |
| AM62AX_IOPAD(0x150, PIN_INPUT, 0) /* (V15) RGMII1_RD1 */ |
| AM62AX_IOPAD(0x154, PIN_INPUT, 0) /* (W15) RGMII1_RD2 */ |
| AM62AX_IOPAD(0x158, PIN_INPUT, 0) /* (V14) RGMII1_RD3 */ |
| AM62AX_IOPAD(0x148, PIN_INPUT, 0) /* (AA16) RGMII1_RXC */ |
| AM62AX_IOPAD(0x144, PIN_INPUT, 0) /* (AA15) RGMII1_RX_CTL */ |
| AM62AX_IOPAD(0x134, PIN_INPUT, 0) /* (Y17) RGMII1_TD0 */ |
| AM62AX_IOPAD(0x138, PIN_INPUT, 0) /* (V16) RGMII1_TD1 */ |
| AM62AX_IOPAD(0x13c, PIN_INPUT, 0) /* (Y16) RGMII1_TD2 */ |
| AM62AX_IOPAD(0x140, PIN_INPUT, 0) /* (AA17) RGMII1_TD3 */ |
| AM62AX_IOPAD(0x130, PIN_INPUT, 0) /* (AB17) RGMII1_TXC */ |
| AM62AX_IOPAD(0x12c, PIN_INPUT, 0) /* (W16) RGMII1_TX_CTL */ |
| >; |
| }; |
| |
| main_mcasp1_pins_default: main-mcasp1-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_IOPAD(0x090, PIN_INPUT, 2) /* (L19) GPMC0_BE0n_CLE.MCASP1_ACLKX */ |
| AM62AX_IOPAD(0x098, PIN_INPUT, 2) /* (R18) GPMC0_WAIT0.MCASP1_AFSX */ |
| AM62AX_IOPAD(0x08c, PIN_OUTPUT, 2) /* (K19) GPMC0_WEn.MCASP1_AXR0 */ |
| AM62AX_IOPAD(0x084, PIN_INPUT, 2) /* (L18) GPMC0_ADVn_ALE.MCASP1_AXR2 */ |
| >; |
| }; |
| }; |
| |
| &mcu_pmx0 { |
| status = "okay"; |
| |
| pmic_irq_pins_default: pmic-irq-default-pins { |
| pinctrl-single,pins = < |
| AM62AX_MCU_IOPAD(0x000, PIN_INPUT, 7) /* (E11) MCU_GPIO0_0 */ |
| >; |
| }; |
| }; |
| |
| &mcu_gpio0 { |
| status = "okay"; |
| }; |
| |
| &main_i2c0 { |
| status = "okay"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_i2c0_pins_default>; |
| clock-frequency = <400000>; |
| |
| typec_pd0: usb-power-controller@3f { |
| compatible = "ti,tps6598x"; |
| reg = <0x3f>; |
| |
| connector { |
| compatible = "usb-c-connector"; |
| label = "USB-C"; |
| self-powered; |
| data-role = "dual"; |
| power-role = "sink"; |
| port { |
| usb_con_hs: endpoint { |
| remote-endpoint = <&usb0_hs_ep>; |
| }; |
| }; |
| }; |
| }; |
| |
| tps659312: pmic@48 { |
| compatible = "ti,tps6593-q1"; |
| reg = <0x48>; |
| ti,primary-pmic; |
| system-power-controller; |
| |
| gpio-controller; |
| #gpio-cells = <2>; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&pmic_irq_pins_default>; |
| interrupt-parent = <&mcu_gpio0>; |
| interrupts = <0 IRQ_TYPE_EDGE_FALLING>; |
| |
| buck123-supply = <&vcc_3v3_sys>; |
| buck4-supply = <&vcc_3v3_sys>; |
| buck5-supply = <&vcc_3v3_sys>; |
| ldo1-supply = <&vcc_3v3_sys>; |
| ldo2-supply = <&vcc_3v3_sys>; |
| ldo3-supply = <&buck5>; |
| ldo4-supply = <&vcc_3v3_sys>; |
| |
| regulators { |
| buck123: buck123 { |
| regulator-name = "vcc_core"; |
| regulator-min-microvolt = <715000>; |
| regulator-max-microvolt = <895000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| buck4: buck4 { |
| regulator-name = "vcc_1v1"; |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| buck5: buck5 { |
| regulator-name = "vcc_1v8_sys"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| ldo1: ldo1 { |
| regulator-name = "vddshv5_sdio"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| ldo2: ldo2 { |
| regulator-name = "vpp_1v8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| ldo3: ldo3 { |
| regulator-name = "vcc_0v85"; |
| regulator-min-microvolt = <850000>; |
| regulator-max-microvolt = <850000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| |
| ldo4: ldo4 { |
| regulator-name = "vdda_1v8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| }; |
| }; |
| }; |
| |
| &main_i2c1 { |
| status = "okay"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_i2c1_pins_default>; |
| clock-frequency = <100000>; |
| |
| exp1: gpio@22 { |
| compatible = "ti,tca6424"; |
| reg = <0x22>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| |
| gpio-line-names = "GPIO_CPSW2_RST", "GPIO_CPSW1_RST", |
| "BT_EN_SOC", "MMC1_SD_EN", |
| "VPP_EN", "EXP_PS_3V3_En", |
| "EXP_PS_5V0_En", "EXP_HAT_DETECT", |
| "GPIO_AUD_RSTn", "GPIO_eMMC_RSTn", |
| "UART1_FET_BUF_EN", "BT_UART_WAKE_SOC", |
| "GPIO_HDMI_RSTn", "CSI_GPIO0", |
| "CSI_GPIO1", "WLAN_ALERTn", |
| "HDMI_INTn", "TEST_GPIO2", |
| "MCASP1_FET_EN", "MCASP1_BUF_BT_EN", |
| "MCASP1_FET_SEL", "UART1_FET_SEL", |
| "PD_I2C_IRQ", "IO_EXP_TEST_LED"; |
| }; |
| |
| tlv320aic3106: audio-codec@1b { |
| #sound-dai-cells = <0>; |
| compatible = "ti,tlv320aic3106"; |
| reg = <0x1b>; |
| ai3x-micbias-vg = <1>; /* 2.0V */ |
| |
| /* Regulators */ |
| AVDD-supply = <&vcc_3v3_sys>; |
| IOVDD-supply = <&vcc_3v3_sys>; |
| DRVDD-supply = <&vcc_3v3_sys>; |
| DVDD-supply = <&buck5>; |
| }; |
| }; |
| |
| &sdhci1 { |
| /* SD/MMC */ |
| status = "okay"; |
| vmmc-supply = <&vdd_mmc1>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_mmc1_pins_default>; |
| ti,driver-strength-ohm = <50>; |
| disable-wp; |
| }; |
| |
| &main_gpio0 { |
| status = "okay"; |
| }; |
| |
| &main_gpio1 { |
| status = "okay"; |
| }; |
| |
| &main_gpio_intr { |
| status = "okay"; |
| }; |
| |
| &main_uart0 { |
| status = "okay"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_uart0_pins_default>; |
| }; |
| |
| /* Main UART1 is used for TIFS firmware logs */ |
| &main_uart1 { |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_uart1_pins_default>; |
| status = "reserved"; |
| }; |
| |
| &usbss0 { |
| status = "okay"; |
| ti,vbus-divider; |
| }; |
| |
| &usb0 { |
| usb-role-switch; |
| |
| port { |
| usb0_hs_ep: endpoint { |
| remote-endpoint = <&usb_con_hs>; |
| }; |
| }; |
| }; |
| |
| &usbss1 { |
| status = "okay"; |
| }; |
| |
| &usb1 { |
| dr_mode = "host"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_usb1_pins_default>; |
| }; |
| |
| &cpsw3g { |
| status = "okay"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_rgmii1_pins_default>; |
| }; |
| |
| &cpsw_port1 { |
| status = "okay"; |
| phy-mode = "rgmii-rxid"; |
| phy-handle = <&cpsw3g_phy0>; |
| }; |
| |
| &cpsw_port2 { |
| status = "disabled"; |
| }; |
| |
| &cpsw3g_mdio { |
| status = "okay"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_mdio1_pins_default>; |
| |
| cpsw3g_phy0: ethernet-phy@0 { |
| reg = <0>; |
| ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; |
| ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; |
| ti,min-output-impedance; |
| }; |
| }; |
| |
| &mcasp1 { |
| status = "okay"; |
| #sound-dai-cells = <0>; |
| |
| pinctrl-names = "default"; |
| pinctrl-0 = <&main_mcasp1_pins_default>; |
| |
| op-mode = <0>; /* MCASP_IIS_MODE */ |
| tdm-slots = <2>; |
| |
| serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */ |
| 1 0 2 0 |
| 0 0 0 0 |
| 0 0 0 0 |
| 0 0 0 0 |
| >; |
| tx-num-evt = <32>; |
| rx-num-evt = <32>; |
| }; |