16280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna/* 26280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * chnldefs.h 36280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * 46280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * DSP-BIOS Bridge driver support functions for TI OMAP processors. 56280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * 66280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * System-wide channel objects and constants. 76280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * 86280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * Copyright (C) 2005-2006 Texas Instruments, Inc. 96280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * 106280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * This package is free software; you can redistribute it and/or modify 116280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * it under the terms of the GNU General Public License version 2 as 126280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * published by the Free Software Foundation. 136280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * 146280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 156280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 166280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 176280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna */ 186280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 196280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#ifndef CHNLDEFS_ 206280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNLDEFS_ 216280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 226280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna/* Channel id option. */ 236280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_PICKFREE (~0UL) /* Let manager pick a free channel. */ 246280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 256280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna/* Channel modes */ 266280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_MODETODSP 0 /* Data streaming to the DSP. */ 276280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_MODEFROMDSP 1 /* Data streaming from the DSP. */ 286280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 296280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna/* GetIOCompletion flags */ 306280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IOCINFINITE 0xffffffff /* Wait forever for IO completion. */ 316280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IOCNOWAIT 0x0 /* Dequeue an IOC, if available. */ 326280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 336280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna/* IO Completion Record status: */ 346280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IOCSTATCOMPLETE 0x0000 /* IO Completed. */ 356280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IOCSTATCANCEL 0x0002 /* IO was cancelled */ 366280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IOCSTATTIMEOUT 0x0008 /* Wait for IOC timed out. */ 376280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IOCSTATEOS 0x8000 /* End Of Stream reached. */ 386280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 396280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna/* Macros for checking I/O Completion status: */ 406280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IS_IO_COMPLETE(ioc) (!(ioc.status & ~CHNL_IOCSTATEOS)) 416280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IS_IO_CANCELLED(ioc) (ioc.status & CHNL_IOCSTATCANCEL) 426280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#define CHNL_IS_TIMED_OUT(ioc) (ioc.status & CHNL_IOCSTATTIMEOUT) 436280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 446280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna/* Channel attributes: */ 456280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Lunastruct chnl_attr { 466280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna u32 uio_reqs; /* Max # of preallocated I/O requests. */ 476280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna void *event_obj; /* User supplied auto-reset event object. */ 48ee4317f78c24cf85efd067f4c09319e281c4fa4aRene Sapiens char *str_event_name; /* Ptr to name of user event object. */ 496280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna void *reserved1; /* Reserved for future use. */ 506280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna u32 reserved2; /* Reserved for future use. */ 516280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 526280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna}; 536280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 546280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna/* I/O completion record: */ 556280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Lunastruct chnl_ioc { 56ee4317f78c24cf85efd067f4c09319e281c4fa4aRene Sapiens void *buf; /* Buffer to be filled/emptied. */ 576280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna u32 byte_size; /* Bytes transferred. */ 586280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna u32 buf_size; /* Actual buffer size in bytes */ 596280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna u32 status; /* Status of IO completion. */ 60ee4317f78c24cf85efd067f4c09319e281c4fa4aRene Sapiens u32 arg; /* User argument associated with buf. */ 616280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna}; 626280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna 636280238c13e16a105fe658e1b6e68380cbc9f055Omar Ramirez Luna#endif /* CHNLDEFS_ */ 64