This introduces PSIL data specific to AM62L SoC. Based on U-Boot
downstream commit:

| commit 3e91f4443a2b01e1a313ee3ecfe2a082c88402af
| Author: Vignesh Raghavendra <vigne...@ti.com>
| Date:   Wed Feb 26 19:55:43 2025 +0530
|
|    PENDING: dma: ti: k3-psil: Add PSIL data for AM62L
|
|    This introduces PSIL data specific to AM62L SoC
|
|    Signed-off-by: Vignesh Raghavendra <vigne...@ti.com>

Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>
---
 drivers/dma/ti/Makefile        |  2 +-
 drivers/dma/ti/k3-psil-am62l.c | 50 ++++++++++++++++++++++++++++++++++++++++++
 drivers/dma/ti/k3-psil-priv.h  |  1 +
 drivers/dma/ti/k3-psil.c       |  2 ++
 4 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/drivers/dma/ti/Makefile b/drivers/dma/ti/Makefile
index 
f449429e2a23633a7dadbda1470104d52d49e5e8..b7dfff07210537660965d235c10ea7345c22b0a6
 100644
--- a/drivers/dma/ti/Makefile
+++ b/drivers/dma/ti/Makefile
@@ -1 +1 @@
-obj-$(CONFIG_TI_K3_UDMA) += k3-udma.o k3-psil.o
+obj-$(CONFIG_TI_K3_UDMA) += k3-udma.o k3-psil.o k3-psil-am62l.o
diff --git a/drivers/dma/ti/k3-psil-am62l.c b/drivers/dma/ti/k3-psil-am62l.c
new file mode 100644
index 
0000000000000000000000000000000000000000..972895ec56fb4278e958ffa7ec88819e8fbf23ee
--- /dev/null
+++ b/drivers/dma/ti/k3-psil-am62l.c
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com
+ */
+
+#include <linux/kernel.h>
+
+#include "k3-psil-priv.h"
+
+#define PSIL_ETHERNET(x, ch, flow_base, flow_cnt)              \
+       {                                                       \
+               .thread_id = x,                                 \
+               .ep_config = {                                  \
+                       .ep_type = PSIL_EP_NATIVE,              \
+                       .pkt_mode = 1,                          \
+                       .needs_epib = 1,                        \
+                       .psd_size = 16,                         \
+                       .mapped_channel_id = ch,                \
+                       .flow_start = flow_base,                \
+                       .flow_num = flow_cnt,                   \
+                       .default_flow_id = flow_base,           \
+               },                                              \
+       }
+
+/* PSI-L source thread IDs, used for RX (DMA_DEV_TO_MEM) */
+static struct psil_ep am62l_src_ep_map[] = {
+       /* CPSW3G */
+       PSIL_ETHERNET(0x4600, 96, 96, 16),
+};
+
+/* PSI-L destination thread IDs, used for TX (DMA_MEM_TO_DEV) */
+static struct psil_ep am62l_dst_ep_map[] = {
+       /* CPSW3G */
+       PSIL_ETHERNET(0xc600, 64, 64, 2),
+       PSIL_ETHERNET(0xc601, 66, 66, 2),
+       PSIL_ETHERNET(0xc602, 68, 68, 2),
+       PSIL_ETHERNET(0xc603, 70, 70, 2),
+       PSIL_ETHERNET(0xc604, 72, 72, 2),
+       PSIL_ETHERNET(0xc605, 74, 74, 2),
+       PSIL_ETHERNET(0xc606, 76, 76, 2),
+       PSIL_ETHERNET(0xc607, 78, 78, 2),
+};
+
+struct psil_ep_map am62l_ep_map = {
+       .name = "am62l",
+       .src = am62l_src_ep_map,
+       .src_count = ARRAY_SIZE(am62l_src_ep_map),
+       .dst = am62l_dst_ep_map,
+       .dst_count = ARRAY_SIZE(am62l_dst_ep_map),
+};
diff --git a/drivers/dma/ti/k3-psil-priv.h b/drivers/dma/ti/k3-psil-priv.h
index 
b80916a7ff8fa728ca41f1dbabc1817bde69cf6e..d00ef99867a4f146621550c9eb308958ca8d182c
 100644
--- a/drivers/dma/ti/k3-psil-priv.h
+++ b/drivers/dma/ti/k3-psil-priv.h
@@ -45,5 +45,6 @@ extern struct psil_ep_map am62_ep_map;
 extern struct psil_ep_map am62a_ep_map;
 extern struct psil_ep_map j784s4_ep_map;
 extern struct psil_ep_map am62p_ep_map;
+extern struct psil_ep_map am62l_ep_map;
 
 #endif /* K3_PSIL_PRIV_H_ */
diff --git a/drivers/dma/ti/k3-psil.c b/drivers/dma/ti/k3-psil.c
index 
58f39c0453e9724ad28680fa375a031529687ed8..f517da7afcac17d502af3002494c2cd7cbf7322b
 100644
--- a/drivers/dma/ti/k3-psil.c
+++ b/drivers/dma/ti/k3-psil.c
@@ -62,6 +62,8 @@ struct psil_endpoint_config *psil_get_ep_config(u32 thread_id)
        if (!soc_ep_map) {
                if (of_machine_is_compatible("ti,am625"))
                        soc_ep_map = &am62_ep_map;
+               else if (of_machine_is_compatible("ti,am62l3"))
+                       soc_ep_map = &am62l_ep_map;
        }
 
        if (!soc_ep_map) {

-- 
2.39.5


Reply via email to