diff --git a/system/libarc32_arduino101/drivers/spi_priv.h b/system/libarc32_arduino101/drivers/spi_priv.h index d46127d9..4c9bdab9 100644 --- a/system/libarc32_arduino101/drivers/spi_priv.h +++ b/system/libarc32_arduino101/drivers/spi_priv.h @@ -60,8 +60,9 @@ #define SPI_NDF_SET_MASK (0x0000ffff) #define SPI_SRL_SET_MASK (0xfffff7ff) #define SPI_TMOD_SET_MASK (0xfffffcff) -#define SPI_SCPL_SET_MASK (0xffffff7f) -#define SPI_SCPH_SET_MASK (0xffffffbf) +#define SPI_SCPL_SET_MASK (0x80) +#define SPI_SCPH_SET_MASK (0x40) +#define SPI_FRF_SET_MASK (0x30) #define SPI_DFS_SET_MASK (0xfffffff0) #define SPI_CLK_ENABLED (1 << 15) diff --git a/system/libarc32_arduino101/drivers/ss_spi.c b/system/libarc32_arduino101/drivers/ss_spi.c index 20689aba..1c945948 100644 --- a/system/libarc32_arduino101/drivers/ss_spi.c +++ b/system/libarc32_arduino101/drivers/ss_spi.c @@ -103,8 +103,8 @@ void ss_spi_set_data_mode(SPI_CONTROLLER controller_id, uint8_t dataMode) /* Set frame size, bus mode and transfer mode */ ctrl = READ_ARC_REG(dev->reg_base + CTRL); - ctrl &= (SPI_SCPL_SET_MASK & SPI_SCPH_SET_MASK); - ctrl = (dataMode << 6); + ctrl |= (SPI_SCPL_SET_MASK | SPI_SCPH_SET_MASK); + ctrl |= (dataMode << 4) & ~SPI_FRF_SET_MASK; WRITE_ARC_REG(ctrl, dev->reg_base + CTRL); /* re-enable controller */ diff --git a/variants/arduino_101/libarc32drv_arduino101.a b/variants/arduino_101/libarc32drv_arduino101.a index e0cb6b8e..fe76d732 100644 Binary files a/variants/arduino_101/libarc32drv_arduino101.a and b/variants/arduino_101/libarc32drv_arduino101.a differ