Merge pull request #359 from BU-Automation/topic/ht/pfc400/dsa-ksz9477-rebase

Introduce PFC400 Plattform-Support incl. working KSZ DSA network switch
This commit is contained in:
Oleg KARFICH
2025-11-18 11:01:38 +01:00
committed by GitHub Enterprise
20 changed files with 1699 additions and 956 deletions
+2 -1
View File
@@ -24,7 +24,8 @@ 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
dtb-$(CONFIG_ARCH_K3) += k3-am623-pfc-750-8400.dtb
# Boards with AM62Ax SoC
dtb-$(CONFIG_ARCH_K3) += k3-am62a7-sk.dtb
@@ -6,12 +6,22 @@
* 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"
#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 {
@@ -31,10 +41,197 @@
/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>;
};
};
&main_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 */
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 +248,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 +320,56 @@
&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-mode = "rgmii-rxid";
phy-handle = <&cpsw3g_phy0>;
};
&cpsw_port2 {
status = "okay";
phy-mode = "rgmii-rxid";
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 {
@@ -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;
};
};
};
};
@@ -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";
};
@@ -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>;
};
};
@@ -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";
};
@@ -0,0 +1,90 @@
// 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 = "ethX3";
phy-mode = "internal";
};
port@1 {
reg = <1>;
label = "ethX2";
phy-mode = "internal";
};
port@2 {
reg = <2>;
label = "ethX1";
phy-mode = "internal";
};
port@3 {
reg = <3>;
label = "ethEM";
phy-mode = "internal";
};
port@4 {
reg = <4>;
label = "ethX4";
phy-mode = "internal";
};
port@5 {
reg = <5>;
label = "cpu";
ethernet = <&cpsw3g>; /* &eth0 */
phy-mode = "rgmii-txid";
tx-internal-delay-ps = <2000>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
};
};
&main_i2c1 {
eeprom_hw_id_bb: at24c02@54 {
status = "disabled";
compatible = "atmel,24c02";
reg = <0x51>;
pagesize = <16>;
};
};
@@ -0,0 +1,140 @@
// 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"
&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";
eeprom_hw_id_ib: at24c02@54 {
status = "disabled";
compatible = "atmel,24c02";
reg = <0x54>;
pagesize = <16>;
};
/*
* NXP PCA9552BS
* 16-Bit I²C-Bus LED Driver
*/
led_bar60: pca9552@60 {
compatible = "nxp,pca9552";
pinctrl-names = "default";
pinctrl-0 = <&led_reset_pins_default>;
#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>;
};
};
@@ -0,0 +1,80 @@
// 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>;
};
};
leds {
compatible = "gpio-leds";
pinctrl-0 = <&sd_activity_led_pin>;
pinctrl-names = "default";
led-0 {
function = LED_FUNCTION_SD;
color = <LED_COLOR_ID_ORANGE>;
gpios = <&main_gpio0 31 GPIO_ACTIVE_LOW>;
linux,default-trigger = "mmc0";
default-state = "on";
};
};
};
&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 */
>;
};
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 {
eeprom_hw_id_kbus: at24c02@50 {
status = "disabled";
compatible = "atmel,24c02";
reg = <0x50>;
pagesize = <16>;
};
};
@@ -0,0 +1,327 @@
// 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 {
status = "disabled";
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>;
};
@@ -0,0 +1,367 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Common dtsi for AM62x based WAGO devices
*
* Copyright (C) 2021-2022 Texas Instruments Incorporated - https://www.ti.com/
*
* Copyright (C) 2025 WAGO GmbH & Co. KG <http://global.wago.com>
*/
#include <dt-bindings/leds/common.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/net/ti-dp83867.h>
#include "k3-am625.dtsi"
/ {
aliases {
serial2 = &main_uart0;
serial1 = &main_uart2;
serial4 = &main_uart4;
mmc0 = &sdhci1;
mmc1 = &sdhci0;
ethernet0 = &cpsw_port1;
ethernet1 = &cpsw_port2;
usb0 = &usb0;
watchdog0 = &main_rti0;
watchdog1 = &watchdog_ext;
watchdog2 = &main_rti1;
eeprom_typelabel = &eeprom_type_label;
};
opp-table {
opp-200000000 {
opp-microvolt = <750000>;
};
opp-400000000 {
opp-microvolt = <750000>;
};
opp-600000000 {
opp-microvolt = <750000>;
};
opp-800000000 {
opp-microvolt = <750000>;
};
opp-1000000000 {
opp-microvolt = <750000>;
};
opp-1250000000 {
opp-microvolt = <750000>;
};
opp-1400000000 {
opp-hz = /bits/ 64 <1400000000>;
opp-microvolt = <850000>;
opp-supported-hw = <0x01 0x0004>;
clock-latency-ns = <6000000>;
};
};
chosen {
stdout-path = "serial2:115200n8";
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
ramoops@9ca00000 {
compatible = "ramoops";
reg = <0x00 0x9ca00000 0x00 0x00100000>;
record-size = <0x8000>;
console-size = <0x8000>;
ftrace-size = <0x00>;
pmsg-size = <0x8000>;
};
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_dma_memory_region: r5f-dma-memory@9db00000 {
compatible = "shared-dma-pool";
reg = <0x00 0x9db00000 0x00 0xc00000>;
no-map;
};
};
vmain_pd: regulator-0 {
/* TPS6522005 Dual PMIC */
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 {
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_sys: regulator-2 {
compatible = "regulator-fixed";
regulator-name = "vcc_3v3_sys";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vmain_pd>;
regulator-always-on;
regulator-boot-on;
};
watchdog_ext: watchdog {
compatible = "linux,wdt-gpio";
pinctrl-names = "default";
pinctrl-0 = <&wdg_ext_pins_default>;
hw_algo = "toggle";
hw_margin_ms = <1120>; /* STWD100xY: min. 1120, typ. 1600 */
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 {
main_uart0_pins_default: main-uart0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14) UART0_RXD */
AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */
>;
};
main_uart2_pins_default: main-uart2-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x01d0, PIN_INPUT, 3) /* (A15) UART0_CTSn.UART2_RXD */
AM62X_IOPAD(0x01d4, PIN_OUTPUT, 3) /* (B15) UART0_RTSn.UART2_TXD */
>;
};
main_uart4_pins_default: main-uart4-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x0b0, PIN_INPUT, 3) /* (K22) UART4_RXD */
AM62X_IOPAD(0x0b4, PIN_OUTPUT, 3) /* (K24) UART4_TXD */
AM62X_IOPAD(0x09c, PIN_OUTPUT_PULLDOWN, 7) /* (V25) GPIO0_38 (RS-DE) */
>;
};
main_i2c0_pins_default: main-i2c0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (B16) I2C0_SCL */
AM62X_IOPAD(0x1e4, PIN_INPUT_PULLUP, 0) /* (A16) I2C0_SDA */
>;
};
main_i2c1_pins_default: main-i2c1-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x1e8, PIN_INPUT_PULLUP, 0) /* (B17) I2C1_SCL */
AM62X_IOPAD(0x1ec, PIN_INPUT_PULLUP, 0) /* (A17) I2C1_SDA */
>;
};
main_mmc0_pins_default: main-mmc0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */
AM62X_IOPAD(0x218, PIN_OUTPUT, 0) /* (AB1) MMC0_CLK */
AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */
AM62X_IOPAD(0x210, PIN_INPUT, 0) /* (AA1) MMC0_DAT1 */
AM62X_IOPAD(0x20c, PIN_INPUT, 0) /* (AA3) MMC0_DAT2 */
AM62X_IOPAD(0x208, PIN_INPUT, 0) /* (Y4) MMC0_DAT3 */
AM62X_IOPAD(0x204, PIN_INPUT, 0) /* (AB2) MMC0_DAT4 */
AM62X_IOPAD(0x200, PIN_INPUT, 0) /* (AC1) MMC0_DAT5 */
AM62X_IOPAD(0x1fc, PIN_INPUT, 0) /* (AD2) MMC0_DAT6 */
AM62X_IOPAD(0x1f8, PIN_INPUT, 0) /* (AC2) MMC0_DAT7 */
>;
};
main_mmc1_pins_default: main-mmc1-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x23c, PIN_INPUT, 0) /* (A21) MMC1_CMD */
AM62X_IOPAD(0x234, PIN_OUTPUT, 0) /* (B22) MMC1_CLK */
AM62X_IOPAD(0x230, PIN_INPUT, 0) /* (A22) MMC1_DAT0 */
AM62X_IOPAD(0x22c, PIN_INPUT, 0) /* (B21) MMC1_DAT1 */
AM62X_IOPAD(0x228, PIN_INPUT, 0) /* (C21) MMC1_DAT2 */
AM62X_IOPAD(0x224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
AM62X_IOPAD(0x240, PIN_INPUT_PULLUP, 0) /* (D17) MMC1_SDCD */
AM62X_IOPAD(0x244, PIN_INPUT_PULLUP, 0) /* (C17) MMC1_SDWP */
>;
};
main_spi0_pins_default: main-spi0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x01bc, PIN_OUTPUT, 0) /* (A14) SPI0_CLK */
AM62X_IOPAD(0x01c0, PIN_INPUT, 0) /* (B13) SPI0_D0 */
AM62X_IOPAD(0x01c4, PIN_OUTPUT, 0) /* (B14) SPI0_D1 */
AM62X_IOPAD(0x01b4, PIN_OUTPUT, 0) /* (A13) SPI0_CS0 */
>;
};
main_spi2_pins_default: main-spi2-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x01b0, PIN_OUTPUT, 1) /* (A20) MCASP0_ACLKR.SPI2_CLK */
AM62X_IOPAD(0x0194, PIN_INPUT, 1) /* (B19) MCASP0_AXR3.SPI2_D0 */
AM62X_IOPAD(0x0198, PIN_INPUT, 1) /* (A19) MCASP0_AXR2.SPI2_D1 */
AM62X_IOPAD(0x01ac, PIN_OUTPUT, 1) /* (E19) MCASP0_AFSR.SPI2_CS0 */
>;
};
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 */
AM62X_IOPAD(0x01f0, PIN_OUTPUT, 7) /* (A18) EXT_REFCLK1.GPIO1_30 */
>;
};
pmic_irq_pins_default: pmic-irq-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x0114, PIN_INPUT, 7) /* (B24) MMC2_DAT0.GPIO0_68 */
>;
};
};
&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 */
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&main_uart4_pins_default>;
};
&main_i2c0 { /* type label */
pinctrl-names = "default";
pinctrl-0 = <&main_i2c0_pins_default>;
clock-frequency = <400000>;
eeprom_type_label: at24c512@54 {
compatible = "atmel,24c512";
reg = <0x54>;
pagesize = <128>;
};
};
&main_spi0 {
pinctrl-names = "default";
pinctrl-0 = <&main_spi0_pins_default>;
dmas = <&main_pktdma 0xc300 0>, <&main_pktdma 0x4300 0>;
dma-names = "tx0", "rx0";
/*
* When this option is set, the McSPI EOW Interrupt will be used
* to signal when a DMA Transfer is done. This is needed for this
* platform to prevent unpredictable delays resulting from TX/RX
* completions within the UDMA driver.
*/
use-eow-interrupt;
};
&main_spi2 {
pinctrl-names = "default";
pinctrl-0 = <&main_spi2_pins_default>;
};
&main_i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c1_pins_default>;
clock-frequency = <400000>;
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;
};
};
&sdhci0 {
/* eMMC */
pinctrl-names = "default";
pinctrl-0 = <&main_mmc0_pins_default>;
ti,driver-strength-ohm = <33>;
disable-wp;
};
&sdhci1 {
/* SD */
pinctrl-names = "default";
pinctrl-0 = <&main_mmc1_pins_default>;
ti,driver-strength-ohm = <33>;
disable-wp;
};
&mailbox0_cluster0 {
mbox_m4_0: mbox-m4-0 {
ti,mbox-rx = <0 0 0>;
ti,mbox-tx = <1 0 0>;
};
};
/*
* This system watchdog is reserved for internal use and is not user-configurable.
* It must not be modified or deleted to ensure consistent behavior!
*/
&main_rti1 { // watchdog@e010000
timeout-sec = <120>;
};
/*
* AM6232 does not have main_rti2, main_rti3, and main_rti15
* https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1218039/am623-stuck-in-sd-card-after-boot-up
*/
&main_rti2 { // watchdog@e020000
status = "disabled";
};
&main_rti3 { // watchdog@e030000
status = "disabled";
};
&main_rti15 { // watchdog@e0f0000
status = "disabled";
};
&usbss0 {
status = "okay";
ti,vbus-divider;
};
&usb0 {
status = "okay";
dr_mode = "peripheral";
};
@@ -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 = <25000000>;
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>;
};
};
@@ -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;
};
@@ -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;
};
};
@@ -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>;
};
};
-919
View File
@@ -1,919 +0,0 @@
// 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) 2024 WAGO GmbH & Co. KG <http://global.wago.com>
* Oleg Karfich <oleg.karfich@wago.com>
* Andrej Unrau <andrej.unrau@wago.com>
*/
#include <dt-bindings/leds/common.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/net/ti-dp83867.h>
#include "k3-am625.dtsi"
/ {
aliases {
serial2 = &main_uart0;
serial1 = &main_uart2;
serial4 = &main_uart4;
mmc0 = &sdhci1;
mmc1 = &sdhci0;
ethernet0 = &cpsw_port1;
ethernet1 = &cpsw_port2;
usb0 = &usb0;
watchdog0 = &main_rti0;
watchdog1 = &watchdog_ext;
watchdog2 = &main_rti1;
};
opp-table {
opp-200000000 {
opp-microvolt = <750000>;
};
opp-400000000 {
opp-microvolt = <750000>;
};
opp-600000000 {
opp-microvolt = <750000>;
};
opp-800000000 {
opp-microvolt = <750000>;
};
opp-1000000000 {
opp-microvolt = <750000>;
};
opp-1250000000 {
opp-microvolt = <750000>;
};
opp-1400000000 {
opp-hz = /bits/ 64 <1400000000>;
opp-microvolt = <850000>;
opp-supported-hw = <0x01 0x0004>;
clock-latency-ns = <6000000>;
};
};
chosen {
stdout-path = "serial2:115200n8";
};
memory@80000000 {
device_type = "memory";
/* 2G RAM */
reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
ramoops@9ca00000 {
compatible = "ramoops";
reg = <0x00 0x9ca00000 0x00 0x00100000>;
record-size = <0x8000>;
console-size = <0x8000>;
ftrace-size = <0x00>;
pmsg-size = <0x8000>;
};
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_dma_memory_region: r5f-dma-memory@9db00000 {
compatible = "shared-dma-pool";
reg = <0x00 0x9db00000 0x00 0xc00000>;
no-map;
};
};
wsysinit: wsysinit_init {
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 {
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";
regulator-name = "vmain_pd";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-always-on;
regulator-boot-on;
};
vcc_5v0: regulator-1 {
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_sys: regulator-2 {
compatible = "regulator-fixed";
regulator-name = "vcc_3v3_sys";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&vmain_pd>;
regulator-always-on;
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";
pinctrl-0 = <&wdg_ext_pins_default>;
hw_algo = "toggle";
hw_margin_ms = <1120>; /* STWD100xY: min. 1120, typ. 1600 */
en-gpios = <&main_gpio0 42 GPIO_ACTIVE_LOW>;
gpios = <&main_gpio1 30 GPIO_ACTIVE_LOW>;
};
};
&main_pmx0 {
main_uart0_pins_default: main-uart0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14) UART0_RXD */
AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */
>;
};
main_uart2_pins_default: main-uart2-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x01d0, PIN_INPUT, 3) /* (A15) UART0_CTSn.UART2_RXD */
AM62X_IOPAD(0x01d4, PIN_OUTPUT, 3) /* (B15) UART0_RTSn.UART2_TXD */
>;
};
main_uart4_pins_default: main-uart4-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x0b0, PIN_INPUT, 3) /* (K22) UART4_RXD */
AM62X_IOPAD(0x0b4, PIN_OUTPUT, 3) /* (K24) UART4_TXD */
AM62X_IOPAD(0x09c, PIN_OUTPUT_PULLDOWN, 7) /* (V25) GPIO0_38 (RS-DE) */
>;
};
main_i2c0_pins_default: main-i2c0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (B16) I2C0_SCL */
AM62X_IOPAD(0x1e4, PIN_INPUT_PULLUP, 0) /* (A16) I2C0_SDA */
>;
};
main_i2c1_pins_default: main-i2c1-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x1e8, PIN_INPUT_PULLUP, 0) /* (B17) I2C1_SCL */
AM62X_IOPAD(0x1ec, PIN_INPUT_PULLUP, 0) /* (A17) I2C1_SDA */
>;
};
main_mmc0_pins_default: main-mmc0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x220, PIN_INPUT, 0) /* (Y3) MMC0_CMD */
AM62X_IOPAD(0x218, PIN_OUTPUT, 0) /* (AB1) MMC0_CLK */
AM62X_IOPAD(0x214, PIN_INPUT, 0) /* (AA2) MMC0_DAT0 */
AM62X_IOPAD(0x210, PIN_INPUT, 0) /* (AA1) MMC0_DAT1 */
AM62X_IOPAD(0x20c, PIN_INPUT, 0) /* (AA3) MMC0_DAT2 */
AM62X_IOPAD(0x208, PIN_INPUT, 0) /* (Y4) MMC0_DAT3 */
AM62X_IOPAD(0x204, PIN_INPUT, 0) /* (AB2) MMC0_DAT4 */
AM62X_IOPAD(0x200, PIN_INPUT, 0) /* (AC1) MMC0_DAT5 */
AM62X_IOPAD(0x1fc, PIN_INPUT, 0) /* (AD2) MMC0_DAT6 */
AM62X_IOPAD(0x1f8, PIN_INPUT, 0) /* (AC2) MMC0_DAT7 */
>;
};
main_mmc1_pins_default: main-mmc1-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x23c, PIN_INPUT, 0) /* (A21) MMC1_CMD */
AM62X_IOPAD(0x234, PIN_OUTPUT, 0) /* (B22) MMC1_CLK */
AM62X_IOPAD(0x230, PIN_INPUT, 0) /* (A22) MMC1_DAT0 */
AM62X_IOPAD(0x22c, PIN_INPUT, 0) /* (B21) MMC1_DAT1 */
AM62X_IOPAD(0x228, PIN_INPUT, 0) /* (C21) MMC1_DAT2 */
AM62X_IOPAD(0x224, PIN_INPUT, 0) /* (D22) MMC1_DAT3 */
AM62X_IOPAD(0x240, PIN_INPUT_PULLUP, 0) /* (D17) MMC1_SDCD */
AM62X_IOPAD(0x244, PIN_INPUT_PULLUP, 0) /* (C17) MMC1_SDWP */
>;
};
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 */
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 */
>;
};
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 */
AM62X_IOPAD(0x01c0, PIN_INPUT, 0) /* (B13) SPI0_D0 */
AM62X_IOPAD(0x01c4, PIN_OUTPUT, 0) /* (B14) SPI0_D1 */
AM62X_IOPAD(0x01b4, PIN_OUTPUT, 0) /* (A13) SPI0_CS0 */
>;
};
main_spi2_pins_default: main-spi2-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x01b0, PIN_OUTPUT, 1) /* (A20) MCASP0_ACLKR.SPI2_CLK */
AM62X_IOPAD(0x0194, PIN_INPUT, 1) /* (B19) MCASP0_AXR3.SPI2_D0 */
AM62X_IOPAD(0x0198, PIN_INPUT, 1) /* (A19) MCASP0_AXR2.SPI2_D1 */
AM62X_IOPAD(0x01ac, PIN_OUTPUT, 1) /* (E19) MCASP0_AFSR.SPI2_CS0 */
>;
};
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 */
AM62X_IOPAD(0x01f0, PIN_OUTPUT, 7) /* (A18) EXT_REFCLK1.GPIO1_30 */
>;
};
pmic_irq_pins_default: pmic-irq-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x0114, PIN_INPUT, 7) /* (B24) MMC2_DAT0.GPIO0_68 */
>;
};
};
&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>;
};
&main_uart2 { /* KBUS Firmware download */
pinctrl-names = "default";
pinctrl-0 = <&main_uart2_pins_default>;
};
&main_uart4 { /* RS485 Interface */
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 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c0_pins_default>;
clock-frequency = <400000>;
eeprom: at24c512@54 {
compatible = "atmel,24c512";
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 {
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";
/*
* When this option is set, the McSPI EOW Interrupt will be used
* to signal when a DMA Transfer is done. This is needed for this
* platform to prevent unpredictable delays resulting from TX/RX
* 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 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c1_pins_default>;
clock-frequency = <400000>;
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;
};
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 {
/* eMMC */
pinctrl-names = "default";
pinctrl-0 = <&main_mmc0_pins_default>;
ti,driver-strength-ohm = <33>;
disable-wp;
};
&sdhci1 {
/* SD */
vmmc-supply = <&vdd_mmc1>;
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 {
mbox_m4_0: mbox-m4-0 {
ti,mbox-rx = <0 0 0>;
ti,mbox-tx = <1 0 0>;
};
};
/*
* This system watchdog is reserved for internal use and is not user-configurable.
* It must not be modified or deleted to ensure consistent behavior!
*/
&main_rti1 { // watchdog@e010000
timeout-sec = <120>;
};
/*
* AM6232 does not have main_rti2, main_rti3, and main_rti15
* https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1218039/am623-stuck-in-sd-card-after-boot-up
*/
&main_rti2 { // watchdog@e020000
status = "disabled";
};
&main_rti3 { // watchdog@e030000
status = "disabled";
};
&main_rti15 { // watchdog@e0f0000
status = "disabled";
};
&usbss0 {
ti,vbus-divider;
};
&usb0 {
dr_mode = "peripheral";
};
+14 -2
View File
@@ -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
@@ -326,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
+20 -13
View File
@@ -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);
}
}
}
}
}
+13 -7
View File
@@ -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);