Thread (10 messages) 10 messages, 4 authors, 2026-02-26

Re: [PATCH v4 2/2] arm: dts: ti: Adds support for AM335x and AM437x

From: Parvathi Pudi <parvathi@couthit.com>
Date: 2026-01-08 12:02:42
Also in: linux-devicetree, linux-omap, lkml

Hi,
On 1/5/26 10:21 AM, Parvathi Pudi wrote:
quoted
From: Roger Quadros <redacted>

PRU-ICSS instance consists of two PRU cores along with various
peripherals such as the Interrupt Controller (PRU_INTC), the Industrial
Ethernet Peripheral(IEP), the Real Time Media Independent Interface
controller (MII_RT), and the Enhanced Capture (eCAP) event module.

The TI Sitara AM335x ICE-V2 consists of single PRU-ICSS instance,
This patch adds the new device tree overlay file in-order to enable
PRU-ICSS instance, along with makefile changes.

The TI Sitara AM437x series of devices consists of 2 PRU-ICSS instances
(PRU-ICSS0 and PRU-ICSS1). This patch adds the device tree nodes for the
PRU-ICSS1 instance to support DUAL-MAC mode of operation. Support for
Ethernet over PRU is available only for ICSS1 instance.

am33xx-l4.dtsi, am4372.dtsi - Adds IEP and eCAP peripheral as child nodes
of the PRUSS subsystem node.

am335x-icev2-prueth.dtso, am437x-idk-evm.dts - Adds PRU-ICSS
instance node along with PRU eth port information and corresponding
port configuration. It includes interrupt mapping for packet reception,
HW timestamp collection, and PRU Ethernet ports in MII mode,

GPIO configuration, boot strapping along with delay configuration for
individual PRU Ethernet port and other required nodes.

Signed-off-by: Roger Quadros <redacted>
Signed-off-by: Andrew F. Davis <redacted>
Signed-off-by: Murali Karicheri <redacted>
Signed-off-by: Basharath Hussain Khaja <redacted>
Signed-off-by: Parvathi Pudi <parvathi@couthit.com>
---
  arch/arm/boot/dts/ti/omap/Makefile            |   5 +
  .../ti/omap/am335x-icev2-prueth-overlay.dtso  | 190 ++++++++++++++++++
  arch/arm/boot/dts/ti/omap/am33xx-l4.dtsi      |  11 +
  arch/arm/boot/dts/ti/omap/am4372.dtsi         |  11 +
  arch/arm/boot/dts/ti/omap/am437x-idk-evm.dts  | 137 ++++++++++++-
  5 files changed, 353 insertions(+), 1 deletion(-)
  create mode 100644 arch/arm/boot/dts/ti/omap/am335x-icev2-prueth-overlay.dtso
diff --git a/arch/arm/boot/dts/ti/omap/Makefile
b/arch/arm/boot/dts/ti/omap/Makefile
index 14e500846875..c68948035eca 100644
--- a/arch/arm/boot/dts/ti/omap/Makefile
+++ b/arch/arm/boot/dts/ti/omap/Makefile
@@ -82,6 +82,10 @@ dtb-$(CONFIG_ARCH_OMAP4) += \
  	omap4-var-stk-om44.dtb \
  	omap4-xyboard-mz609.dtb \
  	omap4-xyboard-mz617.dtb
+
+am335x-icev2-prueth-dtbs := am335x-icev2.dtb \
+	am335x-icev2-prueth-overlay.dtbo
+
  dtb-$(CONFIG_SOC_AM33XX) += \
  	am335x-baltos-ir2110.dtb \
  	am335x-baltos-ir3220.dtb \
@@ -100,6 +104,7 @@ dtb-$(CONFIG_SOC_AM33XX) += \
  	am335x-evmsk.dtb \
  	am335x-guardian.dtb \
  	am335x-icev2.dtb \
+	am335x-icev2-prueth.dtb \
  	am335x-lxm.dtb \
  	am335x-mba335x.dtb \
  	am335x-moxa-uc-2101.dtb \
