diff --git a/cpu/atmega_common/periph/spi.c b/cpu/atmega_common/periph/spi.c index bbb023015c..cac04cfdeb 100644 --- a/cpu/atmega_common/periph/spi.c +++ b/cpu/atmega_common/periph/spi.c @@ -24,10 +24,10 @@ * * @} */ +#include #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/spi.h" /** @@ -78,10 +78,11 @@ void spi_init_pins(spi_t bus) #endif } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { (void)bus; (void)cs; + assert(bus == SPI_DEV(0)); /* lock the bus and power on the SPI peripheral */ mutex_lock(&lock); @@ -94,8 +95,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) /* clear interrupt flag by reading SPSR and data register by reading SPDR */ (void)SPSR; (void)SPDR; - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/atxmega/periph/spi.c b/cpu/atxmega/periph/spi.c index cc0d57dfc7..690bf73717 100644 --- a/cpu/atxmega/periph/spi.c +++ b/cpu/atxmega/periph/spi.c @@ -87,7 +87,7 @@ void spi_init_pins(spi_t bus) gpio_init(spi_config[bus].mosi_pin, GPIO_OUT); } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { (void)cs; (void)clk; @@ -106,8 +106,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) (void)dev(bus)->STATUS; (void)dev(bus)->DATA; - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/cc2538/periph/spi.c b/cpu/cc2538/periph/spi.c index ae258a9353..6798f43ae0 100644 --- a/cpu/cc2538/periph/spi.c +++ b/cpu/cc2538/periph/spi.c @@ -21,12 +21,13 @@ * @} */ +#include + #include "vendor/hw_memmap.h" #include "vendor/hw_ssi.h" #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/spi.h" #define ENABLE_DEBUG 0 @@ -93,10 +94,10 @@ void spi_init_pins(spi_t bus) gpio_init_mux(spi_config[bus].miso_pin, OVERRIDE_DISABLE, GPIO_MUX_NONE, rxd); } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { DEBUG("%s: bus=%u\n", __FUNCTION__, bus); - (void) cs; + (void)cs; /* lock the bus */ mutex_lock(&locks[bus]); /* power on device */ @@ -107,8 +108,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) dev(bus)->CR0 = ((spi_clk_config[clk].scr << 8) | mode | SSI_CR0_DSS(8)); /* enable SSI device */ dev(bus)->CR1 = SSI_CR1_SSE; - - return SPI_OK; } void spi_release(spi_t bus) @@ -132,6 +131,7 @@ static uint8_t _trx(cc2538_ssi_t *dev, uint8_t in) void spi_transfer_bytes(spi_t bus, spi_cs_t cs, bool cont, const void *out, void *in, size_t len) { + assert((unsigned)bus < SPI_NUMOF); DEBUG("%s: bus=%u, len=%u\n", __FUNCTION__, bus, (unsigned)len); const uint8_t *out_buf = out; diff --git a/cpu/efm32/periph/spi.c b/cpu/efm32/periph/spi.c index 2b7ab3e7f5..86c2afa90c 100644 --- a/cpu/efm32/periph/spi.c +++ b/cpu/efm32/periph/spi.c @@ -56,9 +56,10 @@ void spi_init_pins(spi_t bus) gpio_init(spi_config[bus].miso_pin, GPIO_IN_PD); } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { (void)cs; + assert((unsigned)bus < SPI_NUMOF); mutex_lock(&spi_lock[bus]); @@ -68,8 +69,8 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) USART_InitSync_TypeDef init = USART_INITSYNC_DEFAULT; - init.baudrate = (uint32_t) clk; - init.clockMode = (USART_ClockMode_TypeDef) mode; + init.baudrate = (uint32_t)clk; + init.clockMode = (USART_ClockMode_TypeDef)mode; init.msbf = true; USART_InitSync(spi_config[bus].dev, &init); @@ -86,8 +87,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) USART_ROUTEPEN_TXPEN | USART_ROUTEPEN_CLKPEN); #endif - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/esp_common/periph/spi.c b/cpu/esp_common/periph/spi.c index 388f5d3d08..20ddf85f20 100644 --- a/cpu/esp_common/periph/spi.c +++ b/cpu/esp_common/periph/spi.c @@ -289,7 +289,7 @@ int spi_init_cs(spi_t bus, spi_cs_t cs) return SPI_OK; } -int IRAM_ATTR spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void IRAM_ATTR spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { DEBUG("%s bus=%u cs=%u mode=%u clk=%u\n", __func__, bus, cs, mode, clk); @@ -308,7 +308,7 @@ int IRAM_ATTR spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk LOG_TAG_ERROR("spi", "SPI_DEV(%d) CS signal could not be initialized\n", bus); - return SPI_NOCS; + assert(0); } /* lock the bus */ @@ -375,8 +375,6 @@ int IRAM_ATTR spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk DEBUG("%s bus %d: SPI_CLOCK_REG=%08x\n", __func__, bus, _spi[bus].regs->clock.val); - - return SPI_OK; } void IRAM_ATTR spi_release(spi_t bus) diff --git a/cpu/fe310/periph/spi.c b/cpu/fe310/periph/spi.c index 9a7d0429ee..e880415b9f 100644 --- a/cpu/fe310/periph/spi.c +++ b/cpu/fe310/periph/spi.c @@ -22,9 +22,10 @@ * @} */ +#include + #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/spi.h" #include "vendor/spi.h" @@ -102,7 +103,7 @@ int spi_init_cs(spi_t dev, spi_cs_t cs) return SPI_OK; } -int spi_acquire(spi_t dev, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t dev, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { (void)cs; assert(dev < SPI_NUMOF); @@ -111,8 +112,6 @@ int spi_acquire(spi_t dev, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) _REG32(spi_config[dev].addr, SPI_REG_SCKDIV) = _spi_clks_config[clk]; _REG32(spi_config[dev].addr, SPI_REG_SCKMODE) = mode; - - return SPI_OK; } void spi_release(spi_t dev) diff --git a/cpu/kinetis/periph/spi.c b/cpu/kinetis/periph/spi.c index 6c9e8d1d65..52da320b2f 100644 --- a/cpu/kinetis/periph/spi.c +++ b/cpu/kinetis/periph/spi.c @@ -26,9 +26,10 @@ * @} */ +#include + #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/spi.h" #define ENABLE_DEBUG 0 @@ -144,9 +145,10 @@ int spi_init_cs(spi_t bus, spi_cs_t cs) return SPI_OK; } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { - (void) cs; + (void)cs; + assert((unsigned)bus < SPI_NUMOF); /* lock and power on the bus */ mutex_lock(&locks[bus]); poweron(bus); @@ -156,8 +158,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) /* configure clock and mode */ dev(bus)->CTAR[0] = (mode | SPI_CTAR_FMSZ(7) | spi_clk_config[clk]); - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/lm4f120/periph/spi.c b/cpu/lm4f120/periph/spi.c index d8864e5c8e..319c896c18 100644 --- a/cpu/lm4f120/periph/spi.c +++ b/cpu/lm4f120/periph/spi.c @@ -67,9 +67,10 @@ void spi_init_pins(spi_t bus) ROM_GPIOPinTypeSSI(spi_confs[bus].gpio_port, spi_confs[bus].pins.mask); } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { - (void) cs; + (void)cs; + assert((unsigned)bus < SPI_NUMOF); /* lock bus */ mutex_lock(&locks[bus]); /* enable clock for SSI */ @@ -83,8 +84,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) 8); ROM_SSIEnable(spi_confs[bus].ssi_base); - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/lpc23xx/periph/spi.c b/cpu/lpc23xx/periph/spi.c index 17e226fc5b..4cf79e6a97 100644 --- a/cpu/lpc23xx/periph/spi.c +++ b/cpu/lpc23xx/periph/spi.c @@ -95,20 +95,17 @@ void spi_init_pins(spi_t bus) *(&PINSEL0 + cfg->pinsel_clk) |= cfg->pinsel_msk_clk; } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { - (void) cs; + (void)cs; (void)mode; + assert((unsigned)bus < SPI_NUMOF); + assert(mode == SPI_MODE_0); uint32_t pclksel; uint32_t cpsr; lpc23xx_spi_t *dev = get_dev(bus); - /* only support for mode 0 at the moment */ - if (mode != SPI_MODE_0) { - return SPI_NOMODE; - } - /* lock bus */ mutex_lock(&lock[bus]); @@ -141,8 +138,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) while (dev->SR & SSPSR_RNE) { /* while RNE (Receive FIFO Not Empty)...*/ dev->DR; /* read data*/ } - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/msp430fxyz/periph/spi.c b/cpu/msp430fxyz/periph/spi.c index e36831982b..34ccf7dd13 100644 --- a/cpu/msp430fxyz/periph/spi.c +++ b/cpu/msp430fxyz/periph/spi.c @@ -23,9 +23,10 @@ * @} */ +#include + #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/spi.h" /** @@ -36,7 +37,7 @@ static mutex_t spi_lock = MUTEX_INIT; void spi_init(spi_t bus) { - assert(bus <= SPI_NUMOF); + assert((unsigned)bus < SPI_NUMOF); /* we need to differentiate between the legacy SPI device and USCI */ #ifndef SPI_USE_USCI @@ -66,14 +67,12 @@ void spi_init_pins(spi_t bus) gpio_periph_mode(SPI_PIN_CLK, true); } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { (void)bus; (void)cs; - - if (clk == SPI_CLK_10MHZ) { - return SPI_NOCLK; - } + assert((unsigned)bus < SPI_NUMOF); + assert(clk != SPI_CLK_10MHZ); /* lock the bus */ mutex_lock(&spi_lock); @@ -100,8 +99,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) /* release from software reset */ SPI_BASE->CTL1 &= ~(USCI_SPI_CTL1_SWRST); #endif - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/native/periph/spidev_linux.c b/cpu/native/periph/spidev_linux.c index a38ee8144b..4d439711d1 100644 --- a/cpu/native/periph/spidev_linux.c +++ b/cpu/native/periph/spidev_linux.c @@ -20,6 +20,7 @@ #ifdef MODULE_PERIPH_SPIDEV_LINUX +#include #include #include #include @@ -145,12 +146,10 @@ void spidev_linux_teardown(void) } } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { DEBUG("spi_acquire(%u, %u, 0x%02x, %d)\n", bus, cs, mode, clk); - if (bus >= SPI_NUMOF) { - return SPI_NODEV; - } + assert((unsigned)bus < SPI_NUMOF); mutex_lock(&(device_state[bus].lock)); @@ -166,8 +165,7 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) unsigned csid = CS_TO_CSID(cs); if (device_state[bus].fd[csid] < 0) { DEBUG("spi_acquire: No fd for %u:%u\n", bus, csid); - mutex_unlock(&(device_state[bus].lock)); - return SPI_NOCS; + assert(0); } fd = device_state[bus].fd[csid]; DEBUG("spi_acquire: Using %u:%u with HWCS (-> fd 0x%x)\n", bus, csid, fd); @@ -175,25 +173,23 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) else if (IS_GPIO_CS(cs) || cs == SPI_CS_UNDEF) { fd = spidev_get_first_fd(&(device_state[bus])); if (fd < 0) { - mutex_unlock(&(device_state[bus].lock)); - return SPI_NOCS; + DEBUG("spi_acquire: Invalid CS parameter\n"); + assert(0); } DEBUG("spi_acquire: Using SPI_CS_UNDEF (-> fd 0x%x)\n", fd); } else { DEBUG("spi_acquire: Invalid CS parameter\n"); - mutex_unlock(&(device_state[bus].lock)); - return SPI_NOCS; + assert(0); } int res = spi_set_params(fd, use_hwcs, mode, clk); if (res < 0) { DEBUG("spi_acquire: set_params failed\n"); - mutex_unlock(&(device_state[bus].lock)); + assert(0); } DEBUG("spi_acquire: bus %u acquired\n", bus); - return SPI_OK; } void spi_init(spi_t bus) diff --git a/cpu/nrf51/periph/spi.c b/cpu/nrf51/periph/spi.c index 48fea3424b..c3efd1e99d 100644 --- a/cpu/nrf51/periph/spi.c +++ b/cpu/nrf51/periph/spi.c @@ -21,9 +21,10 @@ * @} */ +#include + #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/spi.h" #include "periph/gpio.h" @@ -59,9 +60,10 @@ void spi_init_pins(spi_t bus) SPI_MISOSEL = spi_config[bus].miso; } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { - (void) cs; + (void)cs; + assert((unsigned)bus < SPI_NUMOF); mutex_lock(&locks[bus]); /* power on the bus (NRF51 only) */ @@ -71,8 +73,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) dev(bus)->FREQUENCY = clk; /* enable the bus */ dev(bus)->ENABLE = 1; - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/nrf52/periph/spi.c b/cpu/nrf52/periph/spi.c index 9376409b37..3482d5ae17 100644 --- a/cpu/nrf52/periph/spi.c +++ b/cpu/nrf52/periph/spi.c @@ -24,9 +24,10 @@ * @} */ +#include + #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/spi.h" #include "periph/gpio.h" #include "periph_cpu.h" @@ -147,9 +148,10 @@ void spi_init_pins(spi_t bus) spi_twi_irq_register_spi(dev(bus), spi_isr_handler, (void *)bus); } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { (void)cs; + assert((unsigned)bus < SPI_NUMOF); mutex_lock(&locks[bus]); /* configure bus */ @@ -157,8 +159,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) dev(bus)->FREQUENCY = clk; /* enable the bus */ dev(bus)->ENABLE = SPIM_ENABLE_ENABLE_Enabled; - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/qn908x/periph/spi.c b/cpu/qn908x/periph/spi.c index 66dd689c17..ff4f114212 100644 --- a/cpu/qn908x/periph/spi.c +++ b/cpu/qn908x/periph/spi.c @@ -20,7 +20,8 @@ * @} */ -#include "assert.h" +#include + #include "bitarithm.h" #include "mutex.h" @@ -187,8 +188,10 @@ void spi_deinit_pins(spi_t bus) } #endif /* MODULE_PERIPH_SPI_RECONFIGURE */ -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { + assert((unsigned)bus < SPI_NUMOF); + assert((mode & ~(SPI_CFG_CPHA_MASK | SPI_CFG_CPOL_MASK)) == 0); const spi_conf_t *const conf = &spi_config[bus]; mutex_lock(&locks[bus]); @@ -197,18 +200,12 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) * matter how far it is from the requested one. */ _spi_controller_set_speed(conf->dev, clk); - if ((mode & ~(SPI_CFG_CPHA_MASK | SPI_CFG_CPOL_MASK)) != 0) { - return SPI_NOMODE; - } - DEBUG("[spi] acquire: mode CPHA=%d CPOL=%d, cs=0x%" PRIx32 "\n", !!(mode & SPI_CFG_CPHA_MASK), !!(mode & SPI_CFG_CPOL_MASK), (uint32_t)cs); conf->dev->CFG = (conf->dev->CFG & ~(SPI_CFG_CPHA_MASK | SPI_CFG_CPOL_MASK)) | mode; - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/sam0_common/periph/spi.c b/cpu/sam0_common/periph/spi.c index 9832763015..d7cd5803e9 100644 --- a/cpu/sam0_common/periph/spi.c +++ b/cpu/sam0_common/periph/spi.c @@ -26,9 +26,10 @@ * @} */ +#include + #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/spi.h" #include "pm_layered.h" @@ -374,9 +375,10 @@ void spi_deinit_pins(spi_t bus) gpio_disable_mux(spi_config[bus].mosi_pin); } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { (void)cs; + assert((unsigned)bus < SPI_NUMOF); /* get exclusive access to the device */ mutex_lock(&locks[bus]); @@ -392,8 +394,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) /* mux clk_pin to SPI peripheral */ gpio_init_mux(spi_config[bus].clk_pin, spi_config[bus].clk_mux); - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/sam3/periph/spi.c b/cpu/sam3/periph/spi.c index b551d9d660..e542519dab 100644 --- a/cpu/sam3/periph/spi.c +++ b/cpu/sam3/periph/spi.c @@ -23,9 +23,10 @@ * @} */ +#include + #include "cpu.h" #include "mutex.h" -#include "assert.h" #include "periph/gpio.h" #include "periph/spi.h" @@ -62,9 +63,11 @@ void spi_init_pins(spi_t bus) gpio_init_mux(spi_config[bus].miso, spi_config[bus].mux); } -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { - (void) cs; + (void)cs; + assert((unsigned)bus < SPI_NUMOF); + /* lock bus */ mutex_lock(&locks[bus]); /* enable SPI device clock */ @@ -73,8 +76,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) dev(bus)->SPI_CSR[0] = (SPI_CSR_SCBR(CLOCK_CORECLOCK / clk) | mode); dev(bus)->SPI_MR = (SPI_MR_MSTR | SPI_MR_MODFDIS); dev(bus)->SPI_CR = SPI_CR_SPIEN; - - return SPI_OK; } void spi_release(spi_t bus) diff --git a/cpu/stm32/periph/spi.c b/cpu/stm32/periph/spi.c index 762bb34179..7348c355c2 100644 --- a/cpu/stm32/periph/spi.c +++ b/cpu/stm32/periph/spi.c @@ -26,6 +26,8 @@ * @} */ +#include + #include "bitarithm.h" #include "cpu.h" #include "mutex.h" @@ -219,8 +221,9 @@ int spi_init_with_gpio_mode(spi_t bus, spi_gpio_mode_t mode) } #endif -int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) +void spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) { + assert((unsigned)bus < SPI_NUMOF); /* lock bus */ mutex_lock(&locks[bus]); @@ -279,8 +282,6 @@ int spi_acquire(spi_t bus, spi_cs_t cs, spi_mode_t mode, spi_clk_t clk) if (cr2_extra_settings) { dev(bus)->CR2 = (SPI_CR2_SETTINGS | cr2_extra_settings); } - - return SPI_OK; } void spi_release(spi_t bus)