altos: PCA9922 LED driver needs Enable driven low to latch values
authorKeith Packard <keithp@keithp.com>
Thu, 20 Jun 2013 05:44:16 +0000 (22:44 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 20 Jun 2013 05:44:16 +0000 (22:44 -0700)
Driving Enable high means anything going past on the clock and data
pair is reflected on the LEDs, which isn't terribly useful

Signed-off-by: Keith Packard <keithp@keithp.com>
src/drivers/ao_pca9922.c

index 6d8d18d8f8eb7df1880eb9d3ca29887786180515..fe070b884909260b028ee53930b2698d59186c71 100644 (file)
@@ -30,9 +30,12 @@ ao_led_apply(void)
        /* Don't try the SPI bus during initialization */
        if (!ao_cur_task)
                return;
-       ao_spi_get_bit(AO_PCA9922_CS_PORT, AO_PCA9922_CS_PIN, AO_PCA9922_CS, AO_PCA9922_SPI_BUS, AO_SPI_SPEED_FAST);
+       ao_mutex_get(&ao_spi_mutex);
+       ao_spi_set_speed(AO_SPI_SPEED_FAST);
+       AO_PCA9922_CS = 1;
        ao_spi_send(&ao_led_state, 1, AO_PCA9922_SPI_BUS);
-       ao_spi_put_bit(AO_PCA9922_CS_PORT, AO_PCA9922_CS_PIN, AO_PCA9922_CS, AO_PCA9922_SPI_BUS);
+       AO_PCA9922_CS = 0;
+       ao_mutex_put(&ao_spi_mutex);
 }
 
 void