From 05b8c4c153c3b0af583ad36fb0fd8a98c90f795c Mon Sep 17 00:00:00 2001
From: Jared Boone <jboone@earfeast.com>
Date: Thu, 13 Nov 2014 09:51:48 -0800
Subject: [PATCH 41/68] 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(-)

--- a/firmware/common/hackrf_core.c
+++ b/firmware/common/hackrf_core.c
@@ -101,7 +101,8 @@
 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,
 };
@@ -119,7 +120,8 @@
 
 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,
 };
@@ -139,7 +141,8 @@
 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,
 };
@@ -626,12 +629,12 @@
 
 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) {
@@ -675,8 +678,8 @@
 	/* 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);
 
 	/* enable input on SCL and SDA pins */
 	SCU_SFSI2C0 = SCU_I2C0_NOMINAL;
--- a/firmware/common/rffc5071_spi.c
+++ b/firmware/common/rffc5071_spi.c
@@ -82,12 +82,16 @@
 	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;
--- 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);
 
--- a/firmware/common/rom_iap.c
+++ b/firmware/common/rom_iap.c
@@ -77,7 +77,7 @@
 		  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)
--- 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) {
--- a/firmware/common/spi.h
+++ b/firmware/common/spi.h
@@ -35,12 +35,14 @@
 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);
 
--- a/firmware/common/spi_ssp.c
+++ b/firmware/common/spi_ssp.c
@@ -24,7 +24,7 @@
 #include <libopencm3/lpc43xx/rgu.h>
 #include <libopencm3/lpc43xx/ssp.h>
 
-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 @@
 	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 );
 }
--- a/firmware/common/spi_ssp.h
+++ b/firmware/common/spi_ssp.h
@@ -37,7 +37,8 @@
 	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);
 
--- a/firmware/hackrf_usb/usb_api_spiflash.c
+++ b/firmware/hackrf_usb/usb_api_spiflash.c
@@ -39,7 +39,7 @@
 	//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 @@
 		} 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;
 		}
