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