From b6814edfd2db3420e644b0475112f83d7af4da80 Mon Sep 17 00:00:00 2001 From: utzig Date: Thu, 4 Sep 2014 18:49:07 +0000 Subject: [AVR] SPI driver updated for 3.0 + removed weird slave interface support git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7247 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/AVR/spi_lld.c | 29 ++++++++++------------------- os/hal/ports/AVR/spi_lld.h | 21 +++++---------------- 2 files changed, 15 insertions(+), 35 deletions(-) (limited to 'os') diff --git a/os/hal/ports/AVR/spi_lld.c b/os/hal/ports/AVR/spi_lld.c index 3621b2136..ffc0f513e 100644 --- a/os/hal/ports/AVR/spi_lld.c +++ b/os/hal/ports/AVR/spi_lld.c @@ -71,7 +71,7 @@ OSAL_IRQ_HANDLER(SPI_STC_vect) { /* spi_lld_exchange, spi_lld_send or spi_lld_ignore */ if (spip->txidx < spip->txbytes) { - if (spip->txbuf) { + if (spip->txbuf) { SPDR = spip->txbuf[spip->txidx++]; // send } else { SPDR = 0; spip->txidx++; // dummy send @@ -136,19 +136,10 @@ void spi_lld_start(SPIDriver *spip) { /* SPI enable, SPI interrupt enable */ SPCR |= ((1 << SPE) | (1 << SPIE)); - switch (spip->config->role) { - case SPI_ROLE_SLAVE: - SPCR &= ~(1 << MSTR); /* master mode */ - DDR_SPI1 |= (1 << SPI1_MISO); /* output */ - DDR_SPI1 &= ~((1 << SPI1_MOSI) | (1 << SPI1_SCK) | (1 << SPI1_SS)); /* input */ - break; - case SPI_ROLE_MASTER: /* fallthrough */ - default: - SPCR |= (1 << MSTR); /* slave mode */ - DDR_SPI1 |= ((1 << SPI1_MOSI) | (1 << SPI1_SCK)); /* output */ - DDR_SPI1 &= ~(1 << SPI1_MISO); /* input */ - spip->config->ssport->dir |= (1 << spip->config->sspad); - } + SPCR |= (1 << MSTR); + DDR_SPI1 |= ((1 << SPI1_MOSI) | (1 << SPI1_SCK)); + DDR_SPI1 &= ~(1 << SPI1_MISO); + spip->config->ssport->dir |= (1 << spip->config->sspad); switch (spip->config->bitorder) { case SPI_LSB_FIRST: @@ -248,10 +239,10 @@ void spi_lld_stop(SPIDriver *spip) { * @notapi */ void spi_lld_select(SPIDriver *spip) { - + /** - * NOTE: This should only be called in master mode - */ + * NOTE: This should only be called in master mode. + */ spip->config->ssport->out &= ~(1 << spip->config->sspad); } @@ -267,8 +258,8 @@ void spi_lld_select(SPIDriver *spip) { void spi_lld_unselect(SPIDriver *spip) { /** - * NOTE: This should only be called in master mode - */ + * NOTE: This should only be called in master mode. + */ spip->config->ssport->out |= (1 << spip->config->sspad); } diff --git a/os/hal/ports/AVR/spi_lld.h b/os/hal/ports/AVR/spi_lld.h index e0defe45e..8f259a9e9 100644 --- a/os/hal/ports/AVR/spi_lld.h +++ b/os/hal/ports/AVR/spi_lld.h @@ -31,10 +31,6 @@ /* Driver constants. */ /*===========================================================================*/ -/** @brief SPI Mode (Polarity/Phase) */ -#define SPI_ROLE_MASTER 0 -#define SPI_ROLE_SLAVE 1 - /** @brief SPI Mode (Polarity/Phase) */ #define SPI_CPOL0_CPHA0 0 #define SPI_CPOL0_CPHA1 1 @@ -103,10 +99,6 @@ typedef void (*spicallback_t)(SPIDriver *spip); * architecture dependent, fields. */ typedef struct { - /** - * @brief Role: Master or Slave - */ - uint8_t role; /** * @brief Port used of Slave Select */ @@ -143,30 +135,27 @@ struct SPIDriver { /** * @brief Driver state. */ - spistate_t state; + spistate_t state; /** * @brief Current configuration data. */ - SPIConfig *config; + SPIConfig *config; #if SPI_USE_WAIT || defined(__DOXYGEN__) /** * @brief Waiting thread. */ - Thread *thread; + thread_reference_t thread; #endif /* SPI_USE_WAIT */ #if SPI_USE_MUTUAL_EXCLUSION || defined(__DOXYGEN__) -#if CH_USE_MUTEXES || defined(__DOXYGEN__) /** * @brief Mutex protecting the bus. */ - Mutex mutex; -#elif CH_USE_SEMAPHORES - Semaphore semaphore; -#endif + mutex_t mutex; #endif /* SPI_USE_MUTUAL_EXCLUSION */ #if defined(SPI_DRIVER_EXT_FIELDS) SPI_DRIVER_EXT_FIELDS #endif + /* End of the mandatory fields.*/ /** * @brief Pointer to the buffer with data to send. */ -- cgit v1.2.3