From c9e48c8c01dfe8c0c913a6cda548fd6ec7584e6f Mon Sep 17 00:00:00 2001 From: Pete Dietl Date: Sun, 1 Jun 2025 13:42:14 -0700 Subject: [PATCH] drivers: spi: sam0: Reset SPI peripheral on init Reset the SPI peripheral to its default state and register values on init by setting its SWRST bit. This is important since the driver assumes that certain registers are at their default values. Signed-off-by: Pete Dietl --- drivers/spi/spi_sam0.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/spi/spi_sam0.c b/drivers/spi/spi_sam0.c index 9cb5bf51d0c..5c48c0bbc99 100644 --- a/drivers/spi/spi_sam0.c +++ b/drivers/spi/spi_sam0.c @@ -679,6 +679,10 @@ static int spi_sam0_init(const struct device *dev) | GCLK_CLKCTRL_ID(cfg->gclk_id); #endif + /* Ensure all registers are at their default values */ + regs->CTRLA.bit.SWRST = 1; + wait_synchronization(regs); + /* Disable all SPI interrupts */ regs->INTENCLR.reg = SERCOM_SPI_INTENCLR_MASK; wait_synchronization(regs);