altos: Add support for multiple SPI busses and sharing device drivers
[fw/altos] / src / cc1111 / ao_spi.c
index fbe613c759762bc4766f8ab47e9c56362fcc2d88..1bf5e1551b0c7a9013c009880f3326e875e3dfe4 100644 (file)
@@ -28,7 +28,7 @@ __xdata uint8_t ao_spi_dma_out_done;
 uint8_t        ao_spi_dma_out_id;
 uint8_t ao_spi_dma_in_id;
 
-static __xdata uint8_t ao_spi_const = 0xff;
+static __xdata uint8_t ao_spi_const;
 
 /* Send bytes over SPI.
  *
@@ -38,7 +38,7 @@ static __xdata uint8_t ao_spi_const = 0xff;
  * completion one byte before the transfer is actually complete
  */
 void
-ao_spi_send(void __xdata *block, uint16_t len) __reentrant
+ao_spi_send_bus(void __xdata *block, uint16_t len) __reentrant
 {
        ao_dma_set_transfer(ao_spi_dma_in_id,
                            &U0DBUFXADDR,
@@ -76,7 +76,7 @@ ao_spi_send(void __xdata *block, uint16_t len) __reentrant
  * clocks the data coming in.
  */
 void
-ao_spi_recv(void __xdata *block, uint16_t len) __reentrant
+ao_spi_recv_bus(void __xdata *block, uint16_t len) __reentrant
 {
        ao_dma_set_transfer(ao_spi_dma_in_id,
                            &U0DBUFXADDR,
@@ -89,6 +89,8 @@ ao_spi_recv(void __xdata *block, uint16_t len) __reentrant
                            DMA_CFG1_DESTINC_1 |
                            DMA_CFG1_PRIORITY_NORMAL);
 
+       ao_spi_const = 0xff;
+
        ao_dma_set_transfer(ao_spi_dma_out_id,
                            &ao_spi_const,
                            &U0DBUFXADDR,