arm64: dts: ti: Add support for AM642 EVM
authorDave Gerlach <d-gerlach@ti.com>
Fri, 26 Feb 2021 14:42:57 +0000 (08:42 -0600)
committerNishanth Menon <nm@ti.com>
Tue, 9 Mar 2021 14:28:59 +0000 (08:28 -0600)
The AM642 EValuation Module (EVM) is a board that provides access to
various peripherals available on the AM642 SoC, such as PCIe, USB 2.0,
CPSW Ethernet, ADC, and more.

Introduce support for the AM642 EVM to enable mmc boot, including
enabling UART and I2C on the board.

Signed-off-by: Aswath Govindraju <a-govindraju@ti.com>
Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Tested-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Link: https://lore.kernel.org/r/20210226144257.5470-6-d-gerlach@ti.com
arch/arm64/boot/dts/ti/Makefile
arch/arm64/boot/dts/ti/k3-am642-evm.dts [new file with mode: 0644]

index 65506f2..596fc10 100644 (file)
@@ -3,7 +3,7 @@
 # Make file to build device tree binaries for boards based on
 # Texas Instruments Inc processors
 #
-# Copyright (C) 2016-2020 Texas Instruments Incorporated - https://www.ti.com/
+# Copyright (C) 2016-2021 Texas Instruments Incorporated - https://www.ti.com/
 #
 
 dtb-$(CONFIG_ARCH_K3) += k3-am654-base-board.dtb
@@ -11,3 +11,5 @@ dtb-$(CONFIG_ARCH_K3) += k3-am654-base-board.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-j721e-common-proc-board.dtb
 
 dtb-$(CONFIG_ARCH_K3) += k3-j7200-common-proc-board.dtb
+
+dtb-$(CONFIG_ARCH_K3) += k3-am642-evm.dtb
diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
new file mode 100644 (file)
index 0000000..1f17877
--- /dev/null
@@ -0,0 +1,246 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include "k3-am642.dtsi"
+
+/ {
+       compatible =  "ti,am642-evm", "ti,am642";
+       model = "Texas Instruments AM642 EVM";
+
+       chosen {
+               stdout-path = "serial2:115200n8";
+               bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               /* 2G RAM */
+               reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               secure_ddr: optee@9e800000 {
+                       reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
+                       alignment = <0x1000>;
+                       no-map;
+               };
+       };
+
+       evm_12v0: fixedregulator-evm12v0 {
+               /* main DC jack */
+               compatible = "regulator-fixed";
+               regulator-name = "evm_12v0";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vsys_5v0: fixedregulator-vsys5v0 {
+               /* output of LM5140 */
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&evm_12v0>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vsys_3v3: fixedregulator-vsys3v3 {
+               /* output of LM5140 */
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&evm_12v0>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_mmc1: fixed-regulator-sd {
+               /* TPS2051BD */
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_mmc1";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               enable-active-high;
+               vin-supply = <&vsys_3v3>;
+               gpio = <&exp1 6 GPIO_ACTIVE_HIGH>;
+       };
+
+       vddb: fixedregulator-vddb {
+               compatible = "regulator-fixed";
+               regulator-name = "vddb_3v3_display";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vsys_3v3>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       label = "am64-evm:red:heartbeat";
+                       gpios = <&exp1 16 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       function = LED_FUNCTION_HEARTBEAT;
+                       default-state = "off";
+               };
+       };
+};
+
+&main_pmx0 {
+       main_mmc1_pins_default: main-mmc1-pins-default {
+               pinctrl-single,pins = <
+                       AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */
+                       AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */
+                       AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */
+                       AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */
+                       AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */
+                       AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */
+                       AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */
+                       AM64X_IOPAD(0x029c, PIN_INPUT, 0) /* (C20) MMC1_SDWP */
+                       AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* MMC1_CLKLB */
+               >;
+       };
+
+       main_uart0_pins_default: main-uart0-pins-default {
+               pinctrl-single,pins = <
+                       AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
+                       AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
+                       AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
+                       AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
+               >;
+       };
+
+       main_i2c1_pins_default: main-i2c1-pins-default {
+               pinctrl-single,pins = <
+                       AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
+                       AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
+               >;
+       };
+};
+
+&main_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart0_pins_default>;
+};
+
+/* main_uart1 is reserved for firmware usage */
+&main_uart1 {
+       status = "reserved";
+};
+
+&main_uart2 {
+       status = "disabled";
+};
+
+&main_uart3 {
+       status = "disabled";
+};
+
+&main_uart4 {
+       status = "disabled";
+};
+
+&main_uart5 {
+       status = "disabled";
+};
+
+&main_uart6 {
+       status = "disabled";
+};
+
+&mcu_uart0 {
+       status = "disabled";
+};
+
+&mcu_uart1 {
+       status = "disabled";
+};
+
+&main_i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c1_pins_default>;
+       clock-frequency = <400000>;
+
+       exp1: gpio@22 {
+               compatible = "ti,tca6424";
+               reg = <0x22>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-line-names = "GPIO_eMMC_RSTn", "CAN_MUX_SEL",
+                                 "GPIO_CPSW1_RST", "GPIO_RGMII1_RST",
+                                 "GPIO_RGMII2_RST", "GPIO_PCIe_RST_OUT",
+                                 "MMC1_SD_EN", "FSI_FET_SEL",
+                                 "MCAN0_STB_3V3", "MCAN1_STB_3V3",
+                                 "CPSW_FET_SEL", "CPSW_FET2_SEL",
+                                 "PRG1_RGMII2_FET_SEL", "TEST_GPIO2",
+                                 "GPIO_OLED_RESETn", "VPP_LDO_EN",
+                                 "TEST_LED1", "TP92", "TP90", "TP88",
+                                 "TP87", "TP86", "TP89", "TP91";
+       };
+
+       /* osd9616p0899-10 */
+       display@3c {
+               compatible = "solomon,ssd1306fb-i2c";
+               reg = <0x3c>;
+               reset-gpios = <&exp1 14 GPIO_ACTIVE_LOW>;
+               vbat-supply = <&vddb>;
+               solomon,height = <16>;
+               solomon,width = <96>;
+               solomon,com-seq;
+               solomon,com-invdir;
+               solomon,page-offset = <0>;
+               solomon,prechargep1 = <2>;
+               solomon,prechargep2 = <13>;
+       };
+};
+
+&mcu_i2c0 {
+       status = "disabled";
+};
+
+&mcu_i2c1 {
+       status = "disabled";
+};
+
+&mcu_spi0 {
+       status = "disabled";
+};
+
+&mcu_spi1 {
+       status = "disabled";
+};
+
+&sdhci0 {
+       /* emmc */
+       bus-width = <8>;
+       non-removable;
+       ti,driver-strength-ohm = <50>;
+       disable-wp;
+};
+
+&sdhci1 {
+       /* SD/MMC */
+       vmmc-supply = <&vdd_mmc1>;
+       pinctrl-names = "default";
+       bus-width = <4>;
+       pinctrl-0 = <&main_mmc1_pins_default>;
+       ti,driver-strength-ohm = <50>;
+       disable-wp;
+};