linux/drivers/staging/tidspbridge/include/dspbridge/chnldefs.h
<<
>>
Prefs
   1/*
   2 * chnldefs.h
   3 *
   4 * DSP-BIOS Bridge driver support functions for TI OMAP processors.
   5 *
   6 * System-wide channel objects and constants.
   7 *
   8 * Copyright (C) 2005-2006 Texas Instruments, Inc.
   9 *
  10 * This package is free software; you can redistribute it and/or modify
  11 * it under the terms of the GNU General Public License version 2 as
  12 * published by the Free Software Foundation.
  13 *
  14 * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  15 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  16 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  17 */
  18
  19#ifndef CHNLDEFS_
  20#define CHNLDEFS_
  21
  22/* Channel id option. */
  23#define CHNL_PICKFREE       (~0UL)      /* Let manager pick a free channel. */
  24
  25/* Channel modes */
  26#define CHNL_MODETODSP          0       /* Data streaming to the DSP. */
  27#define CHNL_MODEFROMDSP        1       /* Data streaming from the DSP. */
  28
  29/* GetIOCompletion flags */
  30#define CHNL_IOCINFINITE     0xffffffff /* Wait forever for IO completion. */
  31#define CHNL_IOCNOWAIT       0x0        /* Dequeue an IOC, if available. */
  32
  33/* IO Completion Record status: */
  34#define CHNL_IOCSTATCOMPLETE 0x0000     /* IO Completed. */
  35#define CHNL_IOCSTATCANCEL   0x0002     /* IO was cancelled */
  36#define CHNL_IOCSTATTIMEOUT  0x0008     /* Wait for IOC timed out. */
  37#define CHNL_IOCSTATEOS      0x8000     /* End Of Stream reached. */
  38
  39/* Macros for checking I/O Completion status: */
  40#define CHNL_IS_IO_COMPLETE(ioc)  (!(ioc.status & ~CHNL_IOCSTATEOS))
  41#define CHNL_IS_IO_CANCELLED(ioc) (ioc.status & CHNL_IOCSTATCANCEL)
  42#define CHNL_IS_TIMED_OUT(ioc)    (ioc.status & CHNL_IOCSTATTIMEOUT)
  43
  44/* Channel attributes: */
  45struct chnl_attr {
  46        u32 uio_reqs;           /* Max # of preallocated I/O requests. */
  47        void *event_obj;        /* User supplied auto-reset event object. */
  48        char *str_event_name;   /* Ptr to name of user event object. */
  49        void *reserved1;        /* Reserved for future use. */
  50        u32 reserved2;          /* Reserved for future use. */
  51
  52};
  53
  54/* I/O completion record: */
  55struct chnl_ioc {
  56        void *buf;              /* Buffer to be filled/emptied. */
  57        u32 byte_size;          /* Bytes transferred. */
  58        u32 buf_size;           /* Actual buffer size in bytes */
  59        u32 status;             /* Status of IO completion. */
  60        u32 arg;                /* User argument associated with buf. */
  61};
  62
  63#endif /* CHNLDEFS_ */
  64