From 49257e60e30f4c416c3f6be2b4e05d956a3a41be Mon Sep 17 00:00:00 2001 From: Dominic Spill Date: Tue, 14 Feb 2017 17:59:29 -0700 Subject: [PATCH] Remove Jellybean support from firmware - nobody has a jellybean board --- firmware/common/hackrf_core.c | 103 +++---------------------------- firmware/common/hackrf_core.h | 26 +------- firmware/common/max2837.h | 10 --- firmware/common/max2837_target.c | 31 ---------- firmware/common/si5351c.c | 53 ---------------- host/libhackrf/src/hackrf.c | 11 ++-- 6 files changed, 12 insertions(+), 222 deletions(-) diff --git a/firmware/common/hackrf_core.c b/firmware/common/hackrf_core.c index 185dc5b7..b41870d5 100644 --- a/firmware/common/hackrf_core.c +++ b/firmware/common/hackrf_core.c @@ -62,21 +62,17 @@ static struct gpio_t gpio_max2837_select = GPIO(0, 15); static struct gpio_t gpio_max2837_enable = GPIO(2, 6); static struct gpio_t gpio_max2837_rx_enable = GPIO(2, 5); static struct gpio_t gpio_max2837_tx_enable = GPIO(2, 4); -#ifdef JELLYBEAN -static struct gpio_t gpio_max2837_rxhp = GPIO(2, 0); -static struct gpio_t gpio_max2837_b1 = GPIO(2, 9); -static struct gpio_t gpio_max2837_b2 = GPIO(2, 10); -static struct gpio_t gpio_max2837_b3 = GPIO(2, 11); -static struct gpio_t gpio_max2837_b4 = GPIO(2, 12); -static struct gpio_t gpio_max2837_b5 = GPIO(2, 13); -static struct gpio_t gpio_max2837_b6 = GPIO(2, 14); -static struct gpio_t gpio_max2837_b7 = GPIO(2, 15); -#endif /* MAX5864 SPI chip select (AD_CS) GPIO PinMux */ static struct gpio_t gpio_max5864_select = GPIO(2, 7); +/* RFFC5071 GPIO serial interface PinMux */ #if (defined JAWBREAKER || defined HACKRF_ONE || defined RAD1O) +static struct gpio_t gpio_rffc5072_select = GPIO(2, 13); +static struct gpio_t gpio_rffc5072_clock = GPIO(5, 6); +static struct gpio_t gpio_rffc5072_data = GPIO(3, 3); +static struct gpio_t gpio_rffc5072_reset = GPIO(2, 14); + /* static struct gpio_t gpio_sync_in_a = GPIO(3, 8); static struct gpio_t gpio_sync_in_b = GPIO(3, 9); @@ -232,16 +228,6 @@ max2837_driver_t max2837 = { .gpio_enable = &gpio_max2837_enable, .gpio_rx_enable = &gpio_max2837_rx_enable, .gpio_tx_enable = &gpio_max2837_tx_enable, -#ifdef JELLYBEAN - .gpio_rxhp = &gpio_max2837_rxhp, - .gpio_b1 = &gpio_max2837_b1, - .gpio_b2 = &gpio_max2837_b2, - .gpio_b3 = &gpio_max2837_b3, - .gpio_b4 = &gpio_max2837_b4, - .gpio_b5 = &gpio_max2837_b5, - .gpio_b6 = &gpio_max2837_b6, - .gpio_b7 = &gpio_max2837_b7, -#endif .target_init = max2837_target_init, .set_mode = max2837_target_set_mode, }; @@ -434,53 +420,6 @@ bool sample_rate_frac_set(uint32_t rate_num, uint32_t rate_denom) } bool sample_rate_set(const uint32_t sample_rate_hz) { -#ifdef JELLYBEAN - /* Due to design issues, Jellybean/Lemondrop frequency plan is limited. - * Long version of the story: The MAX2837 reference frequency - * originates from the same PLL as the sample clocks, and in order to - * keep the sample clocks in phase and keep jitter noise down, the MAX2837 - * and sample clocks must be integer-related. - */ - uint32_t r_div_sample = 2; - uint32_t r_div_sgpio = 1; - - switch( sample_rate_hz ) { - case 5000000: - r_div_sample = 3; /* 800 MHz / 20 / 8 = 5 MHz */ - r_div_sgpio = 2; /* 800 MHz / 20 / 4 = 10 MHz */ - break; - - case 10000000: - r_div_sample = 2; /* 800 MHz / 20 / 4 = 10 MHz */ - r_div_sgpio = 1; /* 800 MHz / 20 / 2 = 20 MHz */ - break; - - case 20000000: - r_div_sample = 1; /* 800 MHz / 20 / 2 = 20 MHz */ - r_div_sgpio = 0; /* 800 MHz / 20 / 1 = 40 MHz */ - break; - - default: - return false; - } - - hackrf_ui_setSampleRate(sample_rate_hz); - - /* NOTE: Because MS1, 2, 3 outputs are slaved to PLLA, the p1, p2, p3 - * values are irrelevant. */ - - /* MS0/CLK1 is the source for the MAX5864 codec. */ - si5351c_configure_multisynth(&clock_gen, 1, 4608, 0, 1, r_div_sample); - - /* MS0/CLK2 is the source for the CPLD codec clock (same as CLK1). */ - si5351c_configure_multisynth(&clock_gen, 2, 4608, 0, 1, r_div_sample); - - /* MS0/CLK3 is the source for the SGPIO clock. */ - si5351c_configure_multisynth(&clock_gen, 3, 4608, 0, 1, r_div_sgpio); - - return true; -#endif - #if (defined JAWBREAKER || defined HACKRF_ONE || defined RAD1O) uint32_t p1 = 4608; uint32_t p2 = 0; @@ -574,29 +513,6 @@ void cpu_clock_init(void) si5351c_configure_pll_sources(&clock_gen); si5351c_configure_pll_multisynth(&clock_gen); -#ifdef JELLYBEAN - /* - * Jellybean/Lemondrop clocks: - * CLK0 -> MAX2837 - * CLK1 -> MAX5864/CPLD.GCLK0 - * CLK2 -> CPLD.GCLK1 - * CLK3 -> CPLD.GCLK2 - * CLK4 -> LPC4330 - * CLK5 -> RFFC5072 - * CLK6 -> extra - * CLK7 -> extra - */ - - /* MS0/CLK0 is the source for the MAX2837 clock input. */ - si5351c_configure_multisynth(&clock_gen, 0, 2048, 0, 1, 0); /* 40MHz */ - - /* MS4/CLK4 is the source for the LPC43xx microcontroller. */ - si5351c_configure_multisynth(&clock_gen, 4, 8021, 0, 3, 0); /* 12MHz */ - - /* MS5/CLK5 is the source for the RFFC5071 mixer. */ - si5351c_configure_multisynth(&clock_gen, 5, 1536, 0, 1, 0); /* 50MHz */ -#endif - #if (defined JAWBREAKER || defined HACKRF_ONE) /* * Jawbreaker clocks: @@ -674,11 +590,6 @@ void cpu_clock_init(void) //FIXME a lot of the details here should be in a CGU driver -#ifdef JELLYBEAN - /* configure xtal oscillator for external clock input signal */ - CGU_XTAL_OSC_CTRL |= CGU_XTAL_OSC_CTRL_BYPASS; -#endif - /* set xtal oscillator to low frequency mode */ CGU_XTAL_OSC_CTRL &= ~CGU_XTAL_OSC_CTRL_HF_MASK; @@ -936,7 +847,7 @@ void pin_setup(void) { scu_pinmux(SCU_PINMUX_EN1V8, SCU_GPIO_NOPULL); /* Configure USB indicators */ -#if (defined JELLYBEAN || defined JAWBREAKER) +#ifdef JAWBREAKER scu_pinmux(SCU_PINMUX_USB_LED0, SCU_CONF_FUNCTION3); scu_pinmux(SCU_PINMUX_USB_LED1, SCU_CONF_FUNCTION3); #endif diff --git a/firmware/common/hackrf_core.h b/firmware/common/hackrf_core.h index 82cfc52c..fbace49f 100644 --- a/firmware/common/hackrf_core.h +++ b/firmware/common/hackrf_core.h @@ -44,15 +44,10 @@ extern "C" #include "cpld_jtag.h" /* hardware identification number */ -#define BOARD_ID_JELLYBEAN 0 #define BOARD_ID_JAWBREAKER 1 #define BOARD_ID_HACKRF_ONE 2 #define BOARD_ID_RAD1O 3 -#ifdef JELLYBEAN -#define BOARD_ID BOARD_ID_JELLYBEAN -#endif - #ifdef JAWBREAKER #define BOARD_ID BOARD_ID_JAWBREAKER #endif @@ -86,7 +81,7 @@ extern "C" #define SCU_PINMUX_BOOT3 (P2_9) /* GPIO1[10] on P2_9 */ /* USB peripheral */ -#if (defined JELLYBEAN || defined JAWBREAKER) +#ifdef JAWBREAKER #define SCU_PINMUX_USB_LED0 (P6_8) #define SCU_PINMUX_USB_LED1 (P6_7) #endif @@ -117,9 +112,6 @@ extern "C" #define SCU_PINMUX_SGPIO5 (P6_6) #define SCU_PINMUX_SGPIO6 (P2_2) #define SCU_PINMUX_SGPIO7 (P1_0) -#ifdef JELLYBEAN -#define SCU_PINMUX_SGPIO8 (P1_12) -#endif #if (defined JAWBREAKER || defined HACKRF_ONE || defined RAD1O) #define SCU_PINMUX_SGPIO8 (P9_6) #endif @@ -132,16 +124,6 @@ extern "C" #define SCU_PINMUX_SGPIO15 (P4_10) /* MAX2837 GPIO (XCVR_CTL) PinMux */ -#ifdef JELLYBEAN -#define SCU_XCVR_RXHP (P4_0) /* GPIO2[0] on P4_0 */ -#define SCU_XCVR_B1 (P5_0) /* GPIO2[9] on P5_0 */ -#define SCU_XCVR_B2 (P5_1) /* GPIO2[10] on P5_1 */ -#define SCU_XCVR_B3 (P5_2) /* GPIO2[11] on P5_2 */ -#define SCU_XCVR_B4 (P5_3) /* GPIO2[12] on P5_3 */ -#define SCU_XCVR_B5 (P5_4) /* GPIO2[13] on P5_4 */ -#define SCU_XCVR_B6 (P5_5) /* GPIO2[14] on P5_5 */ -#define SCU_XCVR_B7 (P5_6) /* GPIO2[15] on P5_6 */ -#endif #ifdef RAD1O #define SCU_XCVR_RXHP (P8_1) /* GPIO[] on P8_1 */ #define SCU_XCVR_B6 (P8_2) /* GPIO[] on P8_2 */ @@ -157,12 +139,6 @@ extern "C" #define SCU_AD_CS (P5_7) /* GPIO2[7] on P5_7 */ /* RFFC5071 GPIO serial interface PinMux */ -#ifdef JELLYBEAN -#define SCU_MIXER_ENX (P7_0) /* GPIO3[8] on P7_0 */ -#define SCU_MIXER_SCLK (P7_1) /* GPIO3[9] on P7_1 */ -#define SCU_MIXER_SDATA (P7_2) /* GPIO3[10] on P7_2 */ -#define SCU_MIXER_RESETX (P7_3) /* GPIO3[11] on P7_3 */ -#endif #if (defined JAWBREAKER || defined HACKRF_ONE) #define SCU_MIXER_ENX (P5_4) /* GPIO2[13] on P5_4 */ #define SCU_MIXER_SCLK (P2_6) /* GPIO5[6] on P2_6 */ diff --git a/firmware/common/max2837.h b/firmware/common/max2837.h index dcf6829c..a353b88f 100644 --- a/firmware/common/max2837.h +++ b/firmware/common/max2837.h @@ -48,16 +48,6 @@ struct max2837_driver_t { gpio_t gpio_enable; gpio_t gpio_rx_enable; gpio_t gpio_tx_enable; -#ifdef JELLYBEAN - gpio_t gpio_rxhp; - gpio_t gpio_b1; - gpio_t gpio_b2; - gpio_t gpio_b3; - gpio_t gpio_b4; - gpio_t gpio_b5; - gpio_t gpio_b6; - gpio_t gpio_b7; -#endif void (*target_init)(max2837_driver_t* const drv); void (*set_mode)(max2837_driver_t* const drv, const max2837_mode_t new_mode); max2837_mode_t mode; diff --git a/firmware/common/max2837_target.c b/firmware/common/max2837_target.c index dc78b4fa..13cc7165 100644 --- a/firmware/common/max2837_target.c +++ b/firmware/common/max2837_target.c @@ -34,16 +34,6 @@ void max2837_target_init(max2837_driver_t* const drv) { scu_pinmux(SCU_XCVR_CS, SCU_GPIO_FAST); /* Configure XCVR_CTL GPIO pins. */ -#ifdef JELLYBEAN - scu_pinmux(SCU_XCVR_RXHP, SCU_GPIO_FAST); - scu_pinmux(SCU_XCVR_B1, SCU_GPIO_FAST); - scu_pinmux(SCU_XCVR_B2, SCU_GPIO_FAST); - scu_pinmux(SCU_XCVR_B3, SCU_GPIO_FAST); - scu_pinmux(SCU_XCVR_B4, SCU_GPIO_FAST); - scu_pinmux(SCU_XCVR_B5, SCU_GPIO_FAST); - scu_pinmux(SCU_XCVR_B6, SCU_GPIO_FAST); - scu_pinmux(SCU_XCVR_B7, SCU_GPIO_FAST); -#endif scu_pinmux(SCU_XCVR_ENABLE, SCU_GPIO_FAST); scu_pinmux(SCU_XCVR_RXENABLE, SCU_GPIO_FAST); scu_pinmux(SCU_XCVR_TXENABLE, SCU_GPIO_FAST); @@ -52,27 +42,6 @@ void max2837_target_init(max2837_driver_t* const drv) { gpio_output(drv->gpio_enable); gpio_output(drv->gpio_rx_enable); gpio_output(drv->gpio_tx_enable); -#ifdef JELLYBEAN - gpio_output(drv->gpio_rxhp); - gpio_output(drv->gpio_b1); - gpio_output(drv->gpio_b2); - gpio_output(drv->gpio_b3); - gpio_output(drv->gpio_b4); - gpio_output(drv->gpio_b5); - gpio_output(drv->gpio_b6); - gpio_output(drv->gpio_b7); -#endif - -#ifdef JELLYBEAN - gpio_set(drv->gpio_rxhp); - gpio_set(drv->gpio_b1); - gpio_set(drv->gpio_b2); - gpio_set(drv->gpio_b3); - gpio_set(drv->gpio_b4); - gpio_set(drv->gpio_b5); - gpio_set(drv->gpio_b6); - gpio_set(drv->gpio_b7); -#endif } void max2837_target_set_mode(max2837_driver_t* const drv, const max2837_mode_t new_mode) { diff --git a/firmware/common/si5351c.c b/firmware/common/si5351c.c index 89932191..465b2370 100644 --- a/firmware/common/si5351c.c +++ b/firmware/common/si5351c.c @@ -164,59 +164,6 @@ void si5351c_configure_multisynth(si5351c_driver_t* const drv, si5351c_write(drv, data, sizeof(data)); } -#ifdef JELLYBEAN -/* - * Registers 16 through 23: CLKx Control - * CLK0: - * CLK0_PDN=0 (powered up) - * MS0_INT=1 (integer mode) - * MS0_SRC=0 (PLLA as source for MultiSynth 0) - * CLK0_INV=0 (not inverted) - * CLK0_SRC=3 (MS0 as input source) - * CLK0_IDRV=3 (8mA) - * CLK1: - * CLK1_PDN=0 (powered up) - * MS1_INT=1 (integer mode) - * MS1_SRC=0 (PLLA as source for MultiSynth 1) - * CLK1_INV=0 (not inverted) - * CLK1_SRC=2 (MS0 as input source) - * CLK1_IDRV=3 (8mA) - * CLK2: - * CLK2_PDN=0 (powered up) - * MS2_INT=1 (integer mode) - * MS2_SRC=0 (PLLA as source for MultiSynth 2) - * CLK2_INV=0 (not inverted) - * CLK2_SRC=2 (MS0 as input source) - * CLK2_IDRV=3 (8mA) - * CLK3: - * CLK3_PDN=0 (powered up) - * MS3_INT=1 (integer mode) - * MS3_SRC=0 (PLLA as source for MultiSynth 3) - * CLK3_INV=0 (inverted) - * CLK3_SRC=2 (MS0 as input source) - * CLK3_IDRV=3 (8mA) - * CLK4: - * CLK4_PDN=0 (powered up) - * MS4_INT=0 (fractional mode -- to support 12MHz to LPC for USB DFU) - * MS4_SRC=0 (PLLA as source for MultiSynth 4) - * CLK4_INV=0 (not inverted) - * CLK4_SRC=3 (MS4 as input source) - * CLK4_IDRV=3 (8mA) - * CLK5: - * CLK5_PDN=0 (powered up) - * MS5_INT=1 (integer mode) - * MS5_SRC=0 (PLLA as source for MultiSynth 5) - * CLK5_INV=0 (not inverted) - * CLK5_SRC=3 (MS5 as input source) - * CLK5_IDRV=3 (8mA) - */ -void si5351c_configure_clock_control(si5351c_driver_t* const drv) -{ - uint8_t data[] = { 16, 0x4F, 0x4B, 0x4B, 0x4B, 0x0F, 0x4F, 0xC0, 0xC0 }; - si5351c_write(drv, data, sizeof(data)); -} -#endif - #if (defined JAWBREAKER || defined HACKRF_ONE) void si5351c_configure_clock_control(si5351c_driver_t* const drv, const enum pll_sources source) { diff --git a/host/libhackrf/src/hackrf.c b/host/libhackrf/src/hackrf.c index 151f4e8e..809d6618 100644 --- a/host/libhackrf/src/hackrf.c +++ b/host/libhackrf/src/hackrf.c @@ -80,10 +80,7 @@ typedef enum { HACKRF_VENDOR_REQUEST_RESET = 30, } hackrf_vendor_request; -typedef enum { - USB_CONFIG_STANDARD = 0x1, - USB_CONFIG_CPLD_UPDATE = 0x2, -} hackrf_usb_configurations; +#define USB_CONFIG_STANDARD 0x1 typedef enum { HACKRF_TRANSCEIVER_MODE_OFF = 0, @@ -385,9 +382,9 @@ hackrf_device_list_t* ADDCALL hackrf_device_list() { ssize_t i; libusb_device_handle* usb_device = NULL; - uint_fast8_t serial_descriptor_index; + uint8_t serial_descriptor_index; char serial_number[64]; - int serial_number_length; + uint8_t idx, serial_number_length; hackrf_device_list_t* list = calloc(1, sizeof(*list)); if ( list == NULL ) @@ -412,7 +409,7 @@ hackrf_device_list_t* ADDCALL hackrf_device_list() if((device_descriptor.idProduct == hackrf_one_usb_pid) || (device_descriptor.idProduct == hackrf_jawbreaker_usb_pid) || (device_descriptor.idProduct == rad1o_usb_pid)) { - int idx = list->devicecount++; + idx = list->devicecount++; list->usb_board_ids[idx] = device_descriptor.idProduct; list->usb_device_index[idx] = i;