From ba938b8d7d7d8dde2899e9428b752339d32190c2 Mon Sep 17 00:00:00 2001 From: Thomas Doerfler Date: Fri, 18 Sep 2009 08:05:40 +0000 Subject: Changes throughout. --- c/src/lib/libbsp/arm/lpc24xx/include/dma.h | 63 +++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 5 deletions(-) (limited to 'c/src/lib/libbsp/arm/lpc24xx/include/dma.h') diff --git a/c/src/lib/libbsp/arm/lpc24xx/include/dma.h b/c/src/lib/libbsp/arm/lpc24xx/include/dma.h index 0871372a2c..2f49b1d249 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/include/dma.h +++ b/c/src/lib/libbsp/arm/lpc24xx/include/dma.h @@ -1,9 +1,9 @@ /** * @file * - * @ingroup lpc24xx + * @ingroup lpc24xx_dma * - * @brief DMA support. + * @brief Direct memory access (DMA) support. */ /* @@ -12,10 +12,11 @@ * Obere Lagerstr. 30 * D-82178 Puchheim * Germany - * rtems@embedded-brains.de + * * - * The license and distribution terms for this file may be found in the file - * LICENSE in this distribution or at http://www.rtems.com/license/LICENSE. + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. */ #ifndef LIBBSP_ARM_LPC24XX_DMA_H @@ -27,14 +28,66 @@ extern "C" { #endif /* __cplusplus */ +/** + * @defgroup lpc24xx_dma DMA Support + * + * @ingroup lpc24xx + * + * @brief Direct memory access (DMA) support. + * + * @{ + */ + +/** + * @brief Initializes the general purpose DMA. + */ void lpc24xx_dma_initialize(void); +/** + * @brief Tries to obtain the DMA channel @a channel. + * + * @retval RTEMS_SUCCESSFUL Successful operation. + * @retval RTEMS_INVALID_ID Invalid channel number. + * @retval RTEMS_RESOURCE_IN_USE Channel already occupied. + */ rtems_status_code lpc24xx_dma_channel_obtain(unsigned channel); +/** + * @brief Releases the DMA channel @a channel. + * + * You must have obtained this channel with lpc24xx_dma_channel_obtain() + * previously. + * + * If the channel number @a channel is out of range nothing will happen. + */ void lpc24xx_dma_channel_release(unsigned channel); +/** + * @brief Disables the DMA channel @a channel. + * + * If @a force is @c false the channel will be halted and disabled when the + * channel is inactive otherwise it will be disabled immediately. + * + * If the channel number @a channel is out of range nothing will happen. + */ void lpc24xx_dma_channel_disable(unsigned channel, bool force); +rtems_status_code lpc24xx_dma_copy_initialize(void); + +rtems_status_code lpc24xx_dma_copy_release(void); + +rtems_status_code lpc24xx_dma_copy( + unsigned channel, + void *dest, + const void *src, + size_t n, + size_t width +); + +rtems_status_code lpc24xx_dma_copy_wait(unsigned channel); + +/** @} */ + #ifdef __cplusplus } #endif /* __cplusplus */ -- cgit v1.2.3