summaryrefslogtreecommitdiffstats
path: root/bsps/arm
diff options
context:
space:
mode:
authorTyler Miller <tyler.miller@airbusus.com>2023-12-21 15:16:48 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2024-01-15 10:33:26 +0100
commit4f6fa9746da0e1a4b9643325fa55e0056d1de304 (patch)
tree571d09e79c0f68c65918fbddb751d5bc85e8fb83 /bsps/arm
parentbsp/tms570: Remove double pin configuration (diff)
downloadrtems-4f6fa9746da0e1a4b9643325fa55e0056d1de304.tar.bz2
bsp/tms570: Add TMS570LC4357 pin config support
Update #4982.
Diffstat (limited to 'bsps/arm')
-rw-r--r--bsps/arm/tms570/include/bsp/ti_herc/reg_iomm.h44
-rw-r--r--bsps/arm/tms570/include/bsp/tms570.h3
-rw-r--r--bsps/arm/tms570/start/pinmux.c4
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;