From 05b8c4c153c3b0af583ad36fb0fd8a98c90f795c Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Thu, 13 Nov 2014 09:51:48 -0800 Subject: [PATCH] SPI: Interface: Rename init()->start(), add stop(). --- firmware/common/hackrf_core.c | 17 ++++++++++------- firmware/common/rffc5071_spi.c | 6 +++++- firmware/common/rffc5071_spi.h | 3 ++- firmware/common/rom_iap.c | 2 +- firmware/common/spi.c | 8 ++++++-- firmware/common/spi.h | 6 ++++-- firmware/common/spi_ssp.c | 6 +++++- firmware/common/spi_ssp.h | 3 ++- firmware/hackrf_usb/usb_api_spiflash.c | 4 ++-- 9 files changed, 37 insertions(+), 18 deletions(-) diff --git a/firmware/common/hackrf_core.c b/firmware/common/hackrf_core.c index 53817583..6cf6b3bc 100644 --- a/firmware/common/hackrf_core.c +++ b/firmware/common/hackrf_core.c @@ -75,7 +75,8 @@ const ssp_config_t ssp_config_max5864 = { spi_t spi_ssp1 = { .obj = (void*)SSP1_BASE, .config = &ssp_config_max2837, - .init = spi_ssp_init, + .start = spi_ssp_start, + .stop = spi_ssp_stop, .transfer = spi_ssp_transfer, .transfer_gather = spi_ssp_transfer_gather, }; @@ -93,7 +94,8 @@ max5864_driver_t max5864 = { spi_t rffc5071_spi = { .config = NULL, - .init = rffc5071_spi_init, + .start = rffc5071_spi_start, + .stop = rffc5071_spi_stop, .transfer = rffc5071_spi_transfer, .transfer_gather = rffc5071_spi_transfer_gather, }; @@ -113,7 +115,8 @@ const ssp_config_t ssp_config_w25q80bv = { spi_t spi_ssp0 = { .obj = (void*)SSP0_BASE, .config = &ssp_config_w25q80bv, - .init = spi_ssp_init, + .start = spi_ssp_start, + .stop = spi_ssp_stop, .transfer = spi_ssp_transfer, .transfer_gather = spi_ssp_transfer_gather, }; @@ -600,12 +603,12 @@ void cpu_clock_pll1_max_speed(void) void ssp1_set_mode_max2837(void) { - spi_init(max2837.spi, &ssp_config_max2837); + spi_start(max2837.spi, &ssp_config_max2837); } void ssp1_set_mode_max5864(void) { - spi_init(max5864.spi, &ssp_config_max5864); + spi_start(max5864.spi, &ssp_config_max5864); } void pin_setup(void) { @@ -649,8 +652,8 @@ 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); + spi_start(&spi_ssp1, &ssp_config_max2837); + spi_start(&rffc5071_spi, NULL); rf_path_pin_setup(); diff --git a/firmware/common/rffc5071_spi.c b/firmware/common/rffc5071_spi.c index 5f69fb4e..b587fef4 100644 --- a/firmware/common/rffc5071_spi.c +++ b/firmware/common/rffc5071_spi.c @@ -82,12 +82,16 @@ static void rffc5071_spi_target_init(spi_t* const spi) { gpio_set(PORT_MIXER_RESETX, PIN_MIXER_RESETX); /* active low */ } -void rffc5071_spi_init(spi_t* const spi, const void* const config) { +void rffc5071_spi_start(spi_t* const spi, const void* const config) { (void)config; rffc5071_spi_bus_init(spi); rffc5071_spi_target_init(spi); } +void rffc5071_spi_stop(spi_t* const spi) { + (void)spi; +} + static void rffc5071_spi_serial_delay(spi_t* const spi) { (void)spi; volatile uint32_t i; diff --git a/firmware/common/rffc5071_spi.h b/firmware/common/rffc5071_spi.h index ba2eb44f..930d7283 100644 --- a/firmware/common/rffc5071_spi.h +++ b/firmware/common/rffc5071_spi.h @@ -25,7 +25,8 @@ #include "spi.h" -void rffc5071_spi_init(spi_t* const spi, const void* const config); +void rffc5071_spi_start(spi_t* const spi, const void* const config); +void rffc5071_spi_stop(spi_t* const spi); void rffc5071_spi_transfer(spi_t* const spi, void* const data, const size_t count); void rffc5071_spi_transfer_gather(spi_t* const spi, const spi_transfer_t* const transfer, const size_t count); diff --git a/firmware/common/rom_iap.c b/firmware/common/rom_iap.c index f3917a03..6807378a 100644 --- a/firmware/common/rom_iap.c +++ b/firmware/common/rom_iap.c @@ -77,7 +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); + spi_start(spi_flash.spi, &ssp_config_w25q80bv); w25q80bv_setup(&spi_flash); switch(iap_cmd_res->cmd_param.command_code) diff --git a/firmware/common/spi.c b/firmware/common/spi.c index 99076737..9c0ff72b 100644 --- a/firmware/common/spi.c +++ b/firmware/common/spi.c @@ -21,8 +21,12 @@ #include "spi.h" -void spi_init(spi_t* const spi, const void* const config) { - spi->init(spi, config); +void spi_start(spi_t* const spi, const void* const config) { + spi->start(spi, config); +} + +void spi_stop(spi_t* const spi) { + spi->stop(spi); } void spi_transfer(spi_t* const spi, void* const data, const size_t count) { diff --git a/firmware/common/spi.h b/firmware/common/spi.h index 5ec54446..dfdca0e8 100644 --- a/firmware/common/spi.h +++ b/firmware/common/spi.h @@ -35,12 +35,14 @@ typedef struct spi_t spi_t; struct spi_t { void* const obj; const void* config; - void (*init)(spi_t* const spi, const void* const config); + void (*start)(spi_t* const spi, const void* const config); + void (*stop)(spi_t* const spi); void (*transfer)(spi_t* const spi, void* const data, const size_t count); void (*transfer_gather)(spi_t* const spi, const spi_transfer_t* const transfers, const size_t count); }; -void spi_init(spi_t* const spi, const void* const config); +void spi_start(spi_t* const spi, const void* const config); +void spi_stop(spi_t* const spi); void spi_transfer(spi_t* const spi, void* const data, const size_t count); void spi_transfer_gather(spi_t* const spi, const spi_transfer_t* const transfers, const size_t count); diff --git a/firmware/common/spi_ssp.c b/firmware/common/spi_ssp.c index 2c069f82..2a93ad31 100644 --- a/firmware/common/spi_ssp.c +++ b/firmware/common/spi_ssp.c @@ -24,7 +24,7 @@ #include #include -void spi_ssp_init(spi_t* const spi, const void* const _config) { +void spi_ssp_start(spi_t* const spi, const void* const _config) { const ssp_config_t* const config = _config; if( spi->obj == (void*)SSP0_BASE ) { @@ -50,6 +50,10 @@ void spi_ssp_init(spi_t* const spi, const void* const _config) { spi->config = config; } +void spi_ssp_stop(spi_t* const spi) { + SSP_CR1(spi->obj) = 0; +} + static void spi_ssp_wait_for_tx_fifo_not_full(spi_t* const spi) { while( (SSP_SR(spi->obj) & SSP_SR_TNF) == 0 ); } diff --git a/firmware/common/spi_ssp.h b/firmware/common/spi_ssp.h index 481328f8..ef2d77cf 100644 --- a/firmware/common/spi_ssp.h +++ b/firmware/common/spi_ssp.h @@ -37,7 +37,8 @@ typedef struct ssp_config_t { void (*unselect)(spi_t* const spi); } ssp_config_t; -void spi_ssp_init(spi_t* const spi, const void* const config); +void spi_ssp_start(spi_t* const spi, const void* const config); +void spi_ssp_stop(spi_t* const spi); void spi_ssp_transfer(spi_t* const spi, void* const data, const size_t count); void spi_ssp_transfer_gather(spi_t* const spi, const spi_transfer_t* const transfers, const size_t count); diff --git a/firmware/hackrf_usb/usb_api_spiflash.c b/firmware/hackrf_usb/usb_api_spiflash.c index 6b5efb26..225bf0de 100644 --- a/firmware/hackrf_usb/usb_api_spiflash.c +++ b/firmware/hackrf_usb/usb_api_spiflash.c @@ -39,7 +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); + spi_start(spi_flash.spi, &ssp_config_w25q80bv); w25q80bv_setup(&spi_flash); /* only chip erase is implemented */ w25q80bv_chip_erase(&spi_flash); @@ -66,7 +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); + spi_start(spi_flash.spi, &ssp_config_w25q80bv); w25q80bv_setup(&spi_flash); return USB_REQUEST_STATUS_OK; }