From f794bd4c8e2862033add275a6085f35ecd3b4033 Mon Sep 17 00:00:00 2001 From: Kees Bakker <kees@sodaq.com> Date: Tue, 2 Aug 2016 21:56:31 +0200 Subject: [PATCH] cpu/samd21: spi: change #ifdef's to #if's The board config can define SPI_1_EN as 0, and in that case #ifdef won't work. Add some more comments, and fix typos. --- cpu/samd21/periph/spi.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/cpu/samd21/periph/spi.c b/cpu/samd21/periph/spi.c index 415f742ef9..a58dcc9d7f 100644 --- a/cpu/samd21/periph/spi.c +++ b/cpu/samd21/periph/spi.c @@ -29,6 +29,7 @@ #include "board.h" #define ENABLE_DEBUG (0) #include "debug.h" + #if SPI_0_EN || SPI_1_EN /** @@ -64,7 +65,7 @@ int spi_init_master(spi_t dev, spi_conf_t conf, spi_speed_t speed) uint8_t cpha = 0; uint8_t cpol = 0; uint32_t f_baud = 0; - switch(speed) + switch (speed) { case SPI_SPEED_100KHZ: f_baud = 100000; @@ -90,7 +91,7 @@ int spi_init_master(spi_t dev, spi_conf_t conf, spi_speed_t speed) return -1; #endif } - switch(conf) + switch (conf) { case SPI_CONF_FIRST_RISING: /**< first data bit is transacted on the first rising SCK edge */ cpha = 0; @@ -109,9 +110,9 @@ int spi_init_master(spi_t dev, spi_conf_t conf, spi_speed_t speed) cpol = 1; break; } - switch(dev) + switch (dev) { -#ifdef SPI_0_EN +#if SPI_0_EN case SPI_0: spi_dev = &SPI_0_DEV; @@ -149,7 +150,7 @@ int spi_init_master(spi_t dev, spi_conf_t conf, spi_speed_t speed) dipo = SPI_0_DIPO; break; #endif -#ifdef SPI_1_EN +#if SPI_1_EN case SPI_1: spi_dev = &SPI_1_DEV; @@ -192,19 +193,19 @@ int spi_init_master(spi_t dev, spi_conf_t conf, spi_speed_t speed) _spi_poweroff(spi_dev); spi_dev->CTRLA.reg |= SERCOM_SPI_CTRLA_MODE_SPI_MASTER; - while (spi_dev->SYNCBUSY.reg) {} + while (spi_dev->SYNCBUSY.reg) {} // ???? not needed - spi_dev->BAUD.bit.BAUD = (uint8_t) (((uint32_t)CLOCK_CORECLOCK) / (2 * f_baud) - 1); /* Syncronous mode*/ + spi_dev->BAUD.bit.BAUD = (uint8_t) (((uint32_t)CLOCK_CORECLOCK) / (2 * f_baud) - 1); /* Synchronous mode*/ + spi_dev->CTRLA.reg |= SERCOM_SPI_CTRLA_DOPO(dopo) + | SERCOM_SPI_CTRLA_DIPO(dipo) + | (cpha << SERCOM_SPI_CTRLA_CPHA_Pos) + | (cpol << SERCOM_SPI_CTRLA_CPOL_Pos); + while (spi_dev->SYNCBUSY.reg) {} // ???? not needed - spi_dev->CTRLA.reg |= (SERCOM_SPI_CTRLA_DOPO(dopo)) - | (SERCOM_SPI_CTRLA_DIPO(dipo)) - | (cpha << SERCOM_SPI_CTRLA_CPHA_Pos) - | (cpol << SERCOM_SPI_CTRLA_CPOL_Pos); - - while (spi_dev->SYNCBUSY.reg) {} + /* datasize 0 => 8 bits */ spi_dev->CTRLB.reg = (SERCOM_SPI_CTRLB_CHSIZE(0) | SERCOM_SPI_CTRLB_RXEN); - while(spi_dev->SYNCBUSY.reg) {} + while (spi_dev->SYNCBUSY.reg) {} // ???? Only wait for clear of spi_dev->SYNCBUSY.bit.CTRLB /* enable */ _spi_poweron(spi_dev); @@ -247,12 +248,12 @@ int spi_transfer_byte(spi_t dev, char out, char *in) switch(dev) { -#ifdef SPI_0_EN +#if SPI_0_EN case SPI_0: spi_dev = &(SPI_0_DEV); break; #endif -#ifdef SPI_1_EN +#if SPI_1_EN case SPI_1: spi_dev = &(SPI_1_DEV); break; -- GitLab