diff --git a/arch/arm/boot/dts/ti/omap/am335x-icev2-prueth-overlay.dtso
b/arch/arm/boot/dts/ti/omap/am335x-icev2-prueth-overlay.dtso
new file mode 100644
index 000000000000..abde5119875f
--- /dev/null
+++ b/arch/arm/boot/dts/ti/omap/am335x-icev2-prueth-overlay.dtso
@@ -0,0 +1,190 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * DT overlay for IDK AM335x
+ *
+ * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+ */
+
+/*
+ * AM335x ICE V2 board
+ * http://www.ti.com/tool/tmdsice3359
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/bus/ti-sysc.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/am33xx.h>
+#include <dt-bindings/clock/am3.h>
+
+&{/} {
+        /* Dual-MAC Ethernet application node on PRU-ICSS */
+        pruss_eth: pruss-eth {
+                compatible = "ti,am3359-prueth";
+                ti,prus = <&pru0>, <&pru1>;
+                sram = <&ocmcram>;
+                ti,mii-rt = <&pruss_mii_rt>;
+                ti,iep = <&pruss_iep>;
+                ti,ecap = <&pruss_ecap>;
+                interrupts = <20 2 2>, <21 3 3>;
+                interrupt-names = "rx_hp", "rx_lp";
+                interrupt-parent = <&pruss_intc>;
+
+                pinctrl-0 = <&pruss_eth_default>;
+                pinctrl-names = "default";
+
+                ethernet-ports {
+                        #address-cells = <1>;
+                        #size-cells = <0>;
+                        pruss_emac0: ethernet-port@0 {
+                                reg = <0>;
+                                phy-handle = <&pruss_eth0_phy>;
+                                phy-mode = "mii";
+                                interrupts = <20 2 2>, <26 6 6>, <23 6 6>;
+                                interrupt-names = "rx", "emac_ptp_tx",
+                                                  "hsr_ptp_tx";
+                                /* Filled in by bootloader */
+                                local-mac-address = [00 00 00 00 00 00];
+                        };
+
+                        pruss_emac1: ethernet-port@1 {
+                                reg = <1>;
+                                phy-handle = <&pruss_eth1_phy>;
+                                phy-mode = "mii";
+                                interrupts = <21 3 3>, <27 9 7>, <24 9 7>;
+                                interrupt-names = "rx", "emac_ptp_tx",
+                                                  "hsr_ptp_tx";
+                                /* Filled in by bootloader */
+                                local-mac-address = [00 00 00 00 00 00];
+                        };
+                };
+        };
+};
+
+&am33xx_pinmux {
+	/* MDIO node for PRU-ICSS */
+        pruss_mdio_default: pruss_mdio_default {
+                pinctrl-single,pins = <
+                        /* gpmc_clk.pr1_mdio_mdclk */
+                        AM33XX_PADCONF(0x88c, PIN_OUTPUT, MUX_MODE5)
+                        /* gpmc_csn3.pr1_mdio_data */
+                        AM33XX_PADCONF(0x888, PIN_INPUT, MUX_MODE5)
Have you regenerated this list lately? The pinmux tool usually puts the
comment after the PADCONF entry. It also now also shows the pin number
in the comment which is nice:

AM33XX_IOPAD(0x88c, PIN_OUTPUT, MUX_MODE5) /* (V12) gpmc_clk.pr1_mdio_mdclk */
AM33XX_IOPAD(0x888, PIN_INPUT, MUX_MODE5) /* (T13) gpmc_csn3.pr1_mdio_data */

I'd recommend regenerating these nodes to match the latest pinmux tool output.
Sure, we will check and regenerate these nodes using the pinmux tool and
update accordingly.
quoted
+                        /* gpmc_ben0_cle.gpio2_5 */
+                        AM33XX_PADCONF(0x89c, PIN_INPUT_PULLUP, MUX_MODE7)
+                        /* disable CPSW MDIO */
Is this needed? If you disable the CPSW MDIO node the pinmux should be unset,
so not sure why you are muxing these to GPIO pins.
We will review and get back with more details on this.
Also, this patch is a bit busy, might be easier to review if you split it
into one for AM335x and one for AM437x changes.
We will split the changes into two patches, one for AM335x
and one for AM437x, and address this in the next version.


Thanks and Regards,
Parvathi.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help