diff options
Diffstat (limited to 'os')
| -rw-r--r-- | os/io/platforms/STM32/spi_lld.c | 24 | ||||
| -rw-r--r-- | os/io/platforms/STM32/spi_lld.h | 2 | ||||
| -rw-r--r-- | os/io/spi.c | 34 | ||||
| -rw-r--r-- | os/io/spi.h | 2 | ||||
| -rw-r--r-- | os/io/templates/spi_lld.c | 22 | ||||
| -rw-r--r-- | os/io/templates/spi_lld.h | 2 | ||||
| -rw-r--r-- | os/ports/GCC/ARMCM3/chcore.c | 2 | 
7 files changed, 53 insertions, 35 deletions
diff --git a/os/io/platforms/STM32/spi_lld.c b/os/io/platforms/STM32/spi_lld.c index 934501cf6..8cd7ba8e1 100644 --- a/os/io/platforms/STM32/spi_lld.c +++ b/os/io/platforms/STM32/spi_lld.c @@ -301,9 +301,13 @@ void spi_lld_unselect(SPIDriver *spip) {   * @details This function performs a simultaneous transmit/receive operation.
   *
   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to exchange
 - * @param rxbuf the pointer to the receive buffer
 - * @param txbuf the pointer to the transmit buffer
 + * @param[in] n number of words to exchange
 + * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
 + *                  organized as an uint8_t array for data sizes below or equal
 + *                  to 8 bits else it is organized as an uint16_t array.
 + * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
 + *                   organized as an uint8_t array for data sizes below or equal
 + *                   to 8 bits else it is organized as an uint16_t array.
   * @return The operation status is returned.
   * @retval RDY_OK operation complete.
   * @retval RDY_RESET hardware failure.
 @@ -311,7 +315,7 @@ void spi_lld_unselect(SPIDriver *spip) {   * @note The buffers are organized as uint8_t arrays for data sizes below or
   *       equal to 8 bits else it is organized as uint16_t arrays.
   */
 -msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) {
 +msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf) {
    spip->spd_dmarx->CCR = DMA_CCR1_TCIE | DMA_CCR1_MINC | DMA_CCR1_TEIE;
    spip->spd_dmatx->CCR = DMA_CCR1_DIR  | DMA_CCR1_MINC | DMA_CCR1_TEIE;
 @@ -323,8 +327,10 @@ msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) {   * @brief Sends data ever the SPI bus.
   *
   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to send
 - * @param txbuf the pointer to the transmit buffer
 + * @param[in] n number of words to send
 + * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
 + *                  organized as an uint8_t array for data sizes below or equal
 + *                  to 8 bits else it is organized as an uint16_t array.
   * @return The operation status is returned.
   * @retval RDY_OK operation complete.
   * @retval RDY_RESET hardware failure.
 @@ -344,8 +350,10 @@ msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf) {   * @brief Receives data from the SPI bus.
   *
   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to receive
 - * @param rxbuf the pointer to the receive buffer
 + * @param[in] n number of words to receive
 + * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
 + *                   organized as an uint8_t array for data sizes below or equal
 + *                   to 8 bits else it is organized as an uint16_t array.
   * @return The operation status is returned.
   * @retval RDY_OK operation complete.
   * @retval RDY_RESET hardware failure.
 diff --git a/os/io/platforms/STM32/spi_lld.h b/os/io/platforms/STM32/spi_lld.h index 671659d72..077c7be7f 100644 --- a/os/io/platforms/STM32/spi_lld.h +++ b/os/io/platforms/STM32/spi_lld.h @@ -186,7 +186,7 @@ extern "C" {    void spi_lld_stop(SPIDriver *spip);
    void spi_lld_select(SPIDriver *spip);
    void spi_lld_unselect(SPIDriver *spip);
 -  msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf);
 +  msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf);
    msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf);
    msg_t spi_lld_receive(SPIDriver *spip, size_t n, void *rxbuf);
  #ifdef __cplusplus
 diff --git a/os/io/spi.c b/os/io/spi.c index 5cf51e76e..231fc7ad2 100644 --- a/os/io/spi.c +++ b/os/io/spi.c @@ -125,19 +125,15 @@ void spiUnselect(SPIDriver *spip) {   * @details This function performs a simultaneous transmit/receive operation.
   *   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to be exchanged - * @param rxbuf the pointer to the receive buffer, if @p NULL is specified then
 - *              the input data is discarded.
 - *              Note that the buffer is organized as an uint8_t array for
 - *              data sizes below or equal to 8 bits else it is organized as
 - *              an uint16_t array.
 - * @param txbuf the pointer to the transmit buffer, if @p NULL is specified all
 - *              ones are transmitted.
 - *              Note that the buffer is organized as an uint8_t array for
 - *              data sizes below or equal to 8 bits else it is organized as
 - *              an uint16_t array. + * @param[in] n number of words to be exchanged + * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
 + *                  organized as an uint8_t array for data sizes below or equal
 + *                  to 8 bits else it is organized as an uint16_t array. + * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
 + *                   organized as an uint8_t array for data sizes below or equal
 + *                   to 8 bits else it is organized as an uint16_t array.
   */
 -msg_t spiExchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) {
 +msg_t spiExchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf) {
    chDbgCheck((spip != NULL) && (n > 0) && (rxbuf != NULL) && (txbuf != NULL),
               "spiExchange");
 @@ -145,15 +141,17 @@ msg_t spiExchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) {                "spiExchange(), #1",
                "not active");
 -  return spi_lld_exchange(spip, n, rxbuf, txbuf);
 +  return spi_lld_exchange(spip, n, txbuf, rxbuf);
  }
  /**
   * @brief Sends data ever the SPI bus.
   *
   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to send
 - * @param txbuf the pointer to the transmit buffer
 + * @param[in] n number of words to send
 + * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
 + *                  organized as an uint8_t array for data sizes below or equal
 + *                  to 8 bits else it is organized as an uint16_t array.
   * @return The operation status is returned.
   * @retval RDY_OK operation complete.
   * @retval RDY_RESET hardware failure.
 @@ -176,8 +174,10 @@ msg_t spiSend(SPIDriver *spip, size_t n, void *txbuf) {   * @brief Receives data from the SPI bus.
   *
   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to receive
 - * @param rxbuf the pointer to the receive buffer
 + * @param[in] n number of words to receive
 + * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
 + *                   organized as an uint8_t array for data sizes below or equal
 + *                   to 8 bits else it is organized as an uint16_t array.
   * @return The operation status is returned.
   * @retval RDY_OK operation complete.
   * @retval RDY_RESET hardware failure.
 diff --git a/os/io/spi.h b/os/io/spi.h index e0a163db2..b8e434cd5 100644 --- a/os/io/spi.h +++ b/os/io/spi.h @@ -59,7 +59,7 @@ extern "C" {    void spiStop(SPIDriver *spip);
    void spiSelect(SPIDriver *spip);
    void spiUnselect(SPIDriver *spip);
 -  msg_t spiExchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf);
 +  msg_t spiExchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf);
    msg_t spiSend(SPIDriver *spip, size_t n, void *txbuf);
    msg_t spiReceive(SPIDriver *spip, size_t n, void *rxbuf);
  #if SPI_USE_MUTUAL_EXCLUSION
 diff --git a/os/io/templates/spi_lld.c b/os/io/templates/spi_lld.c index c212946e0..dc2efca24 100644 --- a/os/io/templates/spi_lld.c +++ b/os/io/templates/spi_lld.c @@ -92,9 +92,13 @@ void spi_lld_unselect(SPIDriver *spip) {   * @details This function performs a simultaneous transmit/receive operation.
   *
   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to exchange
 - * @param rxbuf the pointer to the receive buffer
 - * @param txbuf the pointer to the transmit buffer
 + * @param[in] n number of words to exchange
 + * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
 + *                  organized as an uint8_t array for data sizes below or equal
 + *                  to 8 bits else it is organized as an uint16_t array.
 + * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
 + *                   organized as an uint8_t array for data sizes below or equal
 + *                   to 8 bits else it is organized as an uint16_t array.
   * @return The operation status is returned.
   * @retval RDY_OK operation complete.
   * @retval RDY_RESET hardware failure.
 @@ -110,8 +114,10 @@ msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) {   * @brief Sends data ever the SPI bus.
   *
   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to send
 - * @param txbuf the pointer to the transmit buffer
 + * @param[in] n number of words to send
 + * @param[in] txbuf the pointer to the transmit buffer. Note that the buffer is
 + *                  organized as an uint8_t array for data sizes below or equal
 + *                  to 8 bits else it is organized as an uint16_t array.
   * @return The operation status is returned.
   * @retval RDY_OK operation complete.
   * @retval RDY_RESET hardware failure.
 @@ -127,8 +133,10 @@ msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf) {   * @brief Receives data from the SPI bus.
   *
   * @param[in] spip pointer to the @p SPIDriver object
 - * @param n number of words to receive
 - * @param rxbuf the pointer to the receive buffer
 + * @param[in] n number of words to receive
 + * @param[out] rxbuf the pointer to the receive buffer. Note that the buffer is
 + *                   organized as an uint8_t array for data sizes below or equal
 + *                   to 8 bits else it is organized as an uint16_t array.
   * @return The operation status is returned.
   * @retval RDY_OK operation complete.
   * @retval RDY_RESET hardware failure.
 diff --git a/os/io/templates/spi_lld.h b/os/io/templates/spi_lld.h index 4017d2418..e25dc86dd 100644 --- a/os/io/templates/spi_lld.h +++ b/os/io/templates/spi_lld.h @@ -94,7 +94,7 @@ extern "C" {    void spi_lld_stop(SPIDriver *spip);
    void spi_lld_select(SPIDriver *spip);
    void spi_lld_unselect(SPIDriver *spip);
 -  msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf);
 +  msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *txbuf, void *rxbuf);
    msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf);
    msg_t spi_lld_receive(SPIDriver *spip, size_t n, void *rxbuf);
  #ifdef __cplusplus
 diff --git a/os/ports/GCC/ARMCM3/chcore.c b/os/ports/GCC/ARMCM3/chcore.c index 8c421867c..47480217d 100644 --- a/os/ports/GCC/ARMCM3/chcore.c +++ b/os/ports/GCC/ARMCM3/chcore.c @@ -88,6 +88,8 @@ void SVCallVector(Thread *otp, Thread *ntp) {    /* pop the registers from the PSP stack */
    /* set the PSP from r12 */
    /* set the BASEPRI from R3 */
 +  (void)otp;
 +  (void)ntp;
  #ifdef CH_CURRP_REGISTER_CACHE
    asm volatile ("mrs     r3, BASEPRI                            \n\t" \
                  "mrs     r12, PSP                               \n\t" \
  | 
