diff --git a/drivers/chibios/spi_master.c b/drivers/chibios/spi_master.c index 5aa60742e..8341b59a5 100644 --- a/drivers/chibios/spi_master.c +++ b/drivers/chibios/spi_master.c @@ -115,11 +115,17 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { return true; } -spi_status_t spi_write(uint8_t data) { return spi_transmit(&data, 1); } +spi_status_t spi_write(uint8_t data) { + uint8_t rxData; + spiExchange(&SPI_DRIVER, 1, &data, &rxData); + + return rxData; +} spi_status_t spi_read(void) { uint8_t data = 0; - spi_receive(&data, 1); + spiReceive(&SPI_DRIVER, 1, &data); + return data; } diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 3297f3a71..d277029e4 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -628,7 +628,7 @@ void rgblight_sethsv_slave(uint8_t hue, uint8_t sat, uint8_t val) { rgblight_set #ifdef RGBLIGHT_LAYERS void rgblight_set_layer_state(uint8_t layer, bool enabled) { - rgblight_layer_mask_t mask = 1 << layer; + rgblight_layer_mask_t mask = (rgblight_layer_mask_t)1 << layer; if (enabled) { rgblight_status.enabled_layer_mask |= mask; } else { @@ -649,7 +649,7 @@ void rgblight_set_layer_state(uint8_t layer, bool enabled) { } bool rgblight_get_layer_state(uint8_t layer) { - rgblight_layer_mask_t mask = 1 << layer; + rgblight_layer_mask_t mask = (rgblight_layer_mask_t)1 << layer; return (rgblight_status.enabled_layer_mask & mask) != 0; } @@ -688,14 +688,14 @@ static uint16_t _blink_timer; void rgblight_blink_layer(uint8_t layer, uint16_t duration_ms) { rgblight_set_layer_state(layer, true); - _blinked_layer_mask |= 1 << layer; + _blinked_layer_mask |= (rgblight_layer_mask_t)1 << layer; _blink_timer = sync_timer_read() + duration_ms; } void rgblight_unblink_layers(void) { if (_blinked_layer_mask != 0 && timer_expired(sync_timer_read(), _blink_timer)) { for (uint8_t layer = 0; layer < RGBLIGHT_MAX_LAYERS; layer++) { - if ((_blinked_layer_mask & 1 << layer) != 0) { + if ((_blinked_layer_mask & (rgblight_layer_mask_t)1 << layer) != 0) { rgblight_set_layer_state(layer, false); } }