From 88fb406a558f7a671d40aaab3c00c82b0d44087a Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Thu, 27 Dec 2018 10:10:01 -0800 Subject: [PATCH] PortaPack: Conditionally claim JTAG pins in SCU #defines --- firmware/common/cpld_jtag.c | 16 ++++++++++++++++ firmware/common/cpld_jtag.h | 4 ++++ firmware/common/hackrf_core.c | 9 +++++++++ firmware/common/hackrf_core.h | 8 ++++++++ 4 files changed, 37 insertions(+) diff --git a/firmware/common/cpld_jtag.c b/firmware/common/cpld_jtag.c index ca117ccc..3e34f0b9 100644 --- a/firmware/common/cpld_jtag.c +++ b/firmware/common/cpld_jtag.c @@ -34,11 +34,19 @@ void cpld_jtag_setup(jtag_t* const jtag) { scu_pinmux(SCU_PINMUX_CPLD_TCK, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); scu_pinmux(SCU_PINMUX_CPLD_TMS, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); scu_pinmux(SCU_PINMUX_CPLD_TDI, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); +#ifdef USER_INTERFACE_PORTAPACK + scu_pinmux(SCU_PINMUX_PP_TMS, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); + scu_pinmux(SCU_PINMUX_PP_TDO, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); +#endif gpio_input(jtag->gpio->gpio_tdo); gpio_output(jtag->gpio->gpio_tck); gpio_output(jtag->gpio->gpio_tms); gpio_output(jtag->gpio->gpio_tdi); +#ifdef USER_INTERFACE_PORTAPACK + gpio_output(jtag->gpio->gpio_pp_tms); + gpio_input(jtag->gpio->gpio_pp_tdo); +#endif } /* set pins as inputs so we don't interfere with an external JTAG device */ @@ -47,11 +55,19 @@ void cpld_jtag_release(jtag_t* const jtag) { scu_pinmux(SCU_PINMUX_CPLD_TCK, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); scu_pinmux(SCU_PINMUX_CPLD_TMS, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); scu_pinmux(SCU_PINMUX_CPLD_TDI, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); +#ifdef USER_INTERFACE_PORTAPACK + scu_pinmux(SCU_PINMUX_PP_TMS, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); + scu_pinmux(SCU_PINMUX_PP_TDO, SCU_GPIO_NOPULL | SCU_CONF_FUNCTION0); +#endif gpio_input(jtag->gpio->gpio_tdo); gpio_input(jtag->gpio->gpio_tck); gpio_input(jtag->gpio->gpio_tms); gpio_input(jtag->gpio->gpio_tdi); +#ifdef USER_INTERFACE_PORTAPACK + gpio_input(jtag->gpio->gpio_pp_tms); + gpio_input(jtag->gpio->gpio_pp_tdo); +#endif } /* return 0 if success else return error code see xsvfExecute() */ diff --git a/firmware/common/cpld_jtag.h b/firmware/common/cpld_jtag.h index 5805bbc8..f8ce0b0e 100644 --- a/firmware/common/cpld_jtag.h +++ b/firmware/common/cpld_jtag.h @@ -31,6 +31,10 @@ typedef struct jtag_gpio_t { gpio_t gpio_tck; gpio_t gpio_tdi; gpio_t gpio_tdo; +#ifdef USER_INTERFACE_PORTAPACK + gpio_t gpio_pp_tms; + gpio_t gpio_pp_tdo; +#endif } jtag_gpio_t; typedef struct jtag_t { diff --git a/firmware/common/hackrf_core.c b/firmware/common/hackrf_core.c index 028f9cc7..81fbf1f8 100644 --- a/firmware/common/hackrf_core.c +++ b/firmware/common/hackrf_core.c @@ -123,6 +123,11 @@ static struct gpio_t gpio_cpld_tms = GPIO(3, 1); static struct gpio_t gpio_cpld_tdi = GPIO(3, 4); #endif +#ifdef USER_INTERFACE_PORTAPACK +static struct gpio_t gpio_cpld_pp_tms = GPIO(1, 1); +static struct gpio_t gpio_cpld_pp_tdo = GPIO(1, 8); +#endif + static struct gpio_t gpio_hw_sync_enable = GPIO(5,12); static struct gpio_t gpio_rx_q_invert = GPIO(0, 13); @@ -270,6 +275,10 @@ jtag_gpio_t jtag_gpio_cpld = { .gpio_tck = &gpio_cpld_tck, .gpio_tdi = &gpio_cpld_tdi, .gpio_tdo = &gpio_cpld_tdo, +#ifdef USER_INTERFACE_PORTAPACK + .gpio_pp_tms = &gpio_cpld_pp_tms, + .gpio_pp_tdo = &gpio_cpld_pp_tdo, +#endif }; jtag_t jtag_cpld = { diff --git a/firmware/common/hackrf_core.h b/firmware/common/hackrf_core.h index 1b1fc5f7..ddfbbf60 100644 --- a/firmware/common/hackrf_core.h +++ b/firmware/common/hackrf_core.h @@ -235,9 +235,17 @@ extern "C" #define SCU_PINMUX_GPIO3_15 (P7_7) /* GPIO3[15] */ #endif +#ifdef USER_INTERFACE_PORTAPACK +#define SCU_PINMUX_PP_TDO (P1_5) /* GPIO1[8] */ +#else #define SCU_PINMUX_SD_POW (P1_5) /* GPIO1[8] */ +#endif #define SCU_PINMUX_SD_CMD (P1_6) /* GPIO1[9] */ +#ifdef USER_INTERFACE_PORTAPACK +#define SCU_PINMUX_PP_TMS (P1_8) /* GPIO1[1] */ +#else #define SCU_PINMUX_SD_VOLT0 (P1_8) /* GPIO1[1] */ +#endif #define SCU_PINMUX_SD_DAT0 (P1_9) /* GPIO1[2] */ #define SCU_PINMUX_SD_DAT1 (P1_10) /* GPIO1[3] */ #define SCU_PINMUX_SD_DAT2 (P1_11) /* GPIO1[4] */