From bc65ee451393f7cc67e874fd56f0aa55671a4069 Mon Sep 17 00:00:00 2001 From: Fabien Poussin Date: Wed, 2 Oct 2019 13:54:24 +0200 Subject: Kinetis SPI driver --- os/hal/ports/KINETIS/LLD/SPIv1/hal_spi_lld.h | 85 +++++----------------------- 1 file changed, 13 insertions(+), 72 deletions(-) (limited to 'os') diff --git a/os/hal/ports/KINETIS/LLD/SPIv1/hal_spi_lld.h b/os/hal/ports/KINETIS/LLD/SPIv1/hal_spi_lld.h index d25dd75..cadc240 100644 --- a/os/hal/ports/KINETIS/LLD/SPIv1/hal_spi_lld.h +++ b/os/hal/ports/KINETIS/LLD/SPIv1/hal_spi_lld.h @@ -105,11 +105,6 @@ /* Driver data structures and types. */ /*===========================================================================*/ -/** - * @brief Type of a structure representing an SPI driver. - */ -typedef struct SPIDriver SPIDriver; - /** * @brief SPI notification callback type. * @@ -119,77 +114,23 @@ typedef struct SPIDriver SPIDriver; typedef void (*spicallback_t)(SPIDriver *spip); /** - * @brief Driver configuration structure. + * @brief Low level fields of the SPI configuration structure. */ -typedef struct { - /** - * @brief Operation complete callback or @p NULL. - */ - spicallback_t end_cb; - /* End of the mandatory fields.*/ - /** - * @brief The chip select line port - when not using pcs. - */ - ioportid_t ssport; - /** - * @brief The chip select line pad number - when not using pcs. - */ - uint16_t sspad; - /** - * @brief SPI initialization data. - */ +#define spi_lld_config_fields \ + /* @brief SPI initialization data. */ \ uint32_t tar0; -} SPIConfig; -/** - * @brief Structure representing a SPI driver. - */ -struct SPIDriver { - /** - * @brief Driver state. - */ - spistate_t state; - /** - * @brief Current configuration data. - */ - const SPIConfig *config; -#if SPI_USE_WAIT || defined(__DOXYGEN__) - /** - * @brief Waiting thread. - */ - thread_reference_t thread; -#endif /* SPI_USE_WAIT */ -#if SPI_USE_MUTUAL_EXCLUSION || defined(__DOXYGEN__) - /** - * @brief Mutex protecting the bus. - */ - 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 SPIx registers block. - */ - SPI_TypeDef *spi; - /** - * @brief Number of bytes/words of data to transfer. - */ - size_t count; - /** - * @brief Word size in bytes. - */ - size_t word_size; - /** - * @brief Pointer to the buffer with data to send. - */ - const uint8_t *txbuf; - /** - * @brief Pointer to the buffer to put received data. - */ +#define spi_lld_driver_fields \ + /* @brief Pointer to the SPIx registers block. */ \ + SPI_TypeDef *spi; \ + /* @brief Number of bytes/words of data to transfer. */ \ + size_t count; \ + /* @brief Word size in bytes. */ \ + size_t word_size; \ + /* @brief Pointer to the buffer with data to send. */ \ + const uint8_t *txbuf; \ + /* @brief Pointer to the buffer to put received data. */ \ uint8_t *rxbuf; -}; /*===========================================================================*/ /* Driver macros. */ -- cgit v1.2.3