[PATCH 25/47] bsp/tms570: Add TMS570LC4357 pin config support

Sebastian Huber sebastian.huber at embedded-brains.de
Thu Dec 21 14:37:58 UTC 2023


From: Tyler Miller <tyler.miller at airbusus.com>

---
 .../arm/tms570/include/bsp/ti_herc/reg_iomm.h | 44 ++++---------------
 bsps/arm/tms570/include/bsp/tms570.h          |  3 +-
 bsps/arm/tms570/start/pinmux.c                |  4 +-
 3 files changed, 12 insertions(+), 39 deletions(-)

diff --git a/bsps/arm/tms570/include/bsp/ti_herc/reg_iomm.h b/bsps/arm/tms570/include/bsp/ti_herc/reg_iomm.h
index df56aa5f51..414110ff60 100644
--- a/bsps/arm/tms570/include/bsp/ti_herc/reg_iomm.h
+++ b/bsps/arm/tms570/include/bsp/ti_herc/reg_iomm.h
@@ -50,40 +50,7 @@
 #define LIBBSP_ARM_TMS570_IOMM
 
 #include <bsp/utility.h>
-
-typedef struct{
-  uint32_t PINMMR0;           /*Pin Multiplexing Control Register 0*/
-  uint32_t PINMMR1;           /*Pin Multiplexing Control Register 1*/
-  uint32_t PINMMR2;           /*Pin Multiplexing Control Register 2*/
-  uint32_t PINMMR3;           /*Pin Multiplexing Control Register 3*/
-  uint32_t PINMMR4;           /*Pin Multiplexing Control Register 4*/
-  uint32_t PINMMR5;           /*Pin Multiplexing Control Register 5*/
-  uint32_t PINMMR6;           /*Pin Multiplexing Control Register 6*/
-  uint32_t PINMMR7;           /*Pin Multiplexing Control Register 7*/
-  uint32_t PINMMR8;           /*Pin Multiplexing Control Register 8*/
-  uint32_t PINMMR9;           /*Pin Multiplexing Control Register 9*/
-  uint32_t PINMMR10;          /*Pin Multiplexing Control Register 10*/
-  uint32_t PINMMR11;          /*Pin Multiplexing Control Register 11*/
-  uint32_t PINMMR12;          /*Pin Multiplexing Control Register 12*/
-  uint32_t PINMMR13;          /*Pin Multiplexing Control Register 13*/
-  uint32_t PINMMR14;          /*Pin Multiplexing Control Register 14*/
-  uint32_t PINMMR15;          /*Pin Multiplexing Control Register 15*/
-  uint32_t PINMMR16;          /*Pin Multiplexing Control Register 16*/
-  uint32_t PINMMR17;          /*Pin Multiplexing Control Register 17*/
-  uint32_t PINMMR18;          /*Pin Multiplexing Control Register 18*/
-  uint32_t PINMMR19;          /*Pin Multiplexing Control Register 19*/
-  uint32_t PINMMR20;          /*Pin Multiplexing Control Register 20*/
-  uint32_t PINMMR21;          /*Pin Multiplexing Control Register 21*/
-  uint32_t PINMMR22;          /*Pin Multiplexing Control Register 22*/
-  uint32_t PINMMR23;          /*Pin Multiplexing Control Register 23*/
-  uint32_t PINMMR24;          /*Pin Multiplexing Control Register 24*/
-  uint32_t PINMMR25;          /*Pin Multiplexing Control Register 25*/
-  uint32_t PINMMR26;          /*Pin Multiplexing Control Register 26*/
-  uint32_t PINMMR27;          /*Pin Multiplexing Control Register 27*/
-  uint32_t PINMMR28;          /*Pin Multiplexing Control Register 28*/
-  uint32_t PINMMR29;          /*Pin Multiplexing Control Register 29*/
-  uint32_t PINMMR30;          /*Pin Multiplexing Control Register 30*/
-} tms570_pinmux_t;
+#include <bspopts.h>
 
 typedef struct{
   uint32_t REVISION_REG;      /*Revision Register*/
@@ -102,7 +69,14 @@ typedef struct{
   uint32_t FAULT_STATUS_REG;  /*Fault Status Register*/
   uint32_t FAULT_CLEAR_REG;   /*Fault Clear Register*/
   uint8_t reserved5 [16];
-  tms570_pinmux_t PINMUX;     /*Pin Multiplexing Control Registers*/
+#if TMS570_VARIANT == 4357
+  uint32_t PINMMR[180]; /* 0x110 - 1A4 : Output Pin Multiplexing Control
+                           Registers (38 registers); 0x250 - 0x29C : Input Pin
+                           Multiplexing Control Registers (20); 0X390 - 3DC :
+                           Special Functionality Control Registers (20) */
+#else
+  uint32_t PINMMR[30]; /*Pin Multiplexing Control Register 0-30*/
+#endif
 } tms570_iomm_t;
 
 
diff --git a/bsps/arm/tms570/include/bsp/tms570.h b/bsps/arm/tms570/include/bsp/tms570.h
index 6518653553..c057664b9a 100644
--- a/bsps/arm/tms570/include/bsp/tms570.h
+++ b/bsps/arm/tms570/include/bsp/tms570.h
@@ -131,11 +131,10 @@
 #endif
 #if TMS570_VARIANT == 4357
 #define TMS570_IOMM (*(volatile tms570_iomm_t*)0xFFFF1C00)
-#define TMS570_PINMUX (*(volatile tms570_pinmux_t*)0xFFFF1D10)
 #else
 #define TMS570_IOMM (*(volatile tms570_iomm_t*)0xFFFFEA00)
-#define TMS570_PINMUX (*(volatile tms570_pinmux_t*)0xFFFFEB10)
 #endif
+#define TMS570_PINMUX ((volatile uint32_t*)TMS570_IOMM.PINMMR)
 #define TMS570_LIN (*(volatile tms570_lin_t*)0xFFF7E400)
 #if TMS570_VARIANT == 4357
 #define TMS570_LIN2 (*(volatile tms570_lin_t*)0xFFF7E600)
diff --git a/bsps/arm/tms570/start/pinmux.c b/bsps/arm/tms570/start/pinmux.c
index 9277a36431..16eb41a129 100644
--- a/bsps/arm/tms570/start/pinmux.c
+++ b/bsps/arm/tms570/start/pinmux.c
@@ -54,7 +54,7 @@ tms570_bsp_pin_to_pinmmrx(volatile uint32_t **pinmmrx, uint32_t *pin_shift,
                           uint32_t config)
 {
   uint32_t pin_num = (config & TMS570_PIN_NUM_MASK) >> TMS570_PIN_NUM_SHIFT;
-  *pinmmrx = &TMS570_IOMM.PINMUX.PINMMR0 + (pin_num >> 2);
+  *pinmmrx = TMS570_PINMUX + (pin_num >> 2);
   *pin_shift = (pin_num & 0x3)*8;
 }
 
@@ -178,7 +178,7 @@ tms570_bsp_pinmmr_config(const uint32_t *pinmmr_values, int reg_start, int reg_c
 
   tms570_pin_config_prepare();
 
-  pinmmrx = (&TMS570_IOMM.PINMUX.PINMMR0) + reg_start;
+  pinmmrx = TMS570_PINMUX + reg_start;
   pval = pinmmr_values;
   cnt = reg_count;
 
-- 
2.35.3



More information about the devel mailing list