From e056f60bdbf0a043f863a8ed03779288954527f0 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Wed, 9 Jul 2025 17:34:00 +0200 Subject: [PATCH 01/14] arm64: dts: k3-am62x-pfc: rework oftree structure As a preparation for the new pfc400 platform we need to rework the structure of am623-pfc device trees. Signed-off-by: Heinrich Toews --- arch/arm64/boot/dts/ti/Makefile | 2 +- .../boot/dts/ti/k3-am623-pfc-750-8302.dts | 206 ++++++++- .../dts/ti/k3-am623-pfc-750-830x-common.dtsi | 68 +++ ...-ems.dts => k3-am623-pfc-750-830x-ems.dts} | 14 +- .../dts/ti/k3-am623-pfc-750-830x-leds.dtsi | 143 +++++++ ...dtsi => k3-am623-pfc-750-8xxx-common.dtsi} | 403 +----------------- 6 files changed, 420 insertions(+), 416 deletions(-) create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-common.dtsi rename arch/arm64/boot/dts/ti/{k3-am623-pfc-ems.dts => k3-am623-pfc-750-830x-ems.dts} (99%) create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-leds.dtsi rename arch/arm64/boot/dts/ti/{k3-am62x-pfc.dtsi => k3-am623-pfc-750-8xxx-common.dtsi} (61%) diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile index afa6d5ca712d..ba6fc7db7ff0 100644 --- a/arch/arm64/boot/dts/ti/Makefile +++ b/arch/arm64/boot/dts/ti/Makefile @@ -24,7 +24,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am62-lp-sk.dtb dtb-$(CONFIG_ARCH_K3) += k3-am625-sk-hdmi-audio.dtb dtb-$(CONFIG_ARCH_K3) += k3-am62-lp-sk-hdmi-audio.dtb dtb-$(CONFIG_ARCH_K3) += k3-am623-pfc-750-8302.dtb -dtb-$(CONFIG_ARCH_K3) += k3-am623-pfc-ems.dtb +dtb-$(CONFIG_ARCH_K3) += k3-am623-pfc-750-830x-ems.dtb # Boards with AM62Ax SoC dtb-$(CONFIG_ARCH_K3) += k3-am62a7-sk.dtb diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts index 5f1aad80ada0..588f2526c95e 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts @@ -6,7 +6,8 @@ * Copyright (C) 2024 WAGO GmbH & Co. KG - https://www.wago.com/ */ -#include "k3-am62x-pfc.dtsi" +#include "k3-am623-pfc-750-8xxx-common.dtsi" +#include "k3-am623-pfc-750-830x-common.dtsi" / { model = "WAGO PFC300 750-8302"; @@ -31,10 +32,145 @@ /delete-node/ cpu@2; /delete-node/ cpu@3; }; + + memory@80000000 { + device_type = "memory"; + /* 2G RAM */ + reg = <0x00000000 0x80000000 0x00000000 0x80000000>; + + }; + + /* this name of the gpio-keys device is a + * historical heritage from 3.6.11 kernel. + * the device-name is checked in omsd. So we + * need to adapt this configuration + */ + oms: PAC-Operating-Mode-Switch { + compatible = "gpio-keys"; + pinctrl-names = "default"; + pinctrl-0 = <&oms_pins_default>; + #address-cells = <1>; + #size-cells = <0>; + autorepeat; + + oms_run: run { + label = "RUN"; + gpios = <&main_gpio0 65 GPIO_ACTIVE_LOW>; + linux,code = <1>; + linux,input-type = <5>; + debounce-interval = <1>; + }; + + oms_stop: stop { + label = "STOP"; + gpios = <&main_gpio1 10 GPIO_ACTIVE_LOW>; + linux,code = <2>; + linux,input-type = <5>; + debounce-interval = <1>; + }; + + oms_reset: reset { + label = "RESET"; + gpios = <&main_gpio1 12 GPIO_ACTIVE_LOW>; + linux,code = <3>; + linux,input-type = <1>; + debounce-interval = <1>; + }; + + oms_reset_all: reset_all { + label = "RESET_ALL"; + gpios = <&main_gpio1 11 GPIO_ACTIVE_HIGH>; + linux,code = <4>; + linux,input-type = <1>; + debounce-interval = <1>; + }; + }; + + uio_nvram: nvram@51000000 { + compatible = "uio_pdrv_genirq"; + linux,uio-name = "UIO_NVRAM"; + reg = <0 0x51000000 0 0x00020000>; /* 128k 16bit NVRAM */ + }; + + vdd_mmc1: regulator-3 { + compatible = "regulator-fixed"; + pinctrl-names = "default"; + pinctrl-0 = <&vdd_sd_dv_pins_default>; + regulator-name = "vdd_mmc1"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + vin-supply = <&vcc_3v3_sys>; + gpio = <&main_gpio0 31 GPIO_ACTIVE_LOW>; + enable-active-high; + startup-delay-us = <5000>; + }; +}; + +&mcu_pmx0 { + main_mdio1_pins_default: main-mdio1-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC */ + AM62X_IOPAD(0x15c, PIN_INPUT_PULLUP, 0) /* (AB22) MDIO0_MDIO */ + AM62X_IOPAD(0x019c, PIN_OUTPUT, 7) /* (B18) MCASP0_AXR1.GPIO1_9 */ + >; + }; + + main_rgmii1_pins_default: main-rgmii1-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x14c, PIN_INPUT, 0) /* (AB17) RGMII1_RD0 */ + AM62X_IOPAD(0x150, PIN_INPUT, 0) /* (AC17) RGMII1_RD1 */ + AM62X_IOPAD(0x154, PIN_INPUT, 0) /* (AB16) RGMII1_RD2 */ + AM62X_IOPAD(0x158, PIN_INPUT, 0) /* (AA15) RGMII1_RD3 */ + AM62X_IOPAD(0x148, PIN_INPUT, 0) /* (AD17) RGMII1_RXC */ + AM62X_IOPAD(0x144, PIN_INPUT, 0) /* (AE17) RGMII1_RX_CTL */ + AM62X_IOPAD(0x134, PIN_OUTPUT, 0) /* (AE20) RGMII1_TD0 */ + AM62X_IOPAD(0x138, PIN_OUTPUT, 0) /* (AD20) RGMII1_TD1 */ + AM62X_IOPAD(0x13c, PIN_OUTPUT, 0) /* (AE18) RGMII1_TD2 */ + AM62X_IOPAD(0x140, PIN_OUTPUT, 0) /* (AD18) RGMII1_TD3 */ + AM62X_IOPAD(0x130, PIN_OUTPUT, 0) /* (AE19) RGMII1_TXC */ + AM62X_IOPAD(0x12c, PIN_OUTPUT, 0) /* (AD19) RGMII1_TX_CTL */ + AM62X_IOPAD(0x0030, PIN_INPUT, 7) /* (G21) OSPI0_CSn1.GPIO0_12 nINT-RGMII1 */ + >; + }; + + main_rgmii2_pins_default: main-rgmii2-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x184, PIN_INPUT, 0) /* (AE23) RGMII2_RD0 */ + AM62X_IOPAD(0x188, PIN_INPUT, 0) /* (AB20) RGMII2_RD1 */ + AM62X_IOPAD(0x18c, PIN_INPUT, 0) /* (AC21) RGMII2_RD2 */ + AM62X_IOPAD(0x190, PIN_INPUT, 0) /* (AE22) RGMII2_RD3 */ + AM62X_IOPAD(0x180, PIN_INPUT, 0) /* (AD23) RGMII2_RXC */ + AM62X_IOPAD(0x17c, PIN_INPUT, 0) /* (AD22) RGMII2_RX_CTL */ + AM62X_IOPAD(0x16c, PIN_OUTPUT, 0) /* (Y18) RGMII2_TD0 */ + AM62X_IOPAD(0x170, PIN_OUTPUT, 0) /* (AA18) RGMII2_TD1 */ + AM62X_IOPAD(0x174, PIN_OUTPUT, 0) /* (AD21) RGMII2_TD2 */ + AM62X_IOPAD(0x178, PIN_OUTPUT, 0) /* (AC20) RGMII2_TD3 */ + AM62X_IOPAD(0x168, PIN_OUTPUT, 0) /* (AE21) RGMII2_TXC */ + AM62X_IOPAD(0x164, PIN_OUTPUT, 0) /* (AA19) RGMII2_TX_CTL */ + AM62X_IOPAD(0x0034, PIN_INPUT, 7) /* (H21) OSPI0_CSn2.GPIO0_13 */ + >; + }; + + vdd_sd_dv_pins_default: vdd-sd-dv-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO0_31 */ + >; + }; + + oms_pins_default: oms-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x0108, PIN_INPUT, 7) /* (D24) MMC2_DAT3.GPIO0_65 */ + AM62X_IOPAD(0x01a0, PIN_INPUT, 7) /* (E18) MCASP0_AXR0.GPIO1_10 */ + AM62X_IOPAD(0x01a8, PIN_INPUT, 7) /* (D20) MCASP0_AFSX.GPIO1_12 */ + AM62X_IOPAD(0x01a4, PIN_INPUT, 7) /* (B20) MCASP0_ACLKX.GPIO1_11 */ + >; + }; }; &wsysinit { status = "okay"; + board,variant = "pfc300"; }; &oms { @@ -51,6 +187,42 @@ &gpmc0 { status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&gpmc_data_pins_default>, <&gpmc_addr_pins_default>, <&gpmc_ctrl_pins_default>; + + num-cs = <4>; + num-waitpins = <4>; + ranges = < + 0 0 0x00 0x51000000 0x01000000 /* CS0: NVRAM, 16M */ + >; + + nvram: nor@0,0 { /* NVRAM Device 128k */ + reg = <0 0 0x01000000>; + bank-width = <2>; /* 1: 8bit, 2: 16bit */ + gpmc,sync-clk-ps = <0>; + gpmc,cs-on-ns = <0>; + gpmc,cs-rd-off-ns = <50>; + gpmc,cs-wr-off-ns = <30>; + gpmc,adv-on-ns = <0>; + gpmc,adv-rd-off-ns = <0>; + gpmc,adv-wr-off-ns = <0>; + gpmc,oe-on-ns = <0>; + gpmc,oe-off-ns = <50>; + gpmc,we-on-ns = <0>; + gpmc,we-off-ns = <30>; + gpmc,rd-cycle-ns = <50>; + gpmc,wr-cycle-ns = <30>; + gpmc,access-ns = <40>; + gpmc,wr-access-ns = <10>; + gpmc,wr-data-mux-bus-ns = <0>; + gpmc,cycle2cycle-delay-ns = <10>; + gpmc,cycle2cycle-samecsen; + gpmc,cycle2cycle-diffcsen; + + #address-cells = <1>; + #size-cells = <1>; + }; }; &main_uart0 { @@ -87,22 +259,54 @@ &sdhci1 { /* SD */ status = "okay"; + + vmmc-supply = <&vdd_mmc1>; + + cap-sd-highspeed; + no-1-8-v; }; &cpsw3g { status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&main_mdio1_pins_default + &main_rgmii1_pins_default + &main_rgmii2_pins_default>; }; &cpsw_port1 { status = "okay"; + phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { status = "okay"; + phy-handle = <&cpsw3g_phy1>; }; &cpsw3g_mdio { status = "okay"; + + reset-gpios = <&main_gpio1 9 GPIO_ACTIVE_LOW>; + reset-delay-us = <10>; + reset-post-delay-us = <10000>; + + cpsw3g_phy0: ethernet-phy@0 { + // ADIN1300 + compatible = "ethernet-phy-id0283.bc30"; + + reg = <0>; + adi,rx-internal-delay-ps = <2000>; + }; + + cpsw3g_phy1: ethernet-phy@1 { + // ADIN1300 + compatible = "ethernet-phy-id0283.bc30"; + + reg = <1>; + adi,rx-internal-delay-ps = <2000>; + }; }; &usbss0 { diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-common.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-common.dtsi new file mode 100644 index 000000000000..3482ac8e6a1f --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-common.dtsi @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: GPL-2.0 + +&main_i2c0 { + + #include "k3-am623-pfc-750-830x-leds.dtsi" + + tps65219_30: pmic@30 { + compatible = "ti,tps65219"; + reg = <0x30>; + system-power-controller; + + buck1-supply = <&vcc_5v0>; + buck2-supply = <&vcc_5v0>; + buck3-supply = <&vcc_5v0>; + ldo1-supply = <&vcc_3v3_sys>; + ldo2-supply = <&vcc_3v3_sys>; + ldo3-supply = <&vcc_5v0>; + ldo4-supply = <&vcc_5v0>; + + pinctrl-names = "default"; + pinctrl-0 = <&pmic_irq_pins_default>; + + interrupt-parent = <&main_gpio0>; + interrupts = <68 IRQ_TYPE_EDGE_FALLING>; + + regulators { + buck1_30_reg: buck1 { + regulator-name = "VDD_CORE"; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <850000>; + regulator-boot-on; + regulator-always-on; + }; + + buck2_30_reg: buck2 { + regulator-name = "VCC1V8_SYS"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + buck3_30_reg: buck3 { + regulator-name = "VCC3V3_SYS"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo1_30_reg: ldo1 { + regulator-name = "VCC3V3_SDC"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo2_30_reg: ldo2 { + regulator-name = "VDDA_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + }; + }; +}; + + diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-ems.dts b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-ems.dts similarity index 99% rename from arch/arm64/boot/dts/ti/k3-am623-pfc-ems.dts rename to arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-ems.dts index 81cd601799cc..566326692fba 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-ems.dts +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-ems.dts @@ -6,7 +6,8 @@ * Copyright (C) 2024 WAGO GmbH & Co. KG - https://www.wago.com/ */ -#include "k3-am62x-pfc.dtsi" +#include "k3-am623-pfc-750-8xxx-common.dtsi" +#include "k3-am623-pfc-750-830x-common.dtsi" / { model = "WAGO AM623 PFC EMS"; @@ -460,14 +461,6 @@ status = "okay"; }; -&oms { - status = "disabled"; -}; - -&nvram { - status = "okay"; -}; - &watchdog_ext { status = "okay"; }; @@ -509,9 +502,6 @@ status = "disabled"; }; -/delete-node/ &vdd_mmc1; -/delete-node/ &vdd_sd_dv_pins_default; - &cpsw3g { status = "disabled"; }; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-leds.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-leds.dtsi new file mode 100644 index 000000000000..1ecbfb37ebde --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-830x-leds.dtsi @@ -0,0 +1,143 @@ +// SPDX-License-Identifier: GPL-2.0 + +led_bar60: pca9552@60 { + compatible = "nxp,pca9552"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x60>; + + lb60_0: sys-red@0 { + label = "sys-red"; + reg = <0>; + linux,default-trigger = "timer"; + }; + + lb60_1: sys-green@1 { + label = "sys-green"; + reg = <1>; + linux,default-trigger = "timer"; + }; + + lb60_2: run-red@2 { + label = "run-red"; + reg = <2>; + }; + + lb60_3: run-green@3 { + label = "run-green"; + reg = <3>; + }; + + lb60_4: io-red@4 { + label = "io-red"; + reg = <4>; + }; + + lb60_5: io-green@5 { + label = "io-green"; + reg = <5>; + }; + + lb60_6: ms-red@6 { + label = "ms-red"; + reg = <6>; + }; + + lb60_7: ms-green@7 { + label = "ms-green"; + reg = <7>; + }; + + lb60_8: ns-red@8 { + label = "ns-red"; + reg = <8>; + }; + + lb60_9: ns-green@9 { + label = "ns-green"; + reg = <9>; + }; + + lb60_10: usr_r@10 { + label = "trm-red"; + reg = <10>; + }; + + lb60_11: usr_g@11 { + label = "trm-green"; + reg = <11>; + }; + + lb60_15: sys-over-red@15 { + label = "sys-over-red"; + reg = <15>; + linux,default-trigger = "default-on"; + }; +}; + +led_bar61: pca9552@61 { + compatible = "nxp,pca9552"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x61>; + + lb61_0: u6-red@0 { + label = "u6-red"; + reg = <0>; + }; + + lb61_1: u6-green@1 { + label = "u6-green"; + reg = <1>; + }; + + lb61_2: u5-red@2 { + label = "u5-red"; + reg = <2>; + }; + + lb61_3: u5-green@3 { + label = "u5-green"; + reg = <3>; + }; + + lb61_4: u4-red@4 { + label = "u4-red"; + reg = <4>; + }; + + lb61_5: u4-green@5 { + label = "u4-green"; + reg = <5>; + }; + + lb61_6: u3-red@6 { + label = "u3-red"; + reg = <6>; + }; + + lb61_7: u3-green@7 { + label = "u3-green"; + reg = <7>; + }; + + lb61_8: u2-red@8 { + label = "u2-red"; + reg = <8>; + }; + + lb61_9: u2-green@9 { + label = "u2-green"; + reg = <9>; + }; + + lb61_10: u1-red@10 { + label = "u1-red"; + reg = <10>; + }; + + lb61_11: u1-green@11 { + label = "u1-green"; + reg = <11>; + }; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am62x-pfc.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi similarity index 61% rename from arch/arm64/boot/dts/ti/k3-am62x-pfc.dtsi rename to arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi index a0a54762f32d..69a7ce1f3e29 100644 --- a/arch/arm64/boot/dts/ti/k3-am62x-pfc.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi @@ -66,13 +66,6 @@ stdout-path = "serial2:115200n8"; }; - memory@80000000 { - device_type = "memory"; - /* 2G RAM */ - reg = <0x00000000 0x80000000 0x00000000 0x80000000>; - - }; - reserved-memory { #address-cells = <2>; #size-cells = <2>; @@ -110,53 +103,6 @@ compatible = "wago,sysinit"; tty,rs232-485 = "ttyS0"; - board,variant = "pfc300"; - }; - - /* this name of the gpio-keys device is a - * historical heritage from 3.6.11 kernel. - * the device-name is checked in omsd. So we - * need to adapt this configuration - */ - oms: PAC-Operating-Mode-Switch { - compatible = "gpio-keys"; - pinctrl-names = "default"; - pinctrl-0 = <&oms_pins_default>; - #address-cells = <1>; - #size-cells = <0>; - autorepeat; - - oms_run: run { - label = "RUN"; - gpios = <&main_gpio0 65 GPIO_ACTIVE_LOW>; - linux,code = <1>; - linux,input-type = <5>; - debounce-interval = <1>; - }; - - oms_stop: stop { - label = "STOP"; - gpios = <&main_gpio1 10 GPIO_ACTIVE_LOW>; - linux,code = <2>; - linux,input-type = <5>; - debounce-interval = <1>; - }; - - oms_reset: reset { - label = "RESET"; - gpios = <&main_gpio1 12 GPIO_ACTIVE_LOW>; - linux,code = <3>; - linux,input-type = <1>; - debounce-interval = <1>; - }; - - oms_reset_all: reset_all { - label = "RESET_ALL"; - gpios = <&main_gpio1 11 GPIO_ACTIVE_HIGH>; - linux,code = <4>; - linux,input-type = <1>; - debounce-interval = <1>; - }; }; uio_nvram: nvram@51000000 { @@ -195,20 +141,6 @@ regulator-boot-on; }; - vdd_mmc1: regulator-3 { - compatible = "regulator-fixed"; - pinctrl-names = "default"; - pinctrl-0 = <&vdd_sd_dv_pins_default>; - regulator-name = "vdd_mmc1"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - vin-supply = <&vcc_3v3_sys>; - gpio = <&main_gpio0 31 GPIO_ACTIVE_LOW>; - enable-active-high; - startup-delay-us = <5000>; - }; - watchdog_ext: watchdog { compatible = "linux,wdt-gpio"; pinctrl-names = "default"; @@ -285,56 +217,6 @@ >; }; - main_mdio1_pins_default: main-mdio1-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC */ - AM62X_IOPAD(0x15c, PIN_INPUT_PULLUP, 0) /* (AB22) MDIO0_MDIO */ - AM62X_IOPAD(0x019c, PIN_OUTPUT, 7) /* (B18) MCASP0_AXR1.GPIO1_9 */ - >; - }; - - main_rgmii1_pins_default: main-rgmii1-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x14c, PIN_INPUT, 0) /* (AB17) RGMII1_RD0 */ - AM62X_IOPAD(0x150, PIN_INPUT, 0) /* (AC17) RGMII1_RD1 */ - AM62X_IOPAD(0x154, PIN_INPUT, 0) /* (AB16) RGMII1_RD2 */ - AM62X_IOPAD(0x158, PIN_INPUT, 0) /* (AA15) RGMII1_RD3 */ - AM62X_IOPAD(0x148, PIN_INPUT, 0) /* (AD17) RGMII1_RXC */ - AM62X_IOPAD(0x144, PIN_INPUT, 0) /* (AE17) RGMII1_RX_CTL */ - AM62X_IOPAD(0x134, PIN_OUTPUT, 0) /* (AE20) RGMII1_TD0 */ - AM62X_IOPAD(0x138, PIN_OUTPUT, 0) /* (AD20) RGMII1_TD1 */ - AM62X_IOPAD(0x13c, PIN_OUTPUT, 0) /* (AE18) RGMII1_TD2 */ - AM62X_IOPAD(0x140, PIN_OUTPUT, 0) /* (AD18) RGMII1_TD3 */ - AM62X_IOPAD(0x130, PIN_OUTPUT, 0) /* (AE19) RGMII1_TXC */ - AM62X_IOPAD(0x12c, PIN_OUTPUT, 0) /* (AD19) RGMII1_TX_CTL */ - AM62X_IOPAD(0x0030, PIN_INPUT, 7) /* (G21) OSPI0_CSn1.GPIO0_12 */ - >; - }; - - main_rgmii2_pins_default: main-rgmii2-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x184, PIN_INPUT, 0) /* (AE23) RGMII2_RD0 */ - AM62X_IOPAD(0x188, PIN_INPUT, 0) /* (AB20) RGMII2_RD1 */ - AM62X_IOPAD(0x18c, PIN_INPUT, 0) /* (AC21) RGMII2_RD2 */ - AM62X_IOPAD(0x190, PIN_INPUT, 0) /* (AE22) RGMII2_RD3 */ - AM62X_IOPAD(0x180, PIN_INPUT, 0) /* (AD23) RGMII2_RXC */ - AM62X_IOPAD(0x17c, PIN_INPUT, 0) /* (AD22) RGMII2_RX_CTL */ - AM62X_IOPAD(0x16c, PIN_OUTPUT, 0) /* (Y18) RGMII2_TD0 */ - AM62X_IOPAD(0x170, PIN_OUTPUT, 0) /* (AA18) RGMII2_TD1 */ - AM62X_IOPAD(0x174, PIN_OUTPUT, 0) /* (AD21) RGMII2_TD2 */ - AM62X_IOPAD(0x178, PIN_OUTPUT, 0) /* (AC20) RGMII2_TD3 */ - AM62X_IOPAD(0x168, PIN_OUTPUT, 0) /* (AE21) RGMII2_TXC */ - AM62X_IOPAD(0x164, PIN_OUTPUT, 0) /* (AA19) RGMII2_TX_CTL */ - AM62X_IOPAD(0x0034, PIN_INPUT, 7) /* (H21) OSPI0_CSn2.GPIO0_13 */ - >; - }; - - vdd_sd_dv_pins_default: vdd-sd-dv-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO0_31 */ - >; - }; - gpmc_data_pins_default: gpmc-data-default-pins { pinctrl-single,pins = < AM62X_IOPAD(0x00bc, PIN_OUTPUT, 1) /* (V24) VOUT0_DATA1.GPMC0_A1 */ @@ -387,15 +269,6 @@ >; }; - oms_pins_default: oms-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x0108, PIN_INPUT, 7) /* (D24) MMC2_DAT3.GPIO0_65 */ - AM62X_IOPAD(0x01a0, PIN_INPUT, 7) /* (E18) MCASP0_AXR0.GPIO1_10 */ - AM62X_IOPAD(0x01a8, PIN_INPUT, 7) /* (D20) MCASP0_AFSX.GPIO1_12 */ - AM62X_IOPAD(0x01a4, PIN_INPUT, 7) /* (B20) MCASP0_ACLKX.GPIO1_11 */ - >; - }; - main_spi0_pins_default: main-spi0-default-pins { pinctrl-single,pins = < AM62X_IOPAD(0x01bc, PIN_OUTPUT, 0) /* (A14) SPI0_CLK */ @@ -446,44 +319,6 @@ }; }; -&gpmc0 { - pinctrl-names = "default"; - pinctrl-0 = <&gpmc_data_pins_default>, <&gpmc_addr_pins_default>, <&gpmc_ctrl_pins_default>; - - num-cs = <4>; - num-waitpins = <4>; - ranges = < - 0 0 0x00 0x51000000 0x01000000 /* CS0: NVRAM, 16M */ - >; - - nvram: nor@0,0 { /* NVRAM Device 128k */ - reg = <0 0 0x01000000>; - bank-width = <2>; /* 1: 8bit, 2: 16bit */ - gpmc,sync-clk-ps = <0>; - gpmc,cs-on-ns = <0>; - gpmc,cs-rd-off-ns = <50>; - gpmc,cs-wr-off-ns = <30>; - gpmc,adv-on-ns = <0>; - gpmc,adv-rd-off-ns = <0>; - gpmc,adv-wr-off-ns = <0>; - gpmc,oe-on-ns = <0>; - gpmc,oe-off-ns = <50>; - gpmc,we-on-ns = <0>; - gpmc,we-off-ns = <30>; - gpmc,rd-cycle-ns = <50>; - gpmc,wr-cycle-ns = <30>; - gpmc,access-ns = <40>; - gpmc,wr-access-ns = <10>; - gpmc,wr-data-mux-bus-ns = <0>; - gpmc,cycle2cycle-delay-ns = <10>; - gpmc,cycle2cycle-samecsen; - gpmc,cycle2cycle-diffcsen; - - #address-cells = <1>; - #size-cells = <1>; - }; -}; - &main_uart0 { pinctrl-names = "default"; pinctrl-0 = <&main_uart0_pins_default>; @@ -514,208 +349,6 @@ reg = <0x54>; pagesize = <128>; }; - - led_bar60: pca9552@60 { - compatible = "nxp,pca9552"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x60>; - - lb60_0: sys-red@0 { - label = "sys-red"; - reg = <0>; - linux,default-trigger = "timer"; - }; - - lb60_1: sys-green@1 { - label = "sys-green"; - reg = <1>; - linux,default-trigger = "timer"; - }; - - lb60_2: run-red@2 { - label = "run-red"; - reg = <2>; - }; - - lb60_3: run-green@3 { - label = "run-green"; - reg = <3>; - }; - - lb60_4: io-red@4 { - label = "io-red"; - reg = <4>; - }; - - lb60_5: io-green@5 { - label = "io-green"; - reg = <5>; - }; - - lb60_6: ms-red@6 { - label = "ms-red"; - reg = <6>; - }; - - lb60_7: ms-green@7 { - label = "ms-green"; - reg = <7>; - }; - - lb60_8: ns-red@8 { - label = "ns-red"; - reg = <8>; - }; - - lb60_9: ns-green@9 { - label = "ns-green"; - reg = <9>; - }; - - lb60_10: usr_r@10 { - label = "trm-red"; - reg = <10>; - }; - - lb60_11: usr_g@11 { - label = "trm-green"; - reg = <11>; - }; - - lb60_15: sys-over-red@15 { - label = "sys-over-red"; - reg = <15>; - linux,default-trigger = "default-on"; - }; - }; - - led_bar61: pca9552@61 { - compatible = "nxp,pca9552"; - #address-cells = <1>; - #size-cells = <0>; - reg = <0x61>; - - lb61_0: u6-red@0 { - label = "u6-red"; - reg = <0>; - }; - - lb61_1: u6-green@1 { - label = "u6-green"; - reg = <1>; - }; - - lb61_2: u5-red@2 { - label = "u5-red"; - reg = <2>; - }; - - lb61_3: u5-green@3 { - label = "u5-green"; - reg = <3>; - }; - - lb61_4: u4-red@4 { - label = "u4-red"; - reg = <4>; - }; - - lb61_5: u4-green@5 { - label = "u4-green"; - reg = <5>; - }; - - lb61_6: u3-red@6 { - label = "u3-red"; - reg = <6>; - }; - - lb61_7: u3-green@7 { - label = "u3-green"; - reg = <7>; - }; - - lb61_8: u2-red@8 { - label = "u2-red"; - reg = <8>; - }; - - lb61_9: u2-green@9 { - label = "u2-green"; - reg = <9>; - }; - - lb61_10: u1-red@10 { - label = "u1-red"; - reg = <10>; - }; - - lb61_11: u1-green@11 { - label = "u1-green"; - reg = <11>; - }; - }; - - tps65219_30: pmic@30 { - compatible = "ti,tps65219"; - reg = <0x30>; - system-power-controller; - - buck1-supply = <&vcc_5v0>; - buck2-supply = <&vcc_5v0>; - buck3-supply = <&vcc_5v0>; - ldo1-supply = <&vcc_3v3_sys>; - ldo2-supply = <&vcc_3v3_sys>; - ldo3-supply = <&vcc_5v0>; - ldo4-supply = <&vcc_5v0>; - - pinctrl-names = "default"; - pinctrl-0 = <&pmic_irq_pins_default>; - - interrupt-parent = <&main_gpio0>; - interrupts = <68 IRQ_TYPE_EDGE_FALLING>; - - regulators { - buck1_30_reg: buck1 { - regulator-name = "VDD_CORE"; - regulator-min-microvolt = <750000>; - regulator-max-microvolt = <850000>; - regulator-boot-on; - regulator-always-on; - }; - - buck2_30_reg: buck2 { - regulator-name = "VCC1V8_SYS"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-boot-on; - regulator-always-on; - }; - - buck3_30_reg: buck3 { - regulator-name = "VCC3V3_SYS"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - regulator-always-on; - }; - - ldo1_30_reg: ldo1 { - regulator-name = "VCC3V3_SDC"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - }; - - ldo2_30_reg: ldo2 { - regulator-name = "VDDA_1V8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-boot-on; - regulator-always-on; - }; - }; - }; }; &main_spi0 { @@ -831,52 +464,18 @@ }; &sdhci1 { - /* SD */ - vmmc-supply = <&vdd_mmc1>; + /* SD */ pinctrl-names = "default"; pinctrl-0 = <&main_mmc1_pins_default>; ti,driver-strength-ohm = <33>; - cap-sd-highspeed; - no-1-8-v; -}; - -&cpsw3g { - pinctrl-names = "default"; - pinctrl-0 = <&main_mdio1_pins_default - &main_rgmii1_pins_default - &main_rgmii2_pins_default>; }; &cpsw_port1 { phy-mode = "rgmii-rxid"; - phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { phy-mode = "rgmii-rxid"; - phy-handle = <&cpsw3g_phy1>; -}; - -&cpsw3g_mdio { - reset-gpios = <&main_gpio1 9 GPIO_ACTIVE_LOW>; - reset-delay-us = <10>; - reset-post-delay-us = <10000>; - - cpsw3g_phy0: ethernet-phy@0 { - // ADIN1300 - compatible = "ethernet-phy-id0283.bc30"; - - reg = <0>; - adi,rx-internal-delay-ps = <2000>; - }; - - cpsw3g_phy1: ethernet-phy@1 { - // ADIN1300 - compatible = "ethernet-phy-id0283.bc30"; - - reg = <1>; - adi,rx-internal-delay-ps = <2000>; - }; }; &mailbox0_cluster0 { From 50b3642e6d6c2e7bbe2587f535ca9fa71e44ced5 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Wed, 9 Jul 2025 17:34:35 +0200 Subject: [PATCH 02/14] arm64: dts: k3-am62x-pfc: introduce the pfc400 platform NOTICE - TPS configuration relies on a due NVM/u-boot preperation - Micrel-Switch for now is only setup in 'switched-mode' - SDHC HS SDR104 support was heavely tested and seems to work fine - USB-Host needs a due DEFCONFIG configuration TODO - Micrel DSA seperated mode configuration - OneWire - MRAM QSPI Setup & Test - tpm, etc. Signed-off-by: Heinrich Toews --- arch/arm64/boot/dts/ti/Makefile | 1 + .../boot/dts/ti/k3-am623-pfc-750-8302.dts | 63 ++++ .../boot/dts/ti/k3-am623-pfc-750-8400.dts | 17 + .../ti/k3-am623-pfc-750-84xx-baseboard.dtsi | 89 +++++ .../ti/k3-am623-pfc-750-84xx-interaction.dtsi | 128 +++++++ .../dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi | 59 ++++ .../dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi | 326 ++++++++++++++++++ .../dts/ti/k3-am623-pfc-750-8xxx-common.dtsi | 185 +--------- arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi | 58 ++++ .../arm64/boot/dts/ti/k3-am623-pfc-rs485.dtsi | 36 ++ arch/arm64/boot/dts/ti/k3-am623-pfc-rtc.dtsi | 21 ++ arch/arm64/boot/dts/ti/k3-am623-pfc-tpm.dtsi | 32 ++ 12 files changed, 846 insertions(+), 169 deletions(-) create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-750-8400.dts create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-rs485.dtsi create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-rtc.dtsi create mode 100644 arch/arm64/boot/dts/ti/k3-am623-pfc-tpm.dtsi diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile index ba6fc7db7ff0..edc03fcf9b8c 100644 --- a/arch/arm64/boot/dts/ti/Makefile +++ b/arch/arm64/boot/dts/ti/Makefile @@ -25,6 +25,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-am625-sk-hdmi-audio.dtb dtb-$(CONFIG_ARCH_K3) += k3-am62-lp-sk-hdmi-audio.dtb dtb-$(CONFIG_ARCH_K3) += k3-am623-pfc-750-8302.dtb dtb-$(CONFIG_ARCH_K3) += k3-am623-pfc-750-830x-ems.dtb +dtb-$(CONFIG_ARCH_K3) += k3-am623-pfc-750-8400.dtb # Boards with AM62Ax SoC dtb-$(CONFIG_ARCH_K3) += k3-am62a7-sk.dtb diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts index 588f2526c95e..d36dbe8f65c6 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts @@ -8,11 +8,20 @@ #include "k3-am623-pfc-750-8xxx-common.dtsi" #include "k3-am623-pfc-750-830x-common.dtsi" +#include "k3-am623-pfc-kbus.dtsi" +#include "k3-am623-pfc-rs485.dtsi" +#include "k3-am623-pfc-tpm.dtsi" +#include "k3-am623-pfc-rtc.dtsi" / { model = "WAGO PFC300 750-8302"; compatible = "ti,am623-pfc", "ti,am625"; + aliases { + ethernet0 = &cpsw_port1; + ethernet1 = &cpsw_port2; + }; + cpus { cpu-map { cluster0 { @@ -108,6 +117,58 @@ }; &mcu_pmx0 { + gpmc_data_pins_default: gpmc-data-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x00bc, PIN_OUTPUT, 1) /* (V24) VOUT0_DATA1.GPMC0_A1 */ + AM62X_IOPAD(0x00c0, PIN_OUTPUT, 1) /* (W25) VOUT0_DATA2.GPMC0_A2 */ + AM62X_IOPAD(0x00c4, PIN_OUTPUT, 1) /* (W24) VOUT0_DATA3.GPMC0_A3 */ + AM62X_IOPAD(0x00c8, PIN_OUTPUT, 1) /* (Y25) VOUT0_DATA4.GPMC0_A4 */ + AM62X_IOPAD(0x00cc, PIN_OUTPUT, 1) /* (Y24) VOUT0_DATA5.GPMC0_A5 */ + AM62X_IOPAD(0x00d0, PIN_OUTPUT, 1) /* (Y23) VOUT0_DATA6.GPMC0_A6 */ + AM62X_IOPAD(0x00d4, PIN_OUTPUT, 1) /* (AA25) VOUT0_DATA7.GPMC0_A7 */ + AM62X_IOPAD(0x00d8, PIN_OUTPUT, 1) /* (V21) VOUT0_DATA8.GPMC0_A8 */ + AM62X_IOPAD(0x00dc, PIN_OUTPUT, 1) /* (W21) VOUT0_DATA9.GPMC0_A9 */ + AM62X_IOPAD(0x00e0, PIN_OUTPUT, 1) /* (V20) VOUT0_DATA10.GPMC0_A10 */ + AM62X_IOPAD(0x00e4, PIN_OUTPUT, 1) /* (AA23) VOUT0_DATA11.GPMC0_A11 */ + AM62X_IOPAD(0x00e8, PIN_OUTPUT, 1) /* (AB25) VOUT0_DATA12.GPMC0_A12 */ + AM62X_IOPAD(0x00ec, PIN_OUTPUT, 1) /* (AA24) VOUT0_DATA13.GPMC0_A13 */ + AM62X_IOPAD(0x00f0, PIN_OUTPUT, 1) /* (Y22) VOUT0_DATA14.GPMC0_A14 */ + AM62X_IOPAD(0x00f4, PIN_OUTPUT, 1) /* (AA21) VOUT0_DATA15.GPMC0_A15 */ + AM62X_IOPAD(0x00f8, PIN_OUTPUT, 1) /* (AB24) VOUT0_HSYNC.GPMC0_A16 */ + >; + }; + + gpmc_addr_pins_default: gpmc-addr-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x003c, PIN_INPUT, 0) /* (M25) GPMC0_AD0 */ + AM62X_IOPAD(0x0040, PIN_INPUT, 0) /* (N23) GPMC0_AD1 */ + AM62X_IOPAD(0x0044, PIN_INPUT, 0) /* (N24) GPMC0_AD2 */ + AM62X_IOPAD(0x0048, PIN_INPUT, 0) /* (N25) GPMC0_AD3 */ + AM62X_IOPAD(0x004c, PIN_INPUT, 0) /* (P24) GPMC0_AD4 */ + AM62X_IOPAD(0x0050, PIN_INPUT, 0) /* (P22) GPMC0_AD5 */ + AM62X_IOPAD(0x0054, PIN_INPUT, 0) /* (P21) GPMC0_AD6 */ + AM62X_IOPAD(0x0058, PIN_INPUT, 0) /* (R23) GPMC0_AD7 */ + AM62X_IOPAD(0x005c, PIN_INPUT, 0) /* (R24) GPMC0_AD8 */ + AM62X_IOPAD(0x0060, PIN_INPUT, 0) /* (R25) GPMC0_AD9 */ + AM62X_IOPAD(0x0064, PIN_INPUT, 0) /* (T25) GPMC0_AD10 */ + AM62X_IOPAD(0x0068, PIN_INPUT, 0) /* (R21) GPMC0_AD11 */ + AM62X_IOPAD(0x006c, PIN_INPUT, 0) /* (T22) GPMC0_AD12 */ + AM62X_IOPAD(0x0070, PIN_INPUT, 0) /* (T24) GPMC0_AD13 */ + AM62X_IOPAD(0x0074, PIN_INPUT, 0) /* (U25) GPMC0_AD14 */ + AM62X_IOPAD(0x0078, PIN_INPUT, 0) /* (U24) GPMC0_AD15 */ + >; + }; + + gpmc_ctrl_pins_default: gpmc-ctrl-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x0094, PIN_OUTPUT, 0) /* (N20) GPMC0_BE1n */ + AM62X_IOPAD(0x00a8, PIN_OUTPUT, 0) /* (M21) GPMC0_CSn0 */ + AM62X_IOPAD(0x0088, PIN_OUTPUT, 0) /* (L24) GPMC0_OEn_REn */ + AM62X_IOPAD(0x008c, PIN_OUTPUT, 0) /* (L25) GPMC0_WEn */ + AM62X_IOPAD(0x0090, PIN_OUTPUT, 0) /* (M24) GPMC0_BE0n_CLE */ + >; + }; + main_mdio1_pins_default: main-mdio1-default-pins { pinctrl-single,pins = < AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC */ @@ -277,11 +338,13 @@ &cpsw_port1 { status = "okay"; + phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { status = "okay"; + phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy1>; }; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8400.dts b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8400.dts new file mode 100644 index 000000000000..102a7c1bced6 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8400.dts @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * PFC400 - AM62x based WAGO device + * + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ + * Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ + */ + +#include "k3-am623-pfc-750-84xx-wosm.dtsi" +#include "k3-am623-pfc-750-84xx-baseboard.dtsi" +#include "k3-am623-pfc-750-84xx-kbus.dtsi" +#include "k3-am623-pfc-750-84xx-interaction.dtsi" + +&wsysinit { + status = "okay"; + board,variant = "pfc400"; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi new file mode 100644 index 000000000000..974dcabaef00 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* PFC400 baseboard dtsi for AM62x based WAGO devices +* +* Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ +* Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ +*/ + +&main_pmx0 { + main_ksz9477_pins: main-ksz9477-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x01a0, PIN_OUTPUT, 7) /* (E18) MCASP0_AXR0.GPIO1_10 nRST-RGMII2 / nRST-ETHSW (BB) */ + AM62X_IOPAD(0x0034, PIN_INPUT, 7) /* (H21) OSPI0_CSn2.GPIO0_13 nINT-RGMII2 / nINT-ETHSW(BB) */ + >; + }; +}; + +&mcu_spi0 { + ksz9477@0 { + compatible = "microchip,ksz9477"; + pinctrl-names = "default"; + pinctrl-0 = <&main_ksz9477_pins>; + reg = <0>; + spi-max-frequency = <1000000>; + + reset-gpios = <&main_gpio1 10 GPIO_ACTIVE_LOW>; + + dsa,member = <0 0>; + + interrupt-parent = <&main_gpio0>; + interrupts = <13 IRQ_TYPE_EDGE_FALLING>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "lan1"; + phy-mode = "internal"; + }; + + port@1 { + reg = <1>; + label = "lan2"; + phy-mode = "internal"; + }; + + port@2 { + reg = <2>; + label = "lan3"; + phy-mode = "internal"; + }; + + port@3 { + reg = <3>; + label = "lan4"; + phy-mode = "internal"; + }; + + port@4 { + reg = <4>; + label = "lan5"; + phy-mode = "internal"; + }; + + port@5 { + reg = <5>; + label = "cpu"; + ethernet = <&cpsw3g>; /* ð0 */ + phy-mode = "rgmii-txid"; + tx-internal-delay-ps = <2000>; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + }; + }; +}; + +&main_i2c1 { + eeprom_hw_id_bb: at24c02@54 { + compatible = "atmel,24c02"; + reg = <0x51>; + pagesize = <16>; + }; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi new file mode 100644 index 000000000000..5f59455995c2 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi @@ -0,0 +1,128 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * PFC400 interaction board dtsi for AM62x based WAGO devices + * + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ + * Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ + */ + +#include "k3-am623-pfc-rs485.dtsi" +#include "k3-am623-pfc-rtc.dtsi" + +&main_i2c1 { + status = "okay"; + + eeprom_hw_id_ib: at24c02@54 { + compatible = "atmel,24c02"; + reg = <0x54>; + pagesize = <16>; + }; + + /* + * NXP PCA9552BS + * 16-Bit I²C-Bus LED Driver + */ + led_bar60: pca9552@60 { + compatible = "nxp,pca9552"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x60>; + + lb60_0: sys-red@0 { + label = "sys-red"; + reg = <0>; + linux,default-trigger = "timer"; + }; + + lb60_1: sys-green@1 { + label = "sys-green"; + reg = <1>; + linux,default-trigger = "timer"; + }; + + lb60_2: sys-blue@2 { + label = "sys-blue"; + reg = <2>; + }; + + lb60_3: run-red@3 { + label = "run-red"; + reg = <3>; + }; + + lb60_4: run-green@4 { + label = "run-green"; + reg = <4>; + }; + + lb60_5: run-blue@5 { + label = "run-blue"; + reg = <5>; + }; + + lb60_6: io-red@6 { + label = "io-red"; + reg = <6>; + }; + + lb60_7: io-green@7 { + label = "io-green"; + reg = <7>; + }; + + lb60_8: io-blue@8 { + label = "io-blue"; + reg = <8>; + }; + + lb60_9: ms-red@9 { + label = "ms-red"; + reg = <9>; + }; + + lb60_10: ms-green@10 { + label = "ms-green"; + reg = <10>; + }; + + lb60_11: ms-blue@11 { + label = "ms-blue"; + reg = <11>; + }; + + lb60_12: usr_r@12 { + label = "trm-red"; + reg = <12>; + }; + + lb60_13: usr_g@13 { + label = "trm-green"; + reg = <13>; + }; + + lb60_14: usr_b@14 { + label = "trm-blue"; + reg = <14>; + }; + + lb60_15: sys-over-red@15 { + label = "sys-over-red"; + reg = <15>; + linux,default-trigger = "default-on"; + }; + }; + + /* + * Dynamic NFC/RFID tag IC with 4-Kbit EEPROM + * + * This driver is not yet upstream but there is a kernel driver available at: + * + * https://github.com/2pecshy/eeprom-ST25DV-linux-driver/tree/master + * + */ + st25dv04k: st25dv04k@53 { + status = "okay"; + compatible = "st25dv,st25dv04k"; + reg = <0x53>; + }; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi new file mode 100644 index 000000000000..eb3c0524a122 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Common dtsi for AM62x WAGO based devices + * + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ + * Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ + */ + +#include "k3-am623-pfc-kbus.dtsi" + +/ { + /* this name of the gpio-keys device is a + * historical heritage from 3.6.11 kernel. + * the device-name is checked in omsd. So we + * need to adapt this configuration + */ + oms: PAC-Operating-Mode-Switch { + status = "okay"; + compatible = "gpio-keys"; + pinctrl-names = "default"; + pinctrl-0 = <&oms_pins_default>; + #address-cells = <1>; + #size-cells = <0>; + autorepeat; + + oms_stop_run: stop_run { + label = "RUN"; + gpios = <&main_gpio0 65 GPIO_ACTIVE_LOW>; + linux,code = <1>; + linux,input-type = <5>; + debounce-interval = <1>; + }; + + oms_reset_all: reset_all { + label = "RESET_ALL"; + gpios = <&main_gpio1 11 GPIO_ACTIVE_HIGH>; + linux,code = <4>; + linux,input-type = <1>; + debounce-interval = <1>; + }; + }; +}; + +&main_pmx0 { + oms_pins_default: oms-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x0108, PIN_INPUT, 7) /* (D24) MMC2_DAT3.GPIO0_65 nSTOP-RUN */ + AM62X_IOPAD(0x01a4, PIN_INPUT, 7) /* (B20) MCASP0_ACLKX.GPIO1_11 IO-RAB */ + >; + }; +}; + +&main_i2c1 { + eeprom_hw_id_kbus: at24c02@50 { + compatible = "atmel,24c02"; + reg = <0x50>; + pagesize = <16>; + }; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi new file mode 100644 index 000000000000..8b9bdb60fcfe --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi @@ -0,0 +1,326 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * PFC400 WOSM dtsi for AM62x based WAGO devices + * + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ + * Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ + */ + +#include "k3-am623-pfc-750-8xxx-common.dtsi" +#include "k3-am623-pfc-tpm.dtsi" + +/ { + model = "WAGO PFC400 750-8400"; + compatible = "ti,am623-pfc", "ti,am625"; + + aliases { + usb1 = &usb1; + ethernet0 = &cpsw_port2; + }; + + cpus { + cpu@0 { + cpu-supply = <&buck1_30_reg>; + }; + + cpu@1 { + cpu-supply = <&buck1_30_reg>; + }; + + cpu@2 { + cpu-supply = <&buck1_30_reg>; + }; + + cpu@3 { + cpu-supply = <&buck1_30_reg>; + }; + }; + + memory@80000000 { + device_type = "memory"; + + /* 4 GiB RAM */ + reg = <0x00000000 0x80000000 0x00000000 0x80000000>, + <0x00000008 0x80000000 0x00000000 0x80000000>; + }; + + vcc_1v8_sys: regulator-4 { + compatible = "regulator-fixed"; + regulator-name = "vcc_1v8_sys"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vmain_pd>; + regulator-always-on; + regulator-boot-on; + }; +}; + +&mcu_pmx0 { + mcu_spi0_pins: mcu-spi0-pins { + pinctrl-single,pins = < + AM64X_MCU_IOPAD(0x008, PIN_OUTPUT, 0) /* (A7) MCU_SPI0_CLK SCLK */ + AM64X_MCU_IOPAD(0x000, PIN_OUTPUT, 0) /* (E8) MCU_SPI0_CS0 nCS0 */ + AM64X_MCU_IOPAD(0x00c, PIN_INPUT, 0) /* (D9) MCU_SPI0_D0 MISO */ + AM64X_MCU_IOPAD(0x010, PIN_OUTPUT, 0) /* (C9) MCU_SPI0_D1 MOSI */ + >; + }; +}; + +&main_pmx0 { + main_mdio1_pins_default: main-mdio1-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC not used, just for testing */ + AM62X_IOPAD(0x15c, PIN_INPUT_PULLUP, 0) /* (AB22) MDIO0_MDIO not used, just for testing */ + >; + }; + + main_rgmii2_pins_default: main-rgmii2-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x184, PIN_INPUT, 0) /* (AE23) RGMII2_RD0 */ + AM62X_IOPAD(0x188, PIN_INPUT, 0) /* (AB20) RGMII2_RD1 */ + AM62X_IOPAD(0x18c, PIN_INPUT, 0) /* (AC21) RGMII2_RD2 */ + AM62X_IOPAD(0x190, PIN_INPUT, 0) /* (AE22) RGMII2_RD3 */ + AM62X_IOPAD(0x180, PIN_INPUT, 0) /* (AD23) RGMII2_RXC */ + AM62X_IOPAD(0x17c, PIN_INPUT, 0) /* (AD22) RGMII2_RX_CTL */ + AM62X_IOPAD(0x16c, PIN_OUTPUT, 0) /* (Y18) RGMII2_TD0 */ + AM62X_IOPAD(0x170, PIN_OUTPUT, 0) /* (AA18) RGMII2_TD1 */ + AM62X_IOPAD(0x174, PIN_OUTPUT, 0) /* (AD21) RGMII2_TD2 */ + AM62X_IOPAD(0x178, PIN_OUTPUT, 0) /* (AC20) RGMII2_TD3 */ + AM62X_IOPAD(0x168, PIN_OUTPUT, 0) /* (AE21) RGMII2_TXC */ + AM62X_IOPAD(0x164, PIN_OUTPUT, 0) /* (AA19) RGMII2_TX_CTL */ + >; + }; + + usb1_pins_default: usb1-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x0258, PIN_INPUT, 0) /* (F18) USB1_DRVVBUS */ + >; + }; + + mram_irq_pins_default: mram-irq-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x0038, PIN_INPUT, 7) /* (E24) OSPI0_CSn3.GPIO0_14 (nINT-nVMEM) */ + >; + }; + + ospi0_pins_default: ospi0-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x000, PIN_OUTPUT, 0) /* (H24) OSPI0_CLK */ + AM62X_IOPAD(0x02c, PIN_OUTPUT, 0) /* (F23) OSPI0_CSn0 */ + AM62X_IOPAD(0x00c, PIN_INPUT, 0) /* (E25) OSPI0_D0 */ + AM62X_IOPAD(0x010, PIN_INPUT, 0) /* (G24) OSPI0_D1 */ + AM62X_IOPAD(0x014, PIN_INPUT, 0) /* (F25) OSPI0_D2 */ + AM62X_IOPAD(0x018, PIN_INPUT, 0) /* (F24) OSPI0_D3 */ + AM62X_IOPAD(0x01c, PIN_INPUT, 0) /* (J23) OSPI0_D4 */ + AM62X_IOPAD(0x020, PIN_INPUT, 0) /* (J25) OSPI0_D5 */ + AM62X_IOPAD(0x024, PIN_INPUT, 0) /* (H25) OSPI0_D6 */ + AM62X_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */ + AM62X_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */ + >; + }; +}; + +&watchdog_ext { + status = "okay"; +}; + +&gpmc0 { + status = "disabled"; +}; + +&mcu_spi0 { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&mcu_spi0_pins>; +}; + +&main_spi0 { + status = "okay"; +}; + +&main_spi2 { + status = "okay"; +}; + +&ospi0 { + pinctrl-names = "default"; + pinctrl-0 = <&ospi0_pins_default>; + status = "okay"; + + /* Everspin Tech. EM008LXO + * Order-No EM008LXOAB320IS1R + */ + mram: mram@0 { + pinctrl-names = "default"; + pinctrl-0 = <&mram_irq_pins_default>; + + interrupt-parent = <&main_gpio0>; + interrupts = <14 IRQ_TYPE_EDGE_FALLING>; + + compatible = "jedec,spi-nor"; + reg = <0x0>; + spi-tx-bus-width = <8>; + spi-rx-bus-width = <8>; + spi-max-frequency = <200000000>; + m25p,fast-read; + + cdns,tshsl-ns = <60>; + cdns,tsd2d-ns = <60>; + cdns,tchsh-ns = <60>; + cdns,tslch-ns = <60>; + cdns,read-delay = <0>; + }; +}; + +&main_i2c0 { + status = "okay"; + + eeprom_hw_id_wosm: at24c02@50 { + compatible = "atmel,24c02"; + reg = <0x50>; + pagesize = <16>; + }; + + tps65219: pmic@30 { + compatible = "ti,tps65219"; + reg = <0x30>; + system-power-controller; + + buck1-supply = <&vcc_5v0>; + buck2-supply = <&vcc_5v0>; + buck3-supply = <&vcc_5v0>; + ldo1-supply = <&vcc_3v3_sys>; + ldo2-supply = <&vcc_1v8_sys>; + ldo3-supply = <&vcc_3v3_sys>; + ldo4-supply = <&vcc_3v3_sys>; + + pinctrl-names = "default"; + pinctrl-0 = <&pmic_irq_pins_default>; + + interrupt-parent = <&main_gpio0>; + interrupts = <68 IRQ_TYPE_EDGE_FALLING>; + + /* NOTICE: + * + * We could use "tps65219-gpio" here with GPO1 (EN-DCDC-1V8) + * and GPO2 (CARRIER_PWR_EN for SD-Card and I2C1 devices) enabled, + * but will skip it for now and trust the bootloader or TPS-NVM for the + * correct settings correctly. + * + * For now we declare vcc_1v8_sys as being fixed. + * + */ + regulators { + buck1_30_reg: buck1 { + regulator-name = "VDD_CORE"; + regulator-min-microvolt = <750000>; + regulator-max-microvolt = <750000>; + regulator-boot-on; + regulator-always-on; + }; + + buck2_30_reg: buck2 { + regulator-name = "VCC3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + buck3_30_reg: buck3 { + regulator-name = "VDD_LPDDR4"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo1_30_sd_1v8_reg: ldo1 { + regulator-name = "VDDSHV_SD_1V8_IO_PMIC"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + }; + + ldo2_30_reg: ldo2 { + regulator-name = "VDDAR_CORE"; + regulator-min-microvolt = <850000>; + regulator-max-microvolt = <850000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo3_30_reg: ldo3 { + regulator-name = "VDDA_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo4_30_reg: ldo4 { + regulator-name = "VDDA_2V5"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <2500000>; + regulator-boot-on; + regulator-always-on; + }; + }; + }; +}; + +&main_i2c1 { + status = "okay"; +}; + +&sdhci0 { /* eMMC */ + status = "okay"; +}; + +&sdhci1 { /* SD */ + status = "okay"; + + vmmc-supply = <&vcc_3v3_sys>; + vqmmc-supply = <&ldo1_30_sd_1v8_reg>; +}; + +&cpsw3g { + status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&main_mdio1_pins_default + &main_rgmii2_pins_default>; +}; + +&cpsw_port1 { + status = "disabled"; +}; + +/* + * Use a fixed phy for emac2. + * that's rgmii2 + */ +&cpsw_port2 { + status = "okay"; + phy-mode = "rgmii-rxid"; + + fixed-link { + speed = <1000>; + full-duplex; + }; +}; + +&cpsw3g_mdio { + status = "disabled"; +}; + +&usbss1 { + status = "okay"; + ti,vbus-divider; +}; + +&usb1 { + status = "okay"; + dr_mode = "host"; + pinctrl-names = "default"; + pinctrl-0 = <&usb1_pins_default>; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi index 69a7ce1f3e29..2d66a70dfaf3 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi @@ -1,12 +1,10 @@ // SPDX-License-Identifier: GPL-2.0 /* - * Common dtsi for AM62x WAGO based devices + * Common dtsi for AM62x based WAGO devices * * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ * - * Copyright (C) 2024 WAGO GmbH & Co. KG - * Oleg Karfich - * Andrej Unrau + * Copyright (C) 2025 WAGO GmbH & Co. KG */ #include @@ -99,18 +97,6 @@ }; }; - wsysinit: wsysinit_init { - compatible = "wago,sysinit"; - - tty,rs232-485 = "ttyS0"; - }; - - uio_nvram: nvram@51000000 { - compatible = "uio_pdrv_genirq"; - linux,uio-name = "UIO_NVRAM"; - reg = <0 0x51000000 0 0x00020000>; /* 128k 16bit NVRAM */ - }; - vmain_pd: regulator-0 { /* TPS6522005 Dual PMIC */ compatible = "regulator-fixed"; @@ -150,6 +136,12 @@ en-gpios = <&main_gpio0 42 GPIO_ACTIVE_LOW>; gpios = <&main_gpio1 30 GPIO_ACTIVE_LOW>; }; + + wsysinit: wsysinit_init { + compatible = "wago,sysinit"; + + tty,rs232-485 = "ttyS0"; + }; }; &main_pmx0 { @@ -217,58 +209,6 @@ >; }; - gpmc_data_pins_default: gpmc-data-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x00bc, PIN_OUTPUT, 1) /* (V24) VOUT0_DATA1.GPMC0_A1 */ - AM62X_IOPAD(0x00c0, PIN_OUTPUT, 1) /* (W25) VOUT0_DATA2.GPMC0_A2 */ - AM62X_IOPAD(0x00c4, PIN_OUTPUT, 1) /* (W24) VOUT0_DATA3.GPMC0_A3 */ - AM62X_IOPAD(0x00c8, PIN_OUTPUT, 1) /* (Y25) VOUT0_DATA4.GPMC0_A4 */ - AM62X_IOPAD(0x00cc, PIN_OUTPUT, 1) /* (Y24) VOUT0_DATA5.GPMC0_A5 */ - AM62X_IOPAD(0x00d0, PIN_OUTPUT, 1) /* (Y23) VOUT0_DATA6.GPMC0_A6 */ - AM62X_IOPAD(0x00d4, PIN_OUTPUT, 1) /* (AA25) VOUT0_DATA7.GPMC0_A7 */ - AM62X_IOPAD(0x00d8, PIN_OUTPUT, 1) /* (V21) VOUT0_DATA8.GPMC0_A8 */ - AM62X_IOPAD(0x00dc, PIN_OUTPUT, 1) /* (W21) VOUT0_DATA9.GPMC0_A9 */ - AM62X_IOPAD(0x00e0, PIN_OUTPUT, 1) /* (V20) VOUT0_DATA10.GPMC0_A10 */ - AM62X_IOPAD(0x00e4, PIN_OUTPUT, 1) /* (AA23) VOUT0_DATA11.GPMC0_A11 */ - AM62X_IOPAD(0x00e8, PIN_OUTPUT, 1) /* (AB25) VOUT0_DATA12.GPMC0_A12 */ - AM62X_IOPAD(0x00ec, PIN_OUTPUT, 1) /* (AA24) VOUT0_DATA13.GPMC0_A13 */ - AM62X_IOPAD(0x00f0, PIN_OUTPUT, 1) /* (Y22) VOUT0_DATA14.GPMC0_A14 */ - AM62X_IOPAD(0x00f4, PIN_OUTPUT, 1) /* (AA21) VOUT0_DATA15.GPMC0_A15 */ - AM62X_IOPAD(0x00f8, PIN_OUTPUT, 1) /* (AB24) VOUT0_HSYNC.GPMC0_A16 */ - >; - }; - - gpmc_addr_pins_default: gpmc-addr-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x003c, PIN_INPUT, 0) /* (M25) GPMC0_AD0 */ - AM62X_IOPAD(0x0040, PIN_INPUT, 0) /* (N23) GPMC0_AD1 */ - AM62X_IOPAD(0x0044, PIN_INPUT, 0) /* (N24) GPMC0_AD2 */ - AM62X_IOPAD(0x0048, PIN_INPUT, 0) /* (N25) GPMC0_AD3 */ - AM62X_IOPAD(0x004c, PIN_INPUT, 0) /* (P24) GPMC0_AD4 */ - AM62X_IOPAD(0x0050, PIN_INPUT, 0) /* (P22) GPMC0_AD5 */ - AM62X_IOPAD(0x0054, PIN_INPUT, 0) /* (P21) GPMC0_AD6 */ - AM62X_IOPAD(0x0058, PIN_INPUT, 0) /* (R23) GPMC0_AD7 */ - AM62X_IOPAD(0x005c, PIN_INPUT, 0) /* (R24) GPMC0_AD8 */ - AM62X_IOPAD(0x0060, PIN_INPUT, 0) /* (R25) GPMC0_AD9 */ - AM62X_IOPAD(0x0064, PIN_INPUT, 0) /* (T25) GPMC0_AD10 */ - AM62X_IOPAD(0x0068, PIN_INPUT, 0) /* (R21) GPMC0_AD11 */ - AM62X_IOPAD(0x006c, PIN_INPUT, 0) /* (T22) GPMC0_AD12 */ - AM62X_IOPAD(0x0070, PIN_INPUT, 0) /* (T24) GPMC0_AD13 */ - AM62X_IOPAD(0x0074, PIN_INPUT, 0) /* (U25) GPMC0_AD14 */ - AM62X_IOPAD(0x0078, PIN_INPUT, 0) /* (U24) GPMC0_AD15 */ - >; - }; - - gpmc_ctrl_pins_default: gpmc-ctrl-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x0094, PIN_OUTPUT, 0) /* (N20) GPMC0_BE1n */ - AM62X_IOPAD(0x00a8, PIN_OUTPUT, 0) /* (M21) GPMC0_CSn0 */ - AM62X_IOPAD(0x0088, PIN_OUTPUT, 0) /* (L24) GPMC0_OEn_REn */ - AM62X_IOPAD(0x008c, PIN_OUTPUT, 0) /* (L25) GPMC0_WEn */ - AM62X_IOPAD(0x0090, PIN_OUTPUT, 0) /* (M24) GPMC0_BE0n_CLE */ - >; - }; - main_spi0_pins_default: main-spi0-default-pins { pinctrl-single,pins = < AM62X_IOPAD(0x01bc, PIN_OUTPUT, 0) /* (A14) SPI0_CLK */ @@ -288,23 +228,6 @@ >; }; - tpm_pins_default: tpm-pins-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x010c, PIN_INPUT, 7) /* (E23) MMC2_DAT2.GPIO0_66 */ - >; - }; - - kbus_pins_default: kbus-default-pins { - pinctrl-single,pins = < - AM62X_IOPAD(0x0100, PIN_INPUT_PULLUP, 7) /* (AC25) VOUT0_VSYNC.GPIO0_63 (kbus,nsync) */ - AM62X_IOPAD(0x0128, PIN_OUTPUT_PULLDOWN, 7) /* (B23) MMC2_SDWP.GPIO0_72 (kbus,nrst) */ - AM62X_IOPAD(0x0118, PIN_OUTPUT_PULLUP, 7) /* (D25) MMC2_CLK.GPIO0_69 (kbus,cmdsel) */ - AM62X_IOPAD(0x0104, PIN_OUTPUT_PULLUP, 7) /* (AC24) VOUT0_PCLK.GPIO0_64 (kbus,nirq) */ - AM62X_IOPAD(0x0120, PIN_INPUT_PULLUP, 7) /* (C24) MMC2_CMD.GPIO0_70 (kbus,nerr) */ - AM62X_IOPAD(0x0124, PIN_INPUT_PULLUP, 7) /* (A23) MMC2_SDCD.GPIO0_71 (kbus,nrdy) */ - >; - }; - wdg_ext_pins_default: wdg-ext-default-pins { pinctrl-single,pins = < AM62X_IOPAD(0x00ac, PIN_OUTPUT_PULLUP | INPUT_EN, 7) /* (L21) GPMC0_CSn1.GPIO0_42 */ @@ -319,27 +242,25 @@ }; }; -&main_uart0 { +&main_uart0 { /* DGB UART */ + status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_uart0_pins_default>; }; &main_uart2 { /* KBUS Firmware download */ + status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_uart2_pins_default>; }; -&main_uart4 { /* RS485 Interface */ +&main_uart4 { /* RS485 */ + status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_uart4_pins_default>; - - rts-gpios = <&main_gpio0 38 GPIO_ACTIVE_HIGH>; - rs485-term-gpios = <&rs485 0 GPIO_ACTIVE_HIGH>; - rs485-rts-active-high; - linux,rs485-enabled-at-boot-time; }; -&main_i2c0 { +&main_i2c0 { /* type label */ pinctrl-names = "default"; pinctrl-0 = <&main_i2c0_pins_default>; clock-frequency = <400000>; @@ -355,8 +276,6 @@ pinctrl-names = "default"; pinctrl-0 = <&main_spi0_pins_default>; - spi-rt; - spi-rt-prio = <81>; dmas = <&main_pktdma 0xc300 0>, <&main_pktdma 0x4300 0>; dma-names = "tx0", "rx0"; @@ -367,60 +286,11 @@ * completions within the UDMA driver. */ use-eow-interrupt; - - kbus@0 { - pinctrl-names = "default"; - pinctrl-0 = <&kbus_pins_default>; - compatible = "wago,spi-kbus"; - reg = <0>; - spi-max-frequency = <10000000>; - - kbus,reset-on-boot; - kbus,renesas; - - /* - * kbus,cmdsel-gpio is used to signal the need for an update - * while the KBUS slave cpu is being reset. Its low level - * forces an update. - */ - kbus,force-update-detection; - - /* - * announce used tty-device in /sys/class/wago/system. - * is needed to link this device to /dev/ttyKbus - */ - /* TODO: check serial device name in user-space */ - kbus,tty-device = "ttyS1"; /* corresponds to &uart2*/ - - /* some should be active low, keep all to high for compatibility reasons */ - kbus,nrst-gpio = <&main_gpio0 72 GPIO_ACTIVE_LOW>; - kbus,nsync-gpio = <&main_gpio0 63 GPIO_ACTIVE_HIGH>; - kbus,cmdsel-gpio = <&main_gpio0 69 GPIO_ACTIVE_HIGH>; - kbus,nirq-gpio = <&main_gpio0 64 GPIO_ACTIVE_HIGH>; - kbus,nerr-gpio = <&main_gpio0 70 GPIO_ACTIVE_HIGH>; - kbus,nrdy-gpio = <&main_gpio0 71 GPIO_ACTIVE_HIGH>; - }; - }; &main_spi2 { pinctrl-names = "default"; pinctrl-0 = <&main_spi2_pins_default>; - - SLB9670: SLB9670@0 { - compatible = "infineon,slb9670", "tis,tpm2-spi", "tcg,tpm_tis-spi"; - reg = <0>; - #gpio-cells = <2>; - #interrupt-cells = <2>; - pinctrl-names = "default"; - pinctrl-0 = <&tpm_pins_default>; - - interrupt-parent = <&main_gpio0>; - interrupts = <66 IRQ_TYPE_EDGE_FALLING>; - #address-cells = <1>; - #size-cells = <0>; - spi-max-frequency = <43000000>; - }; }; &main_i2c1 { @@ -436,23 +306,6 @@ // to avoid hardware failure. use-goldcap-with-higher-voltage; }; - - rs485: rs485@71 { - compatible = "nxp,pca9538"; - reg = <0x71>; - gpio-controller; - #gpio-cells = <2>; - gpio-line-names = "RS.TERM-EN", "RS.SLR", - "+5V0-FB-ENA", "MP200", - "BIAS.EN", "BIAS.HIR", - "MP201", "MP202"; - - rs485-5v { - gpio-hog; - gpios = <2 GPIO_ACTIVE_HIGH>; - output-high; - }; - }; }; &sdhci0 { @@ -470,14 +323,6 @@ ti,driver-strength-ohm = <33>; }; -&cpsw_port1 { - phy-mode = "rgmii-rxid"; -}; - -&cpsw_port2 { - phy-mode = "rgmii-rxid"; -}; - &mailbox0_cluster0 { mbox_m4_0: mbox-m4-0 { ti,mbox-rx = <0 0 0>; @@ -510,9 +355,11 @@ }; &usbss0 { + status = "okay"; ti,vbus-divider; }; &usb0 { + status = "okay"; dr_mode = "peripheral"; }; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi new file mode 100644 index 000000000000..3bb139c6bab8 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Common dtsi for AM62x WAGO based devices +* +* Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ +* Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ +*/ + +&main_pmx0 { + kbus_pins_default: kbus-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x0100, PIN_INPUT_PULLUP, 7) /* (AC25) VOUT0_VSYNC.GPIO0_63 (kbus,nsync) */ + AM62X_IOPAD(0x0128, PIN_OUTPUT_PULLDOWN, 7) /* (B23) MMC2_SDWP.GPIO0_72 (kbus,nrst) */ + AM62X_IOPAD(0x0118, PIN_OUTPUT_PULLUP, 7) /* (D25) MMC2_CLK.GPIO0_69 (kbus,cmdsel) */ + AM62X_IOPAD(0x0104, PIN_OUTPUT_PULLUP, 7) /* (AC24) VOUT0_PCLK.GPIO0_64 (kbus,nirq) */ + AM62X_IOPAD(0x0120, PIN_INPUT_PULLUP, 7) /* (C24) MMC2_CMD.GPIO0_70 (kbus,nerr) */ + AM62X_IOPAD(0x0124, PIN_INPUT_PULLUP, 7) /* (A23) MMC2_SDCD.GPIO0_71 (kbus,nrdy) */ + >; + }; +}; + +&main_spi0 { + spi-rt; + spi-rt-prio = <81>; + + kbus@0 { + pinctrl-names = "default"; + pinctrl-0 = <&kbus_pins_default>; + compatible = "wago,spi-kbus"; + reg = <0>; + spi-max-frequency = <10000000>; + + kbus,reset-on-boot; + kbus,renesas; + + /* + * kbus,cmdsel-gpio is used to signal the need for an update + * while the KBUS slave cpu is being reset. Its low level + * forces an update. + */ + kbus,force-update-detection; + + /* + * announce used tty-device in /sys/class/wago/system. + * is needed to link this device to /dev/ttyKbus + */ + /* TODO: check serial device name in user-space */ + kbus,tty-device = "ttyS1"; /* corresponds to &uart2*/ + + /* some should be active low, keep all to high for compatibility reasons */ + kbus,nrst-gpio = <&main_gpio0 72 GPIO_ACTIVE_LOW>; + kbus,nsync-gpio = <&main_gpio0 63 GPIO_ACTIVE_HIGH>; + kbus,cmdsel-gpio = <&main_gpio0 69 GPIO_ACTIVE_HIGH>; + kbus,nirq-gpio = <&main_gpio0 64 GPIO_ACTIVE_HIGH>; + kbus,nerr-gpio = <&main_gpio0 70 GPIO_ACTIVE_HIGH>; + kbus,nrdy-gpio = <&main_gpio0 71 GPIO_ACTIVE_HIGH>; + }; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-rs485.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-rs485.dtsi new file mode 100644 index 000000000000..f6db62c560a5 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-rs485.dtsi @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Common dtsi for AM62x WAGO based devices + * + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ + * Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ + */ + +&main_i2c1 { + /* + * PCA9538, 8-Bit I/O Expander + */ + io_exp_8bit: io-exp-8bit@71 { + compatible = "nxp,pca9538"; + reg = <0x71>; + gpio-controller; + #gpio-cells = <2>; + gpio-line-names = "RS.TERM-EN", "RS.SLR", + "+5V0-FB-ENA", "IO3", + "BIAS.EN", "BIAS.HIR", + "IO6", "IO7"; + + rs485-5v { /* +5V0-FB-ENA */ + gpio-hog; + gpios = <2 GPIO_ACTIVE_HIGH>; + output-high; + }; + }; +}; + +&main_uart4 { /* RS485 Interface */ + rts-gpios = <&main_gpio0 38 GPIO_ACTIVE_HIGH>; + rs485-term-gpios = <&io_exp_8bit 0 GPIO_ACTIVE_HIGH>; + rs485-rts-active-high; + linux,rs485-enabled-at-boot-time; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-rtc.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-rtc.dtsi new file mode 100644 index 000000000000..959d243f151d --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-rtc.dtsi @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Common Real-Time-Clock dtsi for AM62x WAGO based devices + * + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ + * Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ + */ + +&main_i2c1 { + rtc@52 { + compatible = "microcrystal,rv3028"; + reg = <0x52>; + + /* + * The backup goldcap is supplied with a higher voltage (+5V) + * then the RTC (+3,3) itself. It requires a special setup + * to avoid hardware failure. + */ + use-goldcap-with-higher-voltage; + }; +}; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-tpm.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-tpm.dtsi new file mode 100644 index 000000000000..eb8a9b8f6ee4 --- /dev/null +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-tpm.dtsi @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Common Trusted Platform Module dtsi for AM62x based WAGO devices + * + * Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/ + * Copyright (C) 2025 WAGO GmbH & Co. KG - https://www.wago.com/ + */ + +&main_pmx0 { + tpm_pins_default: tpm-pins-default-pins { + pinctrl-single,pins = < + AM62X_IOPAD(0x010c, PIN_INPUT, 7) /* (E23) MMC2_DAT2.GPIO0_66 */ + >; + }; +}; + +&main_spi2 { + SLB9670: SLB9670@0 { + compatible = "infineon,slb9670", "tis,tpm2-spi", "tcg,tpm_tis-spi"; + reg = <0>; + #gpio-cells = <2>; + #interrupt-cells = <2>; + pinctrl-names = "default"; + pinctrl-0 = <&tpm_pins_default>; + + interrupt-parent = <&main_gpio0>; + interrupts = <66 IRQ_TYPE_EDGE_FALLING>; + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <43000000>; + }; +}; From 8ef41904b6e67f353988e0877892bf21af196969 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Wed, 9 Jul 2025 18:18:34 +0200 Subject: [PATCH 03/14] configs: am6xxx: add pfc400 related configs Signed-off-by: Heinrich Toews --- arch/arm64/configs/am6xxx_defconfig | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/arch/arm64/configs/am6xxx_defconfig b/arch/arm64/configs/am6xxx_defconfig index acb22623eccf..429a433d2a91 100644 --- a/arch/arm64/configs/am6xxx_defconfig +++ b/arch/arm64/configs/am6xxx_defconfig @@ -131,6 +131,7 @@ CONFIG_BRIDGE_EBT_T_FILTER=m CONFIG_BRIDGE_EBT_T_NAT=m CONFIG_BRIDGE=y CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_NET_DSA=y CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y CONFIG_NET_SCHED=y @@ -172,6 +173,7 @@ CONFIG_SRAM=y CONFIG_EEPROM_AT24=y CONFIG_SCSI=y # CONFIG_SCSI_PROC_FS is not set +CONFIG_BLK_DEV_SD=y # CONFIG_BLK_DEV_BSG is not set CONFIG_SCSI_SAS_LIBSAS=y # CONFIG_SCSI_LOWLEVEL is not set @@ -182,6 +184,8 @@ CONFIG_IPVLAN=m CONFIG_VXLAN=m CONFIG_TUN=y CONFIG_VETH=m +CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=y +CONFIG_NET_DSA_MICROCHIP_KSZ_SPI=y # CONFIG_NET_VENDOR_ALACRITECH is not set # CONFIG_NET_VENDOR_AMAZON is not set # CONFIG_NET_VENDOR_AMD is not set @@ -297,14 +301,20 @@ CONFIG_REGULATOR_TPS65219=y CONFIG_USB=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y # CONFIG_USB_DEFAULT_PERSIST is not set +CONFIG_USB_OTG=y +CONFIG_USB_XHCI_HCD=y CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_MUSB_HDRC=y CONFIG_USB_DWC3=y -CONFIG_USB_DWC3_GADGET=y # CONFIG_USB_DWC3_KEYSTONE is not set CONFIG_NOP_USB_XCEIV=y CONFIG_USB_ULPI=y CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=32 CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS_SERIAL=y CONFIG_USB_CONFIGFS_ACM=y @@ -317,6 +327,7 @@ CONFIG_USB_CONFIGFS_EEM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y CONFIG_USB_CONFIGFS_F_FS=y CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_MASS_STORAGE=y CONFIG_MMC=y CONFIG_MMC_BLOCK_MINORS=32 CONFIG_MMC_ARMMMCI=y From 28f8298a306be28185c800def3692b567dffcca1 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Wed, 23 Jul 2025 13:04:16 +0200 Subject: [PATCH 04/14] arm64: dts: k3-am623-pfc-750-84xx: disable HW-ID eeproms due to firmware incompatability Disable for now all HW-ID eeprom devices due to incapability of the firmware of handling several eeprom devices at the same time. /dev/eeprom needs to be set to the specific typelabel eeprom device. See /etc/init.d/link_devices for the details. Signed-off-by: Heinrich Toews --- arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi | 1 + arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi | 1 + arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi | 1 + arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi | 1 + 4 files changed, 4 insertions(+) diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi index 974dcabaef00..16164b2c4680 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi @@ -82,6 +82,7 @@ &main_i2c1 { eeprom_hw_id_bb: at24c02@54 { + status = "disabled"; compatible = "atmel,24c02"; reg = <0x51>; pagesize = <16>; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi index 5f59455995c2..a532b1ba4963 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi @@ -13,6 +13,7 @@ status = "okay"; eeprom_hw_id_ib: at24c02@54 { + status = "disabled"; compatible = "atmel,24c02"; reg = <0x54>; pagesize = <16>; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi index eb3c0524a122..f62b350aea21 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi @@ -52,6 +52,7 @@ &main_i2c1 { eeprom_hw_id_kbus: at24c02@50 { + status = "disabled"; compatible = "atmel,24c02"; reg = <0x50>; pagesize = <16>; diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi index 8b9bdb60fcfe..de8a9fc7a245 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-wosm.dtsi @@ -176,6 +176,7 @@ status = "okay"; eeprom_hw_id_wosm: at24c02@50 { + status = "disabled"; compatible = "atmel,24c02"; reg = <0x50>; pagesize = <16>; From 8516594844e643dd9894a12bf9a7c11e64b53941 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Wed, 23 Jul 2025 13:16:08 +0200 Subject: [PATCH 05/14] arm64: dts: k3-am623-pfc-750-8xxx: add eeprom_typelabel alias Signed-off-by: Heinrich Toews --- arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi index 2d66a70dfaf3..a4cc2a464f31 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi @@ -25,6 +25,7 @@ watchdog0 = &main_rti0; watchdog1 = &watchdog_ext; watchdog2 = &main_rti1; + eeprom_typelabel = &eeprom_type_label; }; opp-table { @@ -265,7 +266,7 @@ pinctrl-0 = <&main_i2c0_pins_default>; clock-frequency = <400000>; - eeprom: at24c512@54 { + eeprom_type_label: at24c512@54 { compatible = "atmel,24c512"; reg = <0x54>; pagesize = <128>; From 68369bf6dd1d0c7bf1ba471d1c15b5d8e22f1caf Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Mon, 28 Jul 2025 09:22:15 +0200 Subject: [PATCH 06/14] arm64: configs: am6xxx: turn on CONFIG_LEDS_GPIO Signed-off-by: Heinrich Toews --- arch/arm64/configs/am6xxx_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/configs/am6xxx_defconfig b/arch/arm64/configs/am6xxx_defconfig index 429a433d2a91..6cf9e266bf39 100644 --- a/arch/arm64/configs/am6xxx_defconfig +++ b/arch/arm64/configs/am6xxx_defconfig @@ -337,6 +337,7 @@ CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_SDHCI_AM654=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y CONFIG_LEDS_PCA955X=y CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGER_TIMER=y From f60906a0ec5bd2ebdef69e6f1e429a55aa6901c3 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Mon, 28 Jul 2025 10:08:20 +0200 Subject: [PATCH 07/14] arm64: dts: k3-am623-pfc-750-84xx-kbus: enable mmc0 sd gpio-led function Signed-off-by: Heinrich Toews --- .../dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi index f62b350aea21..1346d8cab87a 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-kbus.dtsi @@ -39,6 +39,20 @@ debounce-interval = <1>; }; }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&sd_activity_led_pin>; + pinctrl-names = "default"; + + led-0 { + function = LED_FUNCTION_SD; + color = ; + gpios = <&main_gpio0 31 GPIO_ACTIVE_LOW>; + linux,default-trigger = "mmc0"; + default-state = "on"; + }; + }; }; &main_pmx0 { @@ -48,6 +62,12 @@ AM62X_IOPAD(0x01a4, PIN_INPUT, 7) /* (B20) MCASP0_ACLKX.GPIO1_11 IO-RAB */ >; }; + + sd_activity_led_pin: sd-activity-led-pin { + pinctrl-single,pins = < + AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO0_31 (MMC1.PWR / SDC.LED) */ + >; + }; }; &main_i2c1 { From 4299c425a792a2f10ae83b2ce252abf78a50525a Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Tue, 5 Aug 2025 09:14:44 +0200 Subject: [PATCH 08/14] arm64: dts: k3-am623-pfc-750-8xxx: disable SD write protection Due to EMV related challenges we decided to move from normal SD to uSD cards. Here we have no WP pin. So disable it. Signed-off-by: Heinrich Toews --- arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi index a4cc2a464f31..f5be8b9b84ae 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8xxx-common.dtsi @@ -322,6 +322,7 @@ pinctrl-names = "default"; pinctrl-0 = <&main_mmc1_pins_default>; ti,driver-strength-ohm = <33>; + disable-wp; }; &mailbox0_cluster0 { From f8bab57b5de7c344d9d28ee8fb177dc8e6260f0b Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Wed, 6 Aug 2025 11:51:27 +0200 Subject: [PATCH 09/14] arm64: dts: k3-am62x-pfc-kbus: increase max spi freqency to 25 mhz Signed-off-by: Heinrich Toews --- arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi index 3bb139c6bab8..61cab828cc26 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-kbus.dtsi @@ -28,7 +28,7 @@ pinctrl-0 = <&kbus_pins_default>; compatible = "wago,spi-kbus"; reg = <0>; - spi-max-frequency = <10000000>; + spi-max-frequency = <25000000>; kbus,reset-on-boot; kbus,renesas; From bbcb939022e0081112fc24ae4d7ee23aa2d86427 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Thu, 7 Aug 2025 13:41:57 +0200 Subject: [PATCH 10/14] arm64: dts: pfc-750-84xx: interaction: add led reset pin config Signed-off-by: Heinrich Toews --- .../dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi index a532b1ba4963..8f836b9a3ead 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-interaction.dtsi @@ -9,6 +9,14 @@ #include "k3-am623-pfc-rs485.dtsi" #include "k3-am623-pfc-rtc.dtsi" +&mcu_pmx0 { + led_reset_pins_default: led-reset-pins-default { + pinctrl-single,pins = < + AM62X_MCU_IOPAD(0x050, PIN_OUTPUT | INPUT_EN, 7) /* (A9) WKUP_I2C0_SDA.GPIO0_20 nRST-LED-DISP */ + >; + }; +}; + &main_i2c1 { status = "okay"; @@ -25,6 +33,9 @@ */ led_bar60: pca9552@60 { compatible = "nxp,pca9552"; + pinctrl-names = "default"; + pinctrl-0 = <&led_reset_pins_default>; + #address-cells = <1>; #size-cells = <0>; reg = <0x60>; From f7e25870a759c9af6875c83b332b75731a033985 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Thu, 7 Aug 2025 16:23:07 +0200 Subject: [PATCH 11/14] driver: spi: kbus: fix: add missing contextualization of KBUS-specific code The driver is lacking of a consistent contextualization of KBUS-specific code paths. The problem showed up while trying to probe the micrel KSZ switch driver by utilizing the spi bus. This patch contextualizes the problematic code paths by checking first if we are in a KBUS-driver context. Signed-off-by: Heinrich Toews --- drivers/spi/spi-kbus.c | 33 ++++++++++++++++++++------------- drivers/spi/spi-omap2-mcspi.c | 20 +++++++++++++------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/drivers/spi/spi-kbus.c b/drivers/spi/spi-kbus.c index f2f41de82d8b..b2c92fecc4dc 100644 --- a/drivers/spi/spi-kbus.c +++ b/drivers/spi/spi-kbus.c @@ -54,7 +54,7 @@ static struct cdev kbus_cdev; /* sysfs */ extern struct class *wsysinit_sysfs_class; extern struct device *wsysinit_sysfs_device; -static struct device *kbus_device; +static struct device *kbus_device = NULL; int kbus_wait_for_gpio(int gpio) { @@ -223,19 +223,26 @@ static struct task_struct *find_dma_task(void) void kbus_boost_dma_task(u8 enable) { - struct kbus_drv_data *kdrvdata = dev_get_drvdata(kbus_device); - struct sched_param boost_param = { - .sched_priority = enable ? kdrvdata->kbus_dma_boost_prio : - kdrvdata->kbus_dma_normal_prio - }; + struct kbus_drv_data *kdrvdata = NULL; + struct sched_param boost_param; - if (kdrvdata->dma_task) { - if ((enable && !kdrvdata->kbus_dma_boost_en) || - (!enable && kdrvdata->kbus_dma_boost_en)) { - kdrvdata->kbus_dma_boost_en = - !kdrvdata->kbus_dma_boost_en; - sched_setscheduler(kdrvdata->dma_task, SCHED_FIFO, - &boost_param); + if (kbus_device) { + kdrvdata = dev_get_drvdata(kbus_device); + + if (kdrvdata) { + boost_param.sched_priority = enable ? + kdrvdata->kbus_dma_boost_prio : + kdrvdata->kbus_dma_normal_prio; + + if (kdrvdata->dma_task) { + if ((enable && !kdrvdata->kbus_dma_boost_en) || + (!enable && kdrvdata->kbus_dma_boost_en)) { + kdrvdata->kbus_dma_boost_en = + !kdrvdata->kbus_dma_boost_en; + sched_setscheduler(kdrvdata->dma_task, SCHED_FIFO, + &boost_param); + } + } } } } diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index e6a520b26957..842156646c00 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c @@ -657,9 +657,11 @@ omap2_mcspi_txrx_dma(struct spi_device *spi, struct spi_transfer *xfer) int wait_res; #ifdef CONFIG_SPI_KBUS_OMAP_EXTENSION - trace_pxc_kbus(__func__, "enter"); + if (spi->dev.driver == &kbus_driver.driver) { + trace_pxc_kbus(__func__, "enter"); - kbus_boost_dma_task(1); + kbus_boost_dma_task(1); + } #endif mcspi = spi_controller_get_devdata(spi->controller); @@ -777,9 +779,11 @@ omap2_mcspi_txrx_dma_eow(struct spi_device *spi, struct spi_transfer *xfer) int ret; #ifdef CONFIG_SPI_KBUS_OMAP_EXTENSION - trace_pxc_kbus(__func__, "enter"); + if (spi->dev.driver == &kbus_driver.driver) { + trace_pxc_kbus(__func__, "enter"); - kbus_boost_dma_task(1); + kbus_boost_dma_task(1); + } #endif mcspi = spi_controller_get_devdata(spi->controller); @@ -866,10 +870,12 @@ omap2_mcspi_txrx_pio(struct spi_device *spi, struct spi_transfer *xfer) word_len = cs->word_len; #ifdef CONFIG_SPI_KBUS_OMAP_EXTENSION - trace_pxc_kbus(__func__, "enter"); - kbus_dbg("%s[%d]: count: %d\n", __func__,__LINE__, count); + if (spi->dev.driver == &kbus_driver.driver) { + trace_pxc_kbus(__func__, "enter"); + kbus_dbg("%s[%d]: count: %d\n", __func__,__LINE__, count); - kbus_boost_dma_task(0); + kbus_boost_dma_task(0); + } #endif l = mcspi_cached_chconf0(spi); From f75bd1e79221866cbac18db1d3f4c35c483c6d21 Mon Sep 17 00:00:00 2001 From: Heinrich Toews Date: Mon, 11 Aug 2025 16:13:34 +0200 Subject: [PATCH 12/14] arm64: dts: k3-am623-pfc-750-84xx: add working ksz9477 config Signed-off-by: Heinrich Toews --- .../boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi index 16164b2c4680..cb35d78b5219 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-84xx-baseboard.dtsi @@ -36,31 +36,31 @@ port@0 { reg = <0>; - label = "lan1"; + label = "ethX3"; phy-mode = "internal"; }; port@1 { reg = <1>; - label = "lan2"; + label = "ethX2"; phy-mode = "internal"; }; port@2 { reg = <2>; - label = "lan3"; + label = "ethX1"; phy-mode = "internal"; }; port@3 { reg = <3>; - label = "lan4"; + label = "ethEM"; phy-mode = "internal"; }; port@4 { reg = <4>; - label = "lan5"; + label = "ethX4"; phy-mode = "internal"; }; From 4b9e09800cb91928d7b688f85b9470bc0415d066 Mon Sep 17 00:00:00 2001 From: Oleg Karfich Date: Fri, 7 Nov 2025 16:05:30 +0100 Subject: [PATCH 13/14] arm64: dts: k3-am623-pfc-750-8302.dts: switch gpmc pinctrl from mcu_pmx0 to main_pmx0 Change gpmc-data-default-pins node to use main_pmx0 instead of mcu_pmx0 in the device tree for k3-am623-pfc-750-8302. This aligns pinmux configuration with hardware requirements Signed-off-by: Oleg Karfich --- arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts index d36dbe8f65c6..a5fa2c9ac51a 100644 --- a/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts +++ b/arch/arm64/boot/dts/ti/k3-am623-pfc-750-8302.dts @@ -116,7 +116,7 @@ }; }; -&mcu_pmx0 { +&main_pmx0 { gpmc_data_pins_default: gpmc-data-default-pins { pinctrl-single,pins = < AM62X_IOPAD(0x00bc, PIN_OUTPUT, 1) /* (V24) VOUT0_DATA1.GPMC0_A1 */ From a105e63ad54d32a5298915f92e209c54eb1fbded Mon Sep 17 00:00:00 2001 From: Oleg Karfich Date: Fri, 14 Nov 2025 14:21:45 +0100 Subject: [PATCH 14/14] labgrid.basesoftware: update submodule * labgrid.basesoftware 32a1f83...bdfb3ac (1): > Merge pull request #285 from BU-Automation/topic/ht/ok/pfc400/dsa-ksz9477-rebase-review/alltests Signed-off-by: Oleg Karfich --- labgrid.basesoftware | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/labgrid.basesoftware b/labgrid.basesoftware index 32a1f8345ba9..bdfb3acb6798 160000 --- a/labgrid.basesoftware +++ b/labgrid.basesoftware @@ -1 +1 @@ -Subproject commit 32a1f8345ba9339cf5b75b5358841894610721c0 +Subproject commit bdfb3acb6798a588ebb0489d9b2a98ae5602b595