Skip to content

Commit a84162b

Browse files
author
Adrian Negreanu
committed
[rfc] lpc4322: swd using sgpio
Signed-off-by: Adrian Negreanu <[email protected]>
1 parent 43e7e42 commit a84162b

File tree

4 files changed

+1125
-0
lines changed

4 files changed

+1125
-0
lines changed

records/board/mimxrt1170_evk_qspi.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ common:
33
- DAPLINK_MIMXRT_TARGET
44
- SOFT_RESET=VECTRESET
55
- SWO_UART=1
6+
- SWDP_SGPIO=1
67
sources:
78
board:
89
- source/board/mimxrt1170_evk.c

source/hic_hal/nxp/lpc4322/DAP_config.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,11 +300,13 @@ __STATIC_FORCEINLINE uint32_t PIN_SWDIO_IN(void)
300300
*/
301301
__STATIC_FORCEINLINE void PIN_SWDIO_OUT(uint32_t bit)
302302
{
303+
#ifndef SWDP_SGPIO
303304
if (bit & 0x1) {
304305
X_SET(SWDIO);
305306
} else {
306307
X_CLR(SWDIO);
307308
}
309+
#endif
308310
}
309311

310312
/** SWDIO I/O pin: Switch to Output mode (used in SWD mode only).
@@ -313,8 +315,10 @@ called prior \ref PIN_SWDIO_OUT function calls.
313315
*/
314316
__STATIC_FORCEINLINE void PIN_SWDIO_OUT_ENABLE(void)
315317
{
318+
#ifndef SWDP_SGPIO
316319
X_SET(SWDIO_TXE);
317320
X_DIR_OUT(SWDIO);
321+
#endif
318322
}
319323

320324
/** SWDIO I/O pin: Switch to Input mode (used in SWD mode only).
@@ -323,8 +327,10 @@ called prior \ref PIN_SWDIO_IN function calls.
323327
*/
324328
__STATIC_FORCEINLINE void PIN_SWDIO_OUT_DISABLE(void)
325329
{
330+
#ifndef SWDP_SGPIO
326331
X_DIR_IN(SWDIO);
327332
X_CLR(SWDIO_TXE);
333+
#endif
328334
}
329335

330336

@@ -506,11 +512,21 @@ __STATIC_INLINE void DAP_SETUP(void)
506512

507513
while (!(LPC_CCU1->CLK_M4_GPIO_STAT & CCU_CLK_STAT_RUN));
508514

515+
#ifdef SWDP_SGPIO
516+
/* Table 186. Pin multiplexing. */
517+
/* SWCLK/TCK: PIN(P1_17) FUNC6(SGPIO11). TCK_SWCLK. Table 189. */
518+
scu_pinmux(1, 17, CLK_OUT, FUNC6);
519+
/* SWDIO/TMS: PIN(P1_6) FUNC6(SGPIO14). TMS_SWDIO. Table 188. */
520+
scu_pinmux(1, 6, INBUF_ENABLE | PUP_DISABLE | SLEWRATE_FAST, FUNC6);
521+
/* SWDIO/TXEN: PIN(P1_5) FUNC6(SGPIO15). TMS_SWDIO_TXEN. */
522+
scu_pinmux(1, 5, PUP_DISABLE | SLEWRATE_FAST, FUNC6);
523+
#else
509524
/* Configure I/O pins: function number, input buffer enabled, */
510525
/* no pull-up/down */
511526
scu_pinmux(1, 17, GPIO_NOPULL, FUNC0); /* SWCLK/TCK: GPIO0[12] */
512527
scu_pinmux(1, 6, GPIO_NOPULL, FUNC0); /* SWDIO/TMS: GPIO1[9] */
513528
scu_pinmux(1, 5, GPIO_NOPULL, FUNC0); /* SWDIO_OE: GPIO1[8] */
529+
#endif
514530
}
515531

516532
/** Reset Target Device with custom specific I/O pin or command sequence.

source/hic_hal/nxp/lpc4322/gpio.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ void gpio_init(void)
8989
X_DIR_IN(SWO);
9090
#endif
9191

92+
#ifdef SWDP_SGPIO
93+
extern void sgpio_init(void);
94+
sgpio_init();
95+
#endif
96+
9297
busy_wait(10000);
9398
}
9499

0 commit comments

Comments
 (0)