diff --git a/os/hal/ports/SAMA/LLD/SPIv1/hal_spi_lld.c b/os/hal/ports/SAMA/LLD/SPIv1/hal_spi_lld.c index fffdb390c..a450f261b 100644 --- a/os/hal/ports/SAMA/LLD/SPIv1/hal_spi_lld.c +++ b/os/hal/ports/SAMA/LLD/SPIv1/hal_spi_lld.c @@ -183,6 +183,9 @@ static void spi_lld_serve_tx_interrupt(SPIDriver *spip, uint32_t flags) { void spi_lld_init(void) { #if SAMA_SPI_USE_SPI0 +#if SAMA_HAL_IS_SECURE + mtxConfigPeriphSecurity(MATRIX1, ID_SPI0, SECURE_PER); +#endif /* SAMA_HAL_IS_SECURE */ /* Driver initialization.*/ spiObjectInit(&SPID0); SPID0.spi = SPI0; @@ -213,6 +216,9 @@ void spi_lld_init(void) { #endif /* SAMA_SPI_USE_SPI0 */ #if SAMA_SPI_USE_SPI1 +#if SAMA_HAL_IS_SECURE + mtxConfigPeriphSecurity(MATRIX1, ID_SPI1, SECURE_PER); +#endif /* SAMA_HAL_IS_SECURE */ /* Driver initialization.*/ spiObjectInit(&SPID1); SPID1.spi = SPI1; @@ -243,6 +249,9 @@ void spi_lld_init(void) { #endif /* SAMA_SPI_USE_SPI1 */ #if SAMA_SPI_USE_FLEXCOM0 +#if SAMA_HAL_IS_SECURE + mtxConfigPeriphSecurity(MATRIX1, ID_FLEXCOM0, SECURE_PER); +#endif /* SAMA_HAL_IS_SECURE */ /* Driver initialization.*/ spiObjectInit(&FSPID0); FSPID0.spi = FCOMSPI0; @@ -274,6 +283,9 @@ void spi_lld_init(void) { #endif /* SAMA_SPI_USE_FLEXCOM0 */ #if SAMA_SPI_USE_FLEXCOM1 +#if SAMA_HAL_IS_SECURE + mtxConfigPeriphSecurity(MATRIX1, ID_FLEXCOM1, SECURE_PER); +#endif /* SAMA_HAL_IS_SECURE */ /* Driver initialization.*/ spiObjectInit(&FSPID1); FSPID1.spi = FCOMSPI1; @@ -305,6 +317,9 @@ void spi_lld_init(void) { #endif /* SAMA_SPI_USE_FLEXCOM1 */ #if SAMA_SPI_USE_FLEXCOM2 +#if SAMA_HAL_IS_SECURE + mtxConfigPeriphSecurity(MATRIX1, ID_FLEXCOM2, SECURE_PER); +#endif /* SAMA_HAL_IS_SECURE */ /* Driver initialization.*/ spiObjectInit(&FSPID2); FSPID2.spi = FCOMSPI2; @@ -336,6 +351,9 @@ void spi_lld_init(void) { #endif /* SAMA_SPI_USE_FLEXCOM2 */ #if SAMA_SPI_USE_FLEXCOM3 +#if SAMA_HAL_IS_SECURE + mtxConfigPeriphSecurity(MATRIX1, ID_FLEXCOM3, SECURE_PER); +#endif /* SAMA_HAL_IS_SECURE */ /* Driver initialization.*/ spiObjectInit(&FSPID3); FSPID3.spi = FCOMSPI3; @@ -367,6 +385,9 @@ void spi_lld_init(void) { #endif /* SAMA_SPI_USE_FLEXCOM3 */ #if SAMA_SPI_USE_FLEXCOM4 +#if SAMA_HAL_IS_SECURE + mtxConfigPeriphSecurity(MATRIX1, ID_FLEXCOM4, SECURE_PER); +#endif /* SAMA_HAL_IS_SECURE */ /* Driver initialization.*/ spiObjectInit(&FSPID4); FSPID4.spi = FCOMSPI4; diff --git a/os/hal/ports/SAMA/LLD/SPIv1/hal_spi_lld.h b/os/hal/ports/SAMA/LLD/SPIv1/hal_spi_lld.h index ab2c7f2ad..d5df35dac 100644 --- a/os/hal/ports/SAMA/LLD/SPIv1/hal_spi_lld.h +++ b/os/hal/ports/SAMA/LLD/SPIv1/hal_spi_lld.h @@ -31,6 +31,11 @@ /* Driver constants. */ /*===========================================================================*/ +/** + * @brief Circular mode support flag. + */ +#define SPI_SUPPORTS_CIRCULAR FALSE + /*===========================================================================*/ /* Driver pre-compile time settings. */ /*===========================================================================*/ @@ -149,7 +154,6 @@ /*===========================================================================*/ /* Derived constants and error checks. */ /*===========================================================================*/ - /** * @brief At least an SPI unit is in use. */ @@ -243,6 +247,12 @@ typedef void (*spicallback_t)(SPIDriver *spip); * @brief Driver configuration structure. */ typedef struct { +#if (SPI_SUPPORTS_CIRCULAR == TRUE) || defined(__DOXYGEN__) + /** + * @brief Enables the circular buffer mode. + */ + bool circular; +#endif /** * @brief Operation complete callback or @p NULL. */