diff options
Diffstat (limited to 'c/src/lib/libbsp/sparc/shared/include/grpci2dma.h')
-rw-r--r-- | c/src/lib/libbsp/sparc/shared/include/grpci2dma.h | 263 |
1 files changed, 0 insertions, 263 deletions
diff --git a/c/src/lib/libbsp/sparc/shared/include/grpci2dma.h b/c/src/lib/libbsp/sparc/shared/include/grpci2dma.h deleted file mode 100644 index c1a2663a86..0000000000 --- a/c/src/lib/libbsp/sparc/shared/include/grpci2dma.h +++ /dev/null @@ -1,263 +0,0 @@ -/* - * GRPCI2 DMA Driver - * - * COPYRIGHT (c) 2017 - * Cobham Gaisler AB - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - * - * OVERVIEW - * ======== - * This driver controls the DMA on the GRPCI2 device, located - * at an on-chip AMBA. - */ - -#ifndef __GRPCI2DMA_H__ -#define __GRPCI2DMA_H__ - -#include <stdint.h> -#include <stdio.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* Error return codes */ -#define GRPCI2DMA_ERR_OK 0 -#define GRPCI2DMA_ERR_WRONGPTR -1 -#define GRPCI2DMA_ERR_NOINIT -2 -#define GRPCI2DMA_ERR_TOOMANY -3 -#define GRPCI2DMA_ERR_ERROR -4 -#define GRPCI2DMA_ERR_STOPDMA -5 -#define GRPCI2DMA_ERR_NOTFOUND -6 - -/* Size of a dma descriptors */ -#define GRPCI2DMA_BD_CHAN_SIZE 0x10 -#define GRPCI2DMA_BD_DATA_SIZE 0x10 - -/* Alignment of dma descriptors */ -#define GRPCI2DMA_BD_CHAN_ALIGN 0x10 -#define GRPCI2DMA_BD_DATA_ALIGN 0x10 - -/* User-helper functions to allocate/deallocate - * channel and data descriptors - */ -extern void * grpci2dma_channel_new(int number); -extern void grpci2dma_channel_delete(void * chanbd); -extern void * grpci2dma_data_new(int number); -extern void grpci2dma_data_delete(void * databd); - -/* Function: - * -grpci2dma_prepare - * Description: - * -Prepare a transfer, initializing the required data descriptors - * Parameters: - * -pci_start: Where in PCI/remote starts the transfer - * -ahb_start: Where in AHB/local starts the transfer - * -dir: Direction of the transfer (AHBTOPCI or PCITOAHB) - * -endianness: Endianness of the transfer (LITTLEENDIAN or BIGENDIAN) - * -size: Size in bytes of the transfer (the function will calculate if there - * are enough descriptors) - * -databd: Pointer to the data descriptor buffer - * -bdindex: Where in the buffer to start the transfer - * -bdmax: Maximum index for the data descriptor buffer - * -block_size: Size in bytes for each PCI transaction (or block). Guaranteed - * to be at least smaller that this value. Put 0 to use default. - * Default is maximum, which is 0x10000*4 bytes. - * Returns: - * -WRONGPTR: Wrong input parameters - * -TOOMANY: Not enough data descriptors in the buffer - * -value > 0: A positive return value means the number of data descriptors - * prepared/used in the buffer, starting from index. - */ -#define GRPCI2DMA_AHBTOPCI 1 -#define GRPCI2DMA_PCITOAHB 0 -#define GRPCI2DMA_LITTLEENDIAN 1 -#define GRPCI2DMA_BIGENDIAN 0 -extern int grpci2dma_prepare( - uint32_t pci_start, uint32_t ahb_start, int dir, int endianness, - int size, void * databd, int bdindex, int bdmax, int block_size); - -/* Function: - * -grpci2dma_status - * Description: - * -Status of an transfer: - * Parameters: - * -databd: Pointer to the data descriptor buffer - * -bdindex: Where in the buffer starts the transfer - * -bdsize: Number of descriptors used by the transfer - * Returns: - * -WRONGPTR: Wrong input parameters - * -GRPCI2DMA_BD_DATA_STATUS_ERR: If at least one of the descriptors has an - * error - * -GRPCI2DMA_BD_DATA_STATUS_ENABLED: If at least one of the descriptors is - * enabled, which means that the transfer is still not finished. - * -GRPCI2DMA_BD_DATA_STATUS_DISABLED: If all the descriptors are disabled, - * which means that either the transfer finished or it was never prepared. - */ -#define GRPCI2DMA_BD_STATUS_DISABLED 0 -#define GRPCI2DMA_BD_STATUS_ENABLED 1 -#define GRPCI2DMA_BD_STATUS_ERR 2 -extern int grpci2dma_status(void *databd, int bdindex, int bdsize); - -/* Function Interrupt-Code ISR callback prototype. - * arg - Custom arg provided by user - * cid - Channel ID that got the interrupt - * status - Error status of the DMA core - */ -typedef void (*grpci2dma_isr_t)(void *arg, int cid, unsigned int status); - -/* Function: - * -grpci2dma_isr_register - * Description: - * -Register an ISR for a channel (and enable interrupts if disabled) - * Parameters: - * -chan_no: ID of the channel - * -dmaisr: ISR - * -arg: Argument to pass to the ISR when called - * Returns: - * -NOINIT: GRPCI2 DMA not initialized - * -WRONGPTR: Wrong input parameters - * -OK (=0): Done - */ -extern int grpci2dma_isr_register( - int chan_no, grpci2dma_isr_t dmaisr, void *arg); - -/* Function: - * -grpci2dma_isr_unregister - * Description: - * -Unregister an ISR for a channel (and enable interrupts if disabled) - * Parameters: - * -chan_no: ID of the channel - * Returns: - * -NOINIT: GRPCI2 DMA not initialized - * -WRONGPTR: Wrong input parameters - * -OK (=0): Done - */ -extern int grpci2dma_isr_unregister(int chan_no); - -/* Function: - * -grpci2dma_open - * Description: - * -Open a channel (and allocate the descriptor if the user does not provide - * one). - * Parameters: - * -chan: Descriptor for the channel (must be aligned to 0x10) - * Returns: - * -NOINIT: GRPCI2 DMA not initialized - * -TOOMANY: Maximum number of channels already opened. - * -WRONGPTR: Wrong input parameters - * -ERROR: Inconsistent state found in driver - * -value > 0: A positive return value means the id for the channel. - */ -extern int grpci2dma_open(void * chan); - -/* Function: - * -grpci2dma_close - * Description: - * -Stop and close a channel (and deallocate it if the user did not provide a - * pointer when opening it) - * Parameters: - * -chan_no: Id of the channel - * Returns: - * -NOINIT: GRPCI2 DMA not initialized - * -NOTFOUND: Channel not opened. - * -STOPDMA: Cannot stop channel. - * -WRONGPTR: Wrong input parameters - * -OK (=0): Done. - */ -extern int grpci2dma_close(int chan_no); - -/* Function: - * -grpci2dma_start - * Description: - * -Start a channel - * Parameters: - * -chan_no: Id of the channel - * -options: Maximum number of data descriptors to be executed before moving - * to next channel (up to 0x10000) - * Returns: - * -NOINIT: GRPCI2 DMA not initialized - * -WRONGPTR: Wrong input parameters - * -ERROR: Inconsistent state found in driver - * -OK (=0): Done. - */ -extern int grpci2dma_start(int chan_no, int options); - -/* Function: - * -grpci2dma_stop - * Description: - * -Start a channel - * Parameters: - * -chan_no: Id of the channel - * Returns: - * -NOINIT: GRPCI2 DMA not initialized - * -WRONGPTR: Wrong input parameters - * -ERROR: Inconsistent state found in driver - * -OK (=0): Done. - */ -extern int grpci2dma_stop(int chan_no); - -/* Function: - * -grpci2dma_push - * Description: - * -Push a transfer into a channel (already started or not) - * Parameters: - * -chan_no: Id of the channel - * -databd: Pointer to the data descriptor buffer - * -bdindex: Where in the buffer starts the transfer - * -bdsize: Number of descriptors used by the transfer - * Returns: - * -NOINIT: GRPCI2 DMA not initialized - * -WRONGPTR: Wrong input parameters - * -NOTFOUND: Channel not opened. - * -OK (=0): Done. - */ -extern int grpci2dma_push(int chan_no, void *databd, int bdindex, int bdsize); - -/* Function: - * -grpci2dma_active - * Description: - * -Check if dma is active - * Parameters: - * Returns: - * -(!=0): Active. - * -(=0): Not active. - */ -extern int grpci2dma_active(void); - -/* Function: - * -grpci2dma_interrupt_enable - * Description: - * -Enable interrupt for a transfer - * Parameters: - * -databd: Pointer to the data descriptor buffer - * -bdindex: Where in the buffer starts the transfer - * -bdmax: Upper limit for index. index < bdmax - * -options: - * (=GRPCI2DMA_OPTIONS_ALL)=Enable interrupt on all transfer descriptors. - * (=GRPCI2DMA_OPTIONS_ONE)=Enable interrupt on transfer descriptor - * indicated by bdindex. - * Returns: - * -NOINIT: GRPCI2 DMA not initialized - * -WRONGPTR: Wrong input parameters - * -ERROR: Inconsistent state found in driver - * -OK (=0): Done. - */ -#define GRPCI2DMA_OPTIONS_ALL 1 -#define GRPCI2DMA_OPTIONS_ONE 0 -extern int grpci2dma_interrupt_enable( - void *databd, int bdindex, int bdmax, int options); - -/* Debug function: print dma channel and associated data descriptors. - * Only prints if driver internal DEBUG flag is defined. */ -extern int grpci2dma_print(int chan_no); -extern int grpci2dma_print_bd(void * data); - -#ifdef __cplusplus -} -#endif - -#endif /* __GRPCI2DMA_H__ */ |