From 569f320826a2dc4d431ec2cf92d0558caa2d2673 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Mon, 10 Nov 2014 14:48:42 -0800 Subject: [PATCH] SPI: Pull remaining hardware bits out of MAX2837/5864/W25Q80BV device drivers. --- firmware/common/hackrf_core.c | 3 +++ firmware/common/max2837.c | 3 --- firmware/common/max5864.c | 3 --- firmware/common/rffc5071.c | 2 -- firmware/common/rom_iap.c | 1 + firmware/common/w25q80bv.c | 3 --- firmware/hackrf_usb/usb_api_spiflash.c | 2 ++ 7 files changed, 6 insertions(+), 11 deletions(-) diff --git a/firmware/common/hackrf_core.c b/firmware/common/hackrf_core.c index b1985b70..53817583 100644 --- a/firmware/common/hackrf_core.c +++ b/firmware/common/hackrf_core.c @@ -649,6 +649,9 @@ void pin_setup(void) { /* GPIO3[6] on P6_10 as output. */ GPIO3_DIR |= PIN_EN1V8; + spi_init(&spi_ssp1, &ssp_config_max2837); + spi_init(&rffc5071_spi, NULL); + rf_path_pin_setup(); /* Configure external clock in */ diff --git a/firmware/common/max2837.c b/firmware/common/max2837.c index 8f58595f..3105cc63 100644 --- a/firmware/common/max2837.c +++ b/firmware/common/max2837.c @@ -33,8 +33,6 @@ #include "max2837.h" #include "max2837_regs.def" // private register def macros -#include "hackrf_core.h" - /* Default register values. */ static const uint16_t max2837_regs_default[MAX2837_NUM_REGS] = { 0x150, /* 0 */ @@ -78,7 +76,6 @@ static const uint16_t max2837_regs_default[MAX2837_NUM_REGS] = { /* Set up all registers according to defaults specified in docs. */ static void max2837_init(max2837_driver_t* const drv) { - spi_init(drv->spi, &ssp_config_max2837); drv->target_init(drv); max2837_set_mode(drv, MAX2837_MODE_SHUTDOWN); diff --git a/firmware/common/max5864.c b/firmware/common/max5864.c index 13644862..40afd68d 100644 --- a/firmware/common/max5864.c +++ b/firmware/common/max5864.c @@ -23,14 +23,11 @@ #include "max5864.h" -#include "hackrf_core.h" - static void max5864_write(max5864_driver_t* const drv, uint8_t value) { spi_transfer(drv->spi, &value, 1); } static void max5864_init(max5864_driver_t* const drv) { - spi_init(drv->spi, &ssp_config_max5864); drv->target_init(drv); } diff --git a/firmware/common/rffc5071.c b/firmware/common/rffc5071.c index 54237b98..6f9bd106 100644 --- a/firmware/common/rffc5071.c +++ b/firmware/common/rffc5071.c @@ -90,8 +90,6 @@ void rffc5071_setup(rffc5071_driver_t* const drv) { rffc5071_init(drv); - spi_init(drv->spi, NULL); - /* initial setup */ /* put zeros in freq contol registers */ set_RFFC5071_P2N(drv, 0); diff --git a/firmware/common/rom_iap.c b/firmware/common/rom_iap.c index 4a92494c..f3917a03 100644 --- a/firmware/common/rom_iap.c +++ b/firmware/common/rom_iap.c @@ -77,6 +77,7 @@ isp_iap_ret_code_t iap_cmd_call(iap_cmd_res_t* iap_cmd_res) Alternative way to retrieve Part Id on MCU with no IAP Read Serial No => Read Unique ID in SPIFI (only compatible with W25Q80BV */ + spi_init(spi_flash.spi, &ssp_config_w25q80bv); w25q80bv_setup(&spi_flash); switch(iap_cmd_res->cmd_param.command_code) diff --git a/firmware/common/w25q80bv.c b/firmware/common/w25q80bv.c index 5b3984ab..6218e34d 100644 --- a/firmware/common/w25q80bv.c +++ b/firmware/common/w25q80bv.c @@ -32,8 +32,6 @@ #include "w25q80bv.h" -#include "hackrf_core.h" - #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) #define W25Q80BV_WRITE_ENABLE 0x06 @@ -59,7 +57,6 @@ void w25q80bv_setup(w25q80bv_driver_t* const drv) drv->num_pages = 4096U; drv->num_bytes = 1048576U; - spi_init(drv->spi, &ssp_config_w25q80bv); drv->target_init(drv); device_id = 0; diff --git a/firmware/hackrf_usb/usb_api_spiflash.c b/firmware/hackrf_usb/usb_api_spiflash.c index a2368a91..6b5efb26 100644 --- a/firmware/hackrf_usb/usb_api_spiflash.c +++ b/firmware/hackrf_usb/usb_api_spiflash.c @@ -39,6 +39,7 @@ usb_request_status_t usb_vendor_request_erase_spiflash( //FIXME This should refuse to run if executing from SPI flash. if (stage == USB_TRANSFER_STAGE_SETUP) { + spi_init(spi_flash.spi, &ssp_config_w25q80bv); w25q80bv_setup(&spi_flash); /* only chip erase is implemented */ w25q80bv_chip_erase(&spi_flash); @@ -65,6 +66,7 @@ usb_request_status_t usb_vendor_request_write_spiflash( } else { usb_transfer_schedule_block(endpoint->out, &spiflash_buffer[0], len, NULL, NULL); + spi_init(spi_flash.spi, &ssp_config_w25q80bv); w25q80bv_setup(&spi_flash); return USB_REQUEST_STATUS_OK; }