1692f60a7Smrg/**********************************************************************
2692f60a7SmrgCopyright 2002 by Shigehiro Nomura.
3692f60a7Smrg
4692f60a7Smrg                        All Rights Reserved
5692f60a7Smrg
6692f60a7SmrgPermission to use, copy, modify, distribute, and sell this software and
7692f60a7Smrgits documentation for any purpose is hereby granted without fee,
8692f60a7Smrgprovided that the above copyright notice appear in all copies and that
9692f60a7Smrgboth that copyright notice and this permission notice appear in
10692f60a7Smrgsupporting documentation, and that the name of Shigehiro Nomura not be
11692f60a7Smrgused in advertising or publicity pertaining to distribution of the
12692f60a7Smrgsoftware without specific, written prior permission.  Shigehiro Nomura
13692f60a7Smrgand its suppliers make no representations about the suitability of this
14692f60a7Smrgsoftware for any purpose.  It is provided "as is" without express or
15692f60a7Smrgimplied warranty.
16692f60a7Smrg
17692f60a7SmrgSHIGEHIRO NOMURA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
18692f60a7SmrgINCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
19692f60a7SmrgEVENT SHALL SHIGEHIRO NOMURA AND/OR ITS SUPPLIERS BE LIABLE FOR ANY
20692f60a7SmrgSPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
21692f60a7SmrgRESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
22692f60a7SmrgCONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
23692f60a7SmrgCONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
24692f60a7Smrg**********************************************************************/
25692f60a7Smrg
26692f60a7Smrg#ifndef _NEO_VIDEO_H
27692f60a7Smrg#define _NEO_VIDEO_H
28692f60a7Smrg
29692f60a7Smrg#define ACC_MMIO
30692f60a7Smrg
31692f60a7Smrg#include "vgaHW.h"
32692f60a7Smrg#include "fourcc.h"
33692f60a7Smrg#include <X11/extensions/Xv.h>
34692f60a7Smrg
35692f60a7Smrg#define NEO_VIDEO_VIDEO		0
36692f60a7Smrg#define NEO_VIDEO_IMAGE		1
37692f60a7Smrg
38692f60a7Smrg#define FOURCC_RV15			0x35315652
39692f60a7Smrg#define FOURCC_RV16			0x36315652
40692f60a7Smrg
41692f60a7Smrg#define OFF_DELAY			200		/* milliseconds */
42692f60a7Smrg#define FREE_DELAY			60000	/* milliseconds */
43692f60a7Smrg
44692f60a7Smrg#define OFF_TIMER			0x01
45692f60a7Smrg#define FREE_TIMER			0x02
46692f60a7Smrg#define CLIENT_VIDEO_ON		0x04
47692f60a7Smrg#define TIMER_MASK			(OFF_TIMER | FREE_TIMER)
48692f60a7Smrg
49692f60a7Smrgtypedef struct
50692f60a7Smrg{
51692f60a7Smrg    FBLinearPtr	linear;
52692f60a7Smrg    RegionRec	clip;
53692f60a7Smrg    CARD32	colorKey;
54692f60a7Smrg    CARD32	interlace;
55692f60a7Smrg    CARD32	brightness;
56692f60a7Smrg    CARD32	videoStatus;
57692f60a7Smrg    Time	offTime;
58692f60a7Smrg    Time	freeTime;
59692f60a7Smrg} NEOPortRec, *NEOPortPtr;
60692f60a7Smrg
61692f60a7Smrgtypedef struct
62692f60a7Smrg{
63692f60a7Smrg    FBLinearPtr	linear;
64692f60a7Smrg    Bool	isOn;
65692f60a7Smrg} NEOOffscreenRec, *NEOOffscreenPtr;
66692f60a7Smrg
67692f60a7Smrg/* I/O Functions */
68692f60a7Smrg# define OUTGR(idx,dat) \
69692f60a7Smrg   if (nPtr->NeoMMIOBase2) \
70692f60a7Smrg     (*(unsigned short *)(nPtr->NeoMMIOBase2+VGA_GRAPH_INDEX)\
71692f60a7Smrg                                                     =(idx)|((dat)<<8));\
72692f60a7Smrg   else \
73692f60a7Smrg      VGAwGR((idx),(dat));
74692f60a7Smrg
75692f60a7Smrg#  define OUTSR(idx,dat) \
76692f60a7Smrgif (nPtr->NeoMMIOBase2) \
77692f60a7Smrg   (*(unsigned short *)(nPtr->NeoMMIOBase2+VGA_SEQ_INDEX)=(idx)|((dat)<<8));\
78692f60a7Smrgelse \
79692f60a7Smrg   VGAwSR((idx),(dat));
80692f60a7Smrg
81692f60a7Smrg# define VGA_HWP(x)     vgaHWPtr hwp = VGAHWPTR(x)
82692f60a7Smrg
83692f60a7Smrg#endif /* _NEO_VIDEO_H */
84