summaryrefslogtreecommitdiff
path: root/src/xine-engine/nvtvd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/xine-engine/nvtvd.h')
-rw-r--r--src/xine-engine/nvtvd.h1249
1 files changed, 1249 insertions, 0 deletions
diff --git a/src/xine-engine/nvtvd.h b/src/xine-engine/nvtvd.h
new file mode 100644
index 000000000..11ef2284d
--- /dev/null
+++ b/src/xine-engine/nvtvd.h
@@ -0,0 +1,1249 @@
+/*
+ * Copyright (C) 2000-2002 the xine project
+ *
+ * This file is part of xine, a unix video player.
+ *
+ * xine is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * xine is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id: nvtvd.h,v 1.1 2002/06/10 21:42:45 mshopf Exp $
+ *
+ * nvtvd - Routines for communication with nvtvd.
+ *
+ * This is the combination of several files from the nvtvd package
+ * by Dirk Thierbach <dthierbach@gmx.de>. They have been inserted into
+ * one single file in order not to clutter the source filespace too much.
+ * The only change has been the removal of some '#include' statements.
+ *
+ * This file contains (in this order):
+ * Xdefs.h miscstruct.h xfree.h nv_tvchip.h backend.h back_client.h
+ */
+
+
+/* $XFree86: xc/include/Xdefs.h,v 1.2 1999/08/22 06:21:20 dawes Exp $ */
+
+/***********************************************************
+
+Copyright (c) 1999 The XFree86 Project Inc.
+
+All Rights Reserved.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The XFree86 Project
+Inc. shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from The XFree86 Project Inc..
+
+*/
+
+/**
+ ** Types definitions shared between server and clients
+ **/
+
+#ifndef _XDEFS_H
+#define _XDEFS_H
+
+#ifdef _XSERVER64
+#include <Xmd.h>
+#endif
+
+#ifndef _XTYPEDEF_ATOM
+# define _XTYPEDEF_ATOM
+# ifndef _XSERVER64
+typedef unsigned long Atom;
+# else
+typedef CARD32 Atom;
+# endif
+#endif
+
+#ifndef Bool
+# ifndef _XTYPEDEF_BOOL
+# define _XTYPEDEF_BOOL
+typedef int Bool;
+# endif
+#endif
+
+#ifndef _XTYPEDEF_POINTER
+# define _XTYPEDEF_POINTER
+typedef void *pointer;
+#endif
+
+#ifndef _XTYPEDEF_CLIENTPTR
+typedef struct _Client *ClientPtr;
+# define _XTYPEDEF_CLIENTPTR
+#endif
+
+#ifndef _XTYPEDEF_XID
+# define _XTYPEDEF_XID
+# ifndef _XSERVER64
+typedef unsigned long XID;
+# else
+typedef CARD32 XID;
+# endif
+#endif
+
+#ifndef _XTYPEDEF_MASK
+# define _XTYPEDEF_MASK
+# ifndef _XSERVER64
+typedef unsigned long Mask;
+# else
+typedef CARD32 Mask;
+# endif
+#endif
+
+#ifndef _XTYPEDEF_FONTPTR
+# define _XTYPEDEF_FONTPTR
+typedef struct _Font *FontPtr; /* also in fonts/include/font.h */
+#endif
+
+#ifndef _XTYPEDEF_FONT
+# define _XTYPEDEF_FONT
+typedef XID Font;
+#endif
+
+#ifndef _XTYPEDEF_FSID
+# ifndef _XSERVER64
+typedef unsigned long FSID;
+# else
+typedef CARD32 FSID;
+# endif
+#endif
+
+typedef FSID AccContext;
+
+/* OS independant time value
+ XXX Should probably go in Xos.h */
+typedef struct timeval **OSTimePtr;
+
+
+typedef void (* BlockHandlerProcPtr)(pointer /* blockData */,
+ OSTimePtr /* pTimeout */,
+ pointer /* pReadmask */);
+
+#endif
+/* Excerpt from: miscstruct.h and misc.h */
+
+/* $TOG: miscstruct.h /main/11 1998/02/09 14:29:04 kaleb $ */
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+All Rights Reserved.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+/* $XFree86: xc/programs/Xserver/include/miscstruct.h,v 3.0 1996/02/18 03:45:10 dawes Exp $ */
+
+#ifndef MISCSTRUCT_H
+#define MISCSTRUCT_H 1
+
+/**** misc.h */
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+/**** miscstruct.h */
+
+typedef struct _Box {
+ short x1, y1, x2, y2;
+} BoxRec;
+
+typedef union _DevUnion {
+ pointer ptr;
+ long val;
+ unsigned long uval;
+ pointer (*fptr)(void);
+} DevUnion;
+
+#endif /* MISCSTRUCT_H */
+
+/* NVTV xfree -- Dirk Thierbach <dthierbach@gmx.de>
+ *
+ * Header: All definitions from xfree that are needed.
+ *
+ */
+
+#ifndef _XFREE_H
+#define _XFREE_H 1
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <X11/Xmd.h>
+
+#define DEBUG(x) /*x*/
+#define ErrorF(x...) fprintf(stderr,x)
+
+#define __inline__ inline
+
+/**** libc_wrapper.c */
+
+void xf86usleep(unsigned long usec);
+void xf86getsecs(long * secs, long * usecs);
+
+/**** include/os.h */
+
+/* modified for stdlib */
+
+#define xalloc(size) malloc(size)
+#define xnfcalloc(_num, _size) calloc(_num, _size)
+#define xcalloc(_num, _size) calloc(_num, _size)
+#define xfree(ptr) free(ptr)
+
+/**** common/compiler.h */
+
+#define MMIO_IN8(base, offset) \
+ *(volatile CARD8 *)(((CARD8*)(base)) + (offset))
+#define MMIO_IN16(base, offset) \
+ *(volatile CARD16 *)(void *)(((CARD8*)(base)) + (offset))
+#define MMIO_IN32(base, offset) \
+ *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset))
+#define MMIO_OUT8(base, offset, val) \
+ *(volatile CARD8 *)(((CARD8*)(base)) + (offset)) = (val)
+#define MMIO_OUT16(base, offset, val) \
+ *(volatile CARD16 *)(void *)(((CARD8*)(base)) + (offset)) = (val)
+#define MMIO_OUT32(base, offset, val) \
+ *(volatile CARD32 *)(void *)(((CARD8*)(base)) + (offset)) = (val)
+#define MMIO_ONB8(base, offset, val) MMIO_OUT8(base, offset, val)
+#define MMIO_ONB16(base, offset, val) MMIO_OUT16(base, offset, val)
+#define MMIO_ONB32(base, offset, val) MMIO_OUT32(base, offset, val)
+
+/* -------- vgahw/vgaHW.h -------- */
+
+/* Standard VGA registers */
+#define VGA_ATTR_INDEX 0x3C0
+#define VGA_ATTR_DATA_W 0x3C0
+#define VGA_ATTR_DATA_R 0x3C1
+#define VGA_IN_STAT_0 0x3C2 /* read */
+#define VGA_MISC_OUT_W 0x3C2 /* write */
+#define VGA_ENABLE 0x3C3
+#define VGA_SEQ_INDEX 0x3C4
+#define VGA_SEQ_DATA 0x3C5
+#define VGA_DAC_MASK 0x3C6
+#define VGA_DAC_READ_ADDR 0x3C7
+#define VGA_DAC_WRITE_ADDR 0x3C8
+#define VGA_DAC_DATA 0x3C9
+#define VGA_FEATURE_R 0x3CA /* read */
+#define VGA_MISC_OUT_R 0x3CC /* read */
+#define VGA_GRAPH_INDEX 0x3CE
+#define VGA_GRAPH_DATA 0x3CF
+
+#define VGA_IOBASE_MONO 0x3B0
+#define VGA_IOBASE_COLOR 0x3D0
+
+#define VGA_CRTC_INDEX_OFFSET 0x04
+#define VGA_CRTC_DATA_OFFSET 0x05
+#define VGA_IN_STAT_1_OFFSET 0x0A /* read */
+#define VGA_FEATURE_W_OFFSET 0x0A /* write */
+
+
+/**** common/xf86str.h */
+
+/* Video mode flags */
+
+typedef enum {
+ V_PHSYNC = 0x0001,
+ V_NHSYNC = 0x0002,
+ V_PVSYNC = 0x0004,
+ V_NVSYNC = 0x0008,
+ V_INTERLACE = 0x0010,
+ V_DBLSCAN = 0x0020,
+ V_CSYNC = 0x0040,
+ V_PCSYNC = 0x0080,
+ V_NCSYNC = 0x0100,
+ V_HSKEW = 0x0200, /* hskew provided */
+ V_BCAST = 0x0400,
+ V_PIXMUX = 0x1000,
+ V_DBLCLK = 0x2000,
+ V_CLKDIV2 = 0x4000
+} ModeFlags;
+
+typedef enum {
+ INTERLACE_HALVE_V = 0x0001 /* Halve V values for interlacing */
+} CrtcAdjustFlags;
+
+/* Flags passed to ChipValidMode() */
+typedef enum {
+ MODECHECK_INITIAL = 0,
+ MODECHECK_FINAL = 1
+} ModeCheckFlags;
+
+/* These are possible return values for xf86CheckMode() and ValidMode() */
+typedef enum {
+ MODE_OK = 0, /* Mode OK */
+ MODE_HSYNC, /* hsync out of range */
+ MODE_VSYNC, /* vsync out of range */
+ MODE_H_ILLEGAL, /* mode has illegal horizontal timings */
+ MODE_V_ILLEGAL, /* mode has illegal horizontal timings */
+ MODE_BAD_WIDTH, /* requires an unsupported linepitch */
+ MODE_NOMODE, /* no mode with a maching name */
+ MODE_NO_INTERLACE, /* interlaced mode not supported */
+ MODE_NO_DBLESCAN, /* doublescan mode not supported */
+ MODE_NO_VSCAN, /* multiscan mode not supported */
+ MODE_MEM, /* insufficient video memory */
+ MODE_VIRTUAL_X, /* mode width too large for specified virtual size */
+ MODE_VIRTUAL_Y, /* mode height too large for specified virtual size */
+ MODE_MEM_VIRT, /* insufficient video memory given virtual size */
+ MODE_NOCLOCK, /* no fixed clock available */
+ MODE_CLOCK_HIGH, /* clock required is too high */
+ MODE_CLOCK_LOW, /* clock required is too low */
+ MODE_CLOCK_RANGE, /* clock/mode isn't in a ClockRange */
+ MODE_BAD_HVALUE, /* horizontal timing was out of range */
+ MODE_BAD_VVALUE, /* vertical timing was out of range */
+ MODE_BAD_VSCAN, /* VScan value out of range */
+ MODE_HSYNC_NARROW, /* horizontal sync too narrow */
+ MODE_HSYNC_WIDE, /* horizontal sync too wide */
+ MODE_HBLANK_NARROW, /* horizontal blanking too narrow */
+ MODE_HBLANK_WIDE, /* horizontal blanking too wide */
+ MODE_VSYNC_NARROW, /* vertical sync too narrow */
+ MODE_VSYNC_WIDE, /* vertical sync too wide */
+ MODE_VBLANK_NARROW, /* vertical blanking too narrow */
+ MODE_VBLANK_WIDE, /* vertical blanking too wide */
+ MODE_PANEL, /* exceeds panel dimensions */
+ MODE_INTERLACE_WIDTH, /* width too large for interlaced mode */
+ MODE_ONE_WIDTH, /* only one width is supported */
+ MODE_ONE_HEIGHT, /* only one height is supported */
+ MODE_ONE_SIZE, /* only one resolution is supported */
+ MODE_BAD = -2, /* unspecified reason */
+ MODE_ERROR = -1 /* error condition */
+} ModeStatus;
+
+# define M_T_BUILTIN 0x01 /* built-in mode */
+# define M_T_CLOCK_C (0x02 | M_T_BUILTIN) /* built-in mode - configure clock */
+# define M_T_CRTC_C (0x04 | M_T_BUILTIN) /* built-in mode - configure CRTC */
+# define M_T_CLOCK_CRTC_C (M_T_CLOCK_C | M_T_CRTC_C)
+ /* built-in mode - configure CRTC and clock */
+# define M_T_DEFAULT 0x10 /* (VESA) default modes */
+
+/* Video mode */
+typedef struct _DisplayModeRec {
+ struct _DisplayModeRec * prev;
+ struct _DisplayModeRec * next;
+ char * name; /* identifier for the mode */
+ ModeStatus status;
+ int type;
+
+ /* These are the values that the user sees/provides */
+ int Clock; /* pixel clock freq */
+ int HDisplay; /* horizontal timing */
+ int HSyncStart;
+ int HSyncEnd;
+ int HTotal;
+ int HSkew;
+ int VDisplay; /* vertical timing */
+ int VSyncStart;
+ int VSyncEnd;
+ int VTotal;
+ int VScan;
+ int Flags;
+
+ /* These are the values the hardware uses */
+ int ClockIndex;
+ int SynthClock; /* Actual clock freq to
+ * be programmed */
+ int CrtcHDisplay;
+ int CrtcHBlankStart;
+ int CrtcHSyncStart;
+ int CrtcHSyncEnd;
+ int CrtcHBlankEnd;
+ int CrtcHTotal;
+ int CrtcHSkew;
+ int CrtcVDisplay;
+ int CrtcVBlankStart;
+ int CrtcVSyncStart;
+ int CrtcVSyncEnd;
+ int CrtcVBlankEnd;
+ int CrtcVTotal;
+ Bool CrtcHAdjusted;
+ Bool CrtcVAdjusted;
+ int PrivSize;
+ INT32 * Private;
+ int PrivFlags;
+
+ float HSync, VRefresh;
+} DisplayModeRec, *DisplayModePtr;
+
+/*
+ * memType is of the size of the addressable memory (machine size)
+ * usually unsigned long.
+ */
+typedef pointer (*funcPointer)(void);
+
+typedef struct _ScrnInfoRec {
+ int scrnIndex; /* Number of this screen */
+/* ... */
+ DisplayModePtr currentMode; /* current mode */
+/* ... */
+ pointer driverPrivate; /* Driver private area */
+ DevUnion * privates; /* Other privates can hook in
+ * here */
+} ScrnInfoRec;
+
+typedef struct _ScrnInfoRec *ScrnInfoPtr;
+
+/**** common/xf86.h */
+
+extern ScrnInfoPtr *xf86Screens; /* List of pointers to ScrnInfoRecs */
+
+#define xf86Msg(type,format,args...) /* fprintf(stderr,format,args) */
+#define xf86DrvMsg(scrnIndex,type,format, args...) /* fprintf(stderr,format,args) */
+
+/* ---------------- nv driver files ---------------- */
+
+/**** nv_local.h */
+
+/*
+ * Typedefs to force certain sized values.
+ */
+typedef unsigned char U008;
+typedef unsigned short U016;
+typedef unsigned int U032;
+
+/* these assume memory-mapped I/O, and not normal I/O space */
+#define NV_WR08(p,i,d) MMIO_OUT8((volatile pointer)(p), (i), (d))
+#define NV_RD08(p,i) MMIO_IN8((volatile pointer)(p), (i))
+#define NV_WR16(p,i,d) MMIO_OUT16((volatile pointer)(p), (i), (d))
+#define NV_RD16(p,i) MMIO_IN16((volatile pointer)(p), (i))
+#define NV_WR32(p,i,d) MMIO_OUT32((volatile pointer)(p), (i), (d))
+#define NV_RD32(p,i) MMIO_IN32((volatile pointer)(p), (i))
+
+#define VGA_WR08(p,i,d) NV_WR08(p,i,d)
+#define VGA_RD08(p,i) NV_RD08(p,i)
+
+/**** nv_dac.c */
+
+#define DDC_SDA_READ_MASK (1 << 3)
+#define DDC_SCL_READ_MASK (1 << 2)
+#define DDC_SDA_WRITE_MASK (1 << 4)
+#define DDC_SCL_WRITE_MASK (1 << 5)
+
+/**** riva_hw.h */
+
+typedef struct _riva_hw_inst
+{
+ U032 Architecture;
+ U032 Version;
+ U032 CrystalFreqKHz;
+ U032 RamAmountKBytes;
+ U032 MaxVClockFreqKHz;
+ U032 RamBandwidthKBytesPerSec;
+ U032 EnableIRQ;
+ U032 IO;
+#if 1 /* from a different riva_hw ??? */
+ U032 VBlankBit;
+ U032 FifoFreeCount;
+ U032 FifoEmptyCount;
+#endif
+ /*
+ * Non-FIFO registers.
+ */
+ volatile U032 *PCRTC;
+ volatile U032 *PRAMDAC;
+ volatile U032 *PFB;
+ volatile U032 *PFIFO;
+ volatile U032 *PGRAPH;
+ volatile U032 *PEXTDEV;
+ volatile U032 *PTIMER;
+ volatile U032 *PMC;
+ volatile U032 *PRAMIN;
+ volatile U032 *FIFO;
+ volatile U032 *CURSOR;
+ volatile U032 *CURSORPOS;
+ volatile U032 *VBLANKENABLE;
+ volatile U032 *VBLANK;
+ volatile U008 *PCIO;
+ volatile U008 *PVIO;
+ volatile U008 *PDIO;
+#if 1
+ volatile U032 *PVIDEO; /* extra */
+#endif
+ /* Remaining entries cut */
+#if 0
+ /*
+ * Common chip functions.
+ */
+ int (*Busy)(struct _riva_hw_inst *);
+ void (*CalcStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *,int,int,int,int,int,int,int,int,int,int,int,int,int);
+ void (*LoadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
+ void (*UnloadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
+ void (*SetStartAddress)(struct _riva_hw_inst *,U032);
+ void (*SetSurfaces2D)(struct _riva_hw_inst *,U032,U032);
+ void (*SetSurfaces3D)(struct _riva_hw_inst *,U032,U032);
+ int (*ShowHideCursor)(struct _riva_hw_inst *,int);
+ void (*LockUnlock)(struct _riva_hw_inst *, int);
+ /*
+ * Current extended mode settings.
+ */
+ struct _riva_hw_state *CurrentState;
+ /*
+ * FIFO registers.
+ */
+ RivaRop *Rop;
+ RivaPattern *Patt;
+ RivaClip *Clip;
+ RivaPixmap *Pixmap;
+ RivaScreenBlt *Blt;
+ RivaBitmap *Bitmap;
+ RivaLine *Line;
+ RivaTexturedTriangle03 *Tri03;
+ RivaTexturedTriangle05 *Tri05;
+#endif
+} RIVA_HW_INST;
+
+#endif
+/* NVTV tv_chip header -- Dirk Thierbach <dthierbach@gmx.de>
+ *
+ * This file is part of nvtv, a tool for tv-output on NVidia cards.
+ *
+ * nvtv is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * nvtv is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id: nvtvd.h,v 1.1 2002/06/10 21:42:45 mshopf Exp $
+ *
+ * Contents:
+ *
+ * Header: Structures and defines for the Brooktree, the Chrontel and the
+ * Philips chip. This part could eventually become a part of the XFree
+ * NV-Driver.
+ *
+ */
+
+#ifndef _TV_CHIP_H
+#define _TV_CHIP_H
+
+typedef enum {
+ TYPE_NONE = 0,
+ TYPE_INT = 1,
+ TYPE_ULONG = 2,
+} VarType;
+
+typedef enum {
+ CARD_NONE = 0,
+ CARD_NVIDIA = 1,
+ CARD_TDFX = 2,
+ CARD_I810 = 3,
+} CardType;
+
+typedef enum {
+ TV_SYSTEM_NONE = -1,
+ TV_SYSTEM_NTSC = 0,
+ TV_SYSTEM_NTSC_J = 1, /* same as NTSC_60 */
+ TV_SYSTEM_PAL = 2,
+ TV_SYSTEM_PAL_60 = 3,
+ TV_SYSTEM_PAL_N = 4,
+ TV_SYSTEM_PAL_NC = 5,
+ TV_SYSTEM_PAL_M = 6,
+ TV_SYSTEM_PAL_M60 = 7,
+ TV_SYSTEM_PAL_X = 8, /* Fake PAL System to correct color carriers,
+ useful at least in Sweden PAL-B */
+ TV_SYSTEM_SECAM = 9, /* only on Conexant chips */
+} TVSystem;
+
+typedef enum {
+ TV_NO_CHIP = 0,
+ TV_CHRONTEL = 1,
+ TV_BROOKTREE = 2,
+ TV_CONEXANT = 3,
+ TV_PHILIPS = 4,
+} TVChip;
+
+/* -------- Host interface flags, all chips -------- */
+
+#define HOST_SYNC_DIR (1 << 0)
+#define HOST_SYNC_IN 0
+#define HOST_SYNC_OUT (1 << 0)
+
+#define HOST_VSYNC_ACTIVE (1 << 1)
+#define HOST_VSYNC_LOW 0
+#define HOST_VSYNC_HIGH (1 << 1)
+
+#define HOST_HSYNC_ACTIVE (1 << 2)
+#define HOST_HSYNC_LOW 0
+#define HOST_HSYNC_HIGH (1 << 2)
+
+#define HOST_BLANK_ACTIVE (1 << 3)
+#define HOST_BLANK_LOW 0
+#define HOST_BLANK_HIGH (1 << 3)
+
+#define HOST_BLANK_DIR (1 << 4)
+#define HOST_BLANK_IN 0
+#define HOST_BLANK_OUT (1 << 4)
+
+#define HOST_BLANK_MODE (1 << 5)
+#define HOST_BLANK_AREA 0
+#define HOST_BLANK_DOT (1 << 5)
+
+#define HOST_MODE_MASK (1 << 6)
+#define HOST_MODE_MASTER 0
+#define HOST_MODE_SLAVE (1 << 6)
+
+#define HOST_PCLK_ACTIVE (1 << 7)
+#define HOST_PCLK_LOW 0
+#define HOST_PCLK_HIGH (1 << 7)
+
+#define HOST_PCLK_VDD (1 << 8)
+#define HOST_VDD_LOW 0
+#define HOST_VDD_HIGH (1 << 8)
+
+#define HOST_NVIDIA (HOST_VSYNC_HIGH | HOST_HSYNC_HIGH | \
+ HOST_SYNC_OUT | HOST_PCLK_HIGH | \
+ HOST_BLANK_LOW | HOST_BLANK_OUT | \
+ HOST_BLANK_AREA | HOST_MODE_MASTER)
+
+#define HOST_TDFX (HOST_VSYNC_HIGH | HOST_HSYNC_HIGH | \
+ HOST_BLANK_LOW | HOST_BLANK_IN | \
+ HOST_BLANK_DOT | HOST_MODE_MASTER)
+
+#define HOST_I810 (HOST_VSYNC_LOW | HOST_HSYNC_LOW | \
+ HOST_SYNC_IN | HOST_PCLK_LOW | \
+ HOST_BLANK_LOW | HOST_BLANK_IN | \
+ HOST_BLANK_AREA | HOST_MODE_MASTER)
+
+/* -------- Brooktree -------- */
+
+#define BT_FLAG1_NI_OUT (1 << 0)
+#define BT_FLAG1_SETUP (1 << 1)
+#define BT_FLAG1_625LINE (1 << 2)
+#define BT_FLAG1_VSYNC_DUR (1 << 3)
+#define BT_FLAG1_DIS_SCRESET (1 << 4)
+#define BT_FLAG1_PAL_MD (1 << 5)
+#define BT_FLAG1_ECLIP (1 << 6)
+#define BT_FLAG1_EN_ASYNC (1 << 8)
+
+#define BT_FLAG1_NTSC (BT_FLAG1_VSYNC_DUR | BT_FLAG1_SETUP)
+#define BT_FLAG1_NTSC_JAPAN (BT_FLAG1_VSYNC_DUR)
+#define BT_FLAG1_PAL_BDGHI (BT_FLAG1_PAL_MD | BT_FLAG1_625LINE)
+#define BT_FLAG1_PAL_N (BT_FLAG1_VSYNC_DUR | BT_FLAG1_SETUP | \
+ BT_FLAG1_PAL_MD | BT_FLAG1_625LINE)
+#define BT_FLAG1_PAL_M (BT_FLAG1_VSYNC_DUR | BT_FLAG1_SETUP | \
+ BT_FLAG1_PAL_MD)
+#define BT_FLAG1_PAL_BDGHI (BT_FLAG1_PAL_MD | BT_FLAG1_625LINE)
+#define BT_FLAG1_PAL_60 (BT_FLAG1_PAL_MD | BT_FLAG1_VSYNC_DUR)
+
+#define BT_FLAG2_DIS_FFILT (1 << 0)
+#define BT_FLAG2_DIS_YFLPF (1 << 1)
+#define BT_FLAG2_DIS_GMSHY (1 << 2)
+#define BT_FLAG2_DIS_GMUSHY (1 << 3)
+#define BT_FLAG2_DIS_GMSHC (1 << 4)
+#define BT_FLAG2_DIS_GMUSHC (1 << 5)
+#define BT_FLAG2_DIS_CHROMA (1 << 6)
+
+#define BT_FLAG2_DIS_GM (BT_FLAG2_DIS_GMSHY | BT_FLAG2_DIS_GMUSHY \
+ | BT_FLAG2_DIS_GMSHC | BT_FLAG2_DIS_GMUSHC)
+
+#define BT_FLAG3_DACDISA (1 << 0)
+#define BT_FLAG3_DACDISB (1 << 1)
+#define BT_FLAG3_DACDISC (1 << 2)
+#define BT_FLAG3_DACDISD (1 << 3)
+#define BT_FLAG3_DAC (BT_FLAG3_DACDISA | BT_FLAG3_DACDISB \
+ | BT_FLAG3_DACDISC | BT_FLAG3_DACDISD)
+
+#define BT_FLAG3_FBAS (BT_FLAG3_DACDISB | BT_FLAG3_DACDISC)
+#define BT_FLAG3_SVHS (BT_FLAG3_DACDISA)
+#define BT_FLAG3_CONVERT (BT_FLAG3_DACDISA)
+#define BT_FLAG3_BOTH 0
+
+/* DACDISD is available only for the Conexant chip, and is reserved for
+ the Brooktree chip. It is reset by default */
+
+/* FIXME URGENT: Conexant doc says no more than 1 DAC should be disabled */
+
+typedef struct {
+ int hsynoffset; /* time */
+ int vsynoffset; /* time */
+ int hsynwidth; /* time */ /* don't confuse with hsync_width ! */
+ int vsynwidth; /* time */
+ int h_clko; /* time */
+ int h_active; /* time */
+ int hsync_width; /* time(system) */
+ int hburst_begin; /* time(system) */
+ int hburst_end; /* time(system) */
+ int h_blanko; /* time */
+ int v_blanko; /* time */
+ int v_activeo; /* time */
+ int h_fract; /* time */
+ int h_clki; /* time */
+ int h_blanki; /* time */
+ int v_linesi; /* time */
+ int v_blanki; /* time */
+ int v_activei; /* time */
+ int v_scale; /* time */
+ int pll_fract; /* time */
+ int pll_int; /* time */
+ int sync_amp; /* level(system) */
+ int bst_amp; /* level(system) */
+ int mcr; /* level(system) */
+ int mcb; /* level(system) */
+ int my; /* level(system) */
+ unsigned long msc; /* time */
+ int flags1; /* time */
+ int flags2; /* func */
+ int flags3; /* func */
+ int f_selc; /* func */
+ int f_sely; /* func */
+ int ycoring; /* func */
+ int ccoring; /* func */
+ int yattenuate; /* func */
+ int cattenuate; /* func */
+ int ylpf; /* func */
+ int clpf; /* func */
+ int out_muxa; /* func */
+ int out_muxb; /* func */
+ int out_muxc; /* func */
+ int out_muxd; /* func */
+ int phase_off; /* time(?) */
+ int macro; /* time(all) */
+} TVBtRegs;
+
+/* -------- Conexant -------- */
+
+#define CX_FLAG1_FM (1 << 7)
+#define CX_FLAG1_EXT (1 << 9) /* Is extension, don't init */
+
+#define CX_FLAG4_PROG_SC (1 << 0)
+#define CX_FLAG4_SC_PATTERN (1 << 1)
+#define CX_FLAG4_FIELD_ID (1 << 3)
+#define CX_FLAG4_BY_YCCR (1 << 6)
+#define CX_FLAG4_CHROMA_BW (1 << 7)
+
+#define CX_FLAG4_MASK (CX_FLAG4_PROG_SC | CX_FLAG4_SC_PATTERN | \
+ CX_FLAG4_FIELD_ID | CX_FLAG4_BY_YCCR | \
+ CX_FLAG4_CHROMA_BW)
+
+#define CX_FLAG5_ADPT_FF (1 << 0)
+#define CX_FLAG5_FFRTN (1 << 1)
+#define CX_FLAG5_YSELECT (1 << 2)
+#define CX_FLAG5_DIV2 (1 << 4)
+#define CX_FLAG5_PLL_32CLK (1 << 5)
+#define CX_FLAG5_PIX_DOUBLE (1 << 6)
+#define CX_FLAG5_EWSSF1 (1 << 8)
+#define CX_FLAG5_EWSSF2 (1 << 9)
+
+typedef struct {
+ TVBtRegs bt;
+ unsigned long msc_db; /* time */
+ int dr_limitp; /* time */
+ int dr_limitn; /* time */
+ int db_limitp; /* time */
+ int db_limitn; /* time */
+ int filfsconv; /* ?? */
+ int filincr; /* ?? */ /* fil4286incr */
+ int flags4; /* time & func */
+ int flags5; /* time & func */
+ int mcompy; /* level */
+ int mcompu; /* level */
+ int mcompv; /* level */
+ int y_off; /* level */
+ int hue_adj; /* time(?) */
+ long wsdat; /* time */
+ int wssinc; /* time */
+ int c_altff; /* func */
+ int y_altff; /* func */
+ int c_thresh; /* func */
+ int y_thresh; /* func */
+ int pkfil_sel; /* func */
+} TVCxRegs;
+
+/* -------- Chrontel -------- */
+
+#define CH_FLAG_DAC 1:0
+#define CH_FLAG_DAC_MASK 3
+#define CH_FLAG_FBAS 2
+#define CH_FLAG_SVHS 0
+#define CH_FLAG_BOTH 3
+
+typedef struct {
+ int dmr_ir; /* time */
+ int dmr_vs; /* time */
+ int dmr_sr; /* time */
+ int ffr_fc; /* func */
+ int ffr_fy; /* func */
+ int ffr_ft; /* func */
+ int vbw_flff; /* func */ /* flag */
+ int vbw_cvbw; /* func */ /* flag */
+ int vbw_cbw; /* func */
+ int vbw_ypeak; /* func */ /* flag */
+ int vbw_ysv; /* func */
+ int vbw_ycv; /* func */ /* flag */
+ int dacg; /* level(system) */ /* flag */
+ int aciv; /* time */ /* flag */
+ int civh; /* time */
+ int sav; /* time */
+ int blr; /* level(system) */
+ int hpr; /* func/time */
+ int vpr; /* func/time */
+ int ce; /* func */
+ int pll_m; /* time */
+ int pll_n; /* time */
+ int pllcap; /* time */ /* flag */
+ unsigned long fsci;
+#if 0 /* Test register; no documentation */
+ int ylm; /* y multiplier ? */
+ int clm; /* c multiplier ? */
+#endif
+ int flags; /* func */
+ int mode; /* for macrovision table */
+ int macro;
+} TVChRegs;
+
+/* -------- Philips -------- */
+
+#define PH_FLAG1_FISE (1 << 0)
+#define PH_FLAG1_PAL (1 << 1)
+#define PH_FLAG1_SCBW (1 << 2)
+#define PH_FLAG1_YGS (1 << 4)
+#define PH_FLAG1_YFIL (1 << 8)
+
+#define PH_FLAG1_MASK (PH_FLAG1_FISE | PH_FLAG1_PAL | \
+ PH_FLAG1_SCBW | PH_FLAG1_YGS)
+
+#define PH_FLAG2_CEN (1 << 4)
+#define PH_FLAG2_CVBSEN0 (1 << 5)
+#define PH_FLAG2_CVBSEN1 (1 << 6)
+#define PH_FLAG2_VBSEN (1 << 7)
+
+#define PH_FLAG2_NORMAL (PH_FLAG2_CEN | PH_FLAG2_CVBSEN0 | \
+ PH_FLAG2_VBSEN)
+#define PH_FLAG2_CONVERT (PH_FLAG2_CEN | PH_FLAG2_CVBSEN0 | \
+ PH_FLAG2_CVBSEN1)
+#define PH_FLAG2_FBAS PH_FLAG2_NORMAL
+#define PH_FLAG2_SVHS PH_FLAG2_NORMAL
+#define PH_FLAG2_BOTH PH_FLAG2_NORMAL
+
+typedef struct {
+ int adwhs; /* time */
+ int adwhe; /* time */
+ int xofs; /* time */
+ int xpix; /* time */
+ int xinc; /* time */
+ int hlen; /* time */
+ int fal; /* time */
+ int lal; /* time */
+ int yinc; /* time */
+ int yskip; /* time */
+ int yofso; /* time */
+ int yofse; /* time */
+ int ypix; /* time */
+ int yiwgto; /* time */
+ int yiwgte; /* time */
+ long pcl; /* time */
+ long fsc; /* time */
+ int idel; /* init */
+ int bs; /* time(system) */
+ int be; /* time(system) */
+ int bsta; /* level(system) */
+ int blckl; /* level(system) */
+ int blnnl; /* level(system) */
+ int chps; /* time(phase) */
+ int gy; /* level */
+ int gcd; /* level */
+ int bcy; /* func */
+ int bcu; /* func */
+ int bcv; /* func */
+ int ccrs; /* func */
+ int gainu; /* func */
+ int gainv; /* func */
+ int flc; /* time */
+ int phres; /* func(phase) */
+ int flags1;
+ int flags2;
+ int macro;
+} TVPhRegs;
+
+/* -------- CRT -------- */
+
+#ifndef V_INTERLACE
+#define V_INTERLACE 0x0010
+#endif
+
+#ifndef V_DBLSCAN
+#define V_DBLSCAN 0x0020
+#endif
+
+#ifndef V_HSKEW
+#define V_HSKEW 0x0200
+#endif
+
+/* Flags that describe the mode (in TVCrtRegs.PrivFlags) */
+
+#define TV_MODE_TVMODE (1 << 0) /* Is TV Mode */
+#define TV_MODE_DUALVIEW (1 << 2) /* Default dualview */
+#define TV_MODE_MACROVISION (1 << 3) /* Default macrovision */
+#define TV_MODE_NONINTERLACED (1 << 4) /* Default noninterlace */
+#define TV_MODE_MONOCHROME (1 << 5) /* Default monochrome */
+#define TV_MODE_CARRIER_LOCK (1 << 6) /* Default carrier lock */
+
+#define TV_CAN_DUALVIEW (1 << 10) /* Has dualview */
+#define TV_CAN_MACROVISION (1 << 11) /* Has macrovision choice */
+#define TV_CAN_NONINTERLACED (1 << 12) /* Has noninterlace */
+#define TV_CAN_MONOCHROME (1 << 13) /* Has monochrome */
+#define TV_CAN_CARRIER_LOCK (1 << 14) /* Default carrier lock */
+
+#define TV_CAN_BIT 8 /* Bit shift for HAS -> MODE */
+
+#define TV_CAN_MASK (TV_CAN_DUALVIEW | TV_CAN_MACROVISION | \
+ TV_CAN_MONOCHROME | TV_CAN_NONINTERLACED)
+
+#define TV_DEF_DUALVIEW (TV_CAN_DUALVIEW | TV_MODE_DUALVIEW)
+
+/* Flags that affect the mode (in DisplayModeRec.PrivFlags) */
+
+#define TV_PRIV_TVMODE (1 << 0) /* TV or monitor mode? */
+#define TV_PRIV_BYPASS (1 << 1) /* Bypass settings */
+#define TV_PRIV_DUALVIEW (1 << 2) /* Set single/dualview */
+
+/* We use our own crt structure in the frontend and database, and convert
+ * to DisplayModeRec, XF86VidModeModeLine, or XF86VidModeModeInfo as
+ * required. The direct backend uses DisplayModeRec. The 'private'
+ * structure is the same in all cases, and defined in nv_type.h.
+ * FIXME: Change this.
+ */
+
+typedef struct {
+ long Clock; /* Pixel clock in kHz, 0 = ignore */
+ int HDisplay; /* horizontal timing */
+ int HSyncStart;
+ int HSyncEnd;
+ int HTotal;
+ int VDisplay; /* vertical timing */
+ int VSyncStart;
+ int VSyncEnd;
+ int VTotal;
+ int Flags;
+ int PrivFlags;
+} TVCrtRegs;
+
+/* -------- TV Regs Diff -------- */
+
+typedef struct {
+ int ofs;
+ VarType type;
+ unsigned long ulval;
+ int ival;
+} TVDiff;
+
+#define TV_FIELD_LONG(r,f,v) ofs:(char *)(&r.f) - (char *)(&r), \
+ type:TYPE_ULONG, ulval:(v)
+#define TV_FIELD_INT(r,f,v) ofs:(char *)(&r.f) - (char *)(&r), \
+ type:TYPE_INT, ival:(v)
+#define TV_FIELD_END ofs:-1, type:TYPE_NONE
+
+/* -------- Common -------- */
+
+typedef union {
+ TVBtRegs bt;
+ TVCxRegs cx;
+ TVChRegs ch;
+ TVPhRegs ph;
+} TVRegs;
+
+typedef enum {
+ TV_UNKNOWN = 0,
+ TV_OFF = 1,
+ TV_BARS = 2,
+ TV_ON = 3
+} TVState;
+
+typedef enum {
+ CONNECT_AUTO = -2,
+ CONNECT_NONE = -1,
+ CONNECT_FBAS = 0,
+ CONNECT_SVHS = 1,
+ CONNECT_BOTH = 2,
+ CONNECT_CONVERT = 3, /* FBAS on both S-VHS lines, for converter */
+} TVConnect;
+
+typedef struct {
+ int tv_hoffset, tv_voffset;
+ int mon_hoffset, mon_voffset;
+ int brightness_sig; /* -50 - 50 % */
+ int contrast; /* -100 - 100 % */
+ int contrast_sig; /* -50 - 50 % */
+ int saturation; /* -100 - 100 % */
+ int saturation_sig; /* -50 - 50 % */
+ int phase; /* -90 - 90 deg */
+ int hue; /* -90 - 90 deg */
+ int flicker; /* 0 - 100 % */
+ int flicker_adapt; /* 0 - 100 % */
+ int luma_bandwidth; /* 0 - 100 % */
+ int chroma_bandwidth; /* 0 - 100 % */
+ int sharpness; /* 0 - 100 % */
+ int cross_color; /* 0 - 100 % */
+ int flags;
+ TVConnect connector;
+} TVSettings;
+
+/* FIXME: defines for TVSettings flags */
+
+/* FIXME: Get rid of NVPrivate */
+
+typedef struct {
+ char magic[4];
+ TVChip chip;
+ TVRegs tv;
+} NVPrivate;
+
+typedef struct {
+ TVSystem system;
+ int res_x;
+ int res_y;
+ char *size;
+ char *aspect;
+ double hoc;
+ double voc;
+ TVCrtRegs *crt;
+ TVRegs *tv;
+ TVDiff *diff;
+} TVMode;
+
+#endif /* _TV_CHIP */
+/* NVTV backend -- Dirk Thierbach <dthierbach@gmx.de>
+ *
+ * This file is part of nvtv, a tool for tv-output on NVidia cards.
+ *
+ * nvtv is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * nvtv is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id: nvtvd.h,v 1.1 2002/06/10 21:42:45 mshopf Exp $
+ *
+ * Contents:
+ *
+ * Common header for all backends
+ */
+
+#ifndef _BACKEND_H
+#define _BACKEND_H
+
+#ifdef DEBUG_PROBE
+#include "tv_common.h"
+#endif
+
+/* WARNING! The first entry of the two following data structures MUST be
+ the 'next' field, and the second entry MUST be a string. If they are not,
+ the pipe routines will crash. Other pointers besides those two are
+ transfered through the pipe, but should be ignored, as there value is
+ invalid. */
+
+/* List of chips accessible on one card. Most of the time, there will
+ be only one tv chip, though in theory one could use two on dual-head
+ cards. Other chips can be stored here as well. We duplicate the
+ information in I2Chain and I2CDev to make the frontend independent
+ of the back end.
+*/
+
+typedef struct chip_info {
+ struct chip_info *next; /* must be 1st entry! */
+ char *name; /* must be 2nd entry! (name including version and I2C addr) */
+ TVChip chip; /* chip type */
+ void *private; /* identify device, backend private */
+} ChipInfo, *ChipPtr;
+
+/* List of all NVidia cards available */
+
+typedef struct card_info {
+ struct card_info *next; /* must be 1st entry! */
+ char *name; /* must be 2nd entry! (name including bus addr) */
+ char *dev; /* name of device for mmap */
+ char *arch; /* architecture */
+ CardType type;
+ unsigned long reg_base;
+ int pci_id;
+ ChipPtr chips;
+} CardInfo, *CardPtr;
+
+#define BACK_SERVICE_CURSOR (1 << 0)
+#define BACK_SERVICE_VIDEO (1 << 1)
+#define BACK_SERVICE_VIEW_CURSOR (1 << 2)
+#define BACK_SERVICE_VIEW_MAIN (1 << 3)
+
+typedef struct {
+ void (*openCard) (CardPtr card);
+ void (*closeCard) (void);
+#ifdef DEBUG_PROBE
+ void (*probeSystem) (CardPtr card_list);
+#endif
+} BackAccessRec, *BackAccessPtr;
+
+typedef struct {
+ void (*openCard) (CardPtr card);
+ void (*closeCard) (void);
+ void (*probeChips) (void);
+#ifdef DEBUG_PROBE
+ void (*probeCard) (void);
+ I2CChainPtr (*probeBus) (void);
+#endif
+ void (*setHeads) (int main, int tv, int video);
+ void (*getHeads) (int *main, int *tv, int *video, int *max);
+ void (*setChip) (ChipPtr chip, Bool init);
+ void (*setSettings) (TVSettings *set);
+ void (*getSettings) (TVSettings *set);
+ void (*setMode) (int ModeFlags, TVCrtRegs *crt, TVRegs *tv);
+ void (*getMode) (TVCrtRegs *crt, TVRegs *tv);
+ void (*setModeSettings) (int ModeFlags, TVCrtRegs *crt, TVRegs *tv,
+ TVSettings *set);
+ void (*setTestImage) (int ModeFlags, TVRegs *tv, TVSettings *set);
+ long (*getStatus) (int index);
+ TVConnect (*getConnection) (void);
+ Bool (*findBySize) (TVSystem system, int xres, int yres, char *size,
+ TVMode *mode, TVCrtRegs *crt, TVRegs *tv);
+ Bool (*findByOverscan) (TVSystem system, int xres, int yres,
+ double hoc, double voc, TVMode *mode, TVCrtRegs *crt, TVRegs *tv);
+ void (*initSharedView) (int *view_x, int *view_y);
+ Bool (*getTwinView) (int *view_x, int *view_y);
+ Bool (*adjustViewport) (int flags, int *view_x, int *view_y);
+ Bool (*serviceViewportCursor) (int flags, int cursor_x, int cursor_y,
+ int *view_x, int *view_y);
+} BackCardRec, *BackCardPtr;
+
+/* The backend(s) use static information, so there can only be one
+ backend active: */
+
+extern BackAccessPtr back_access;
+extern BackCardPtr back_card;
+
+#endif /* _BACKEND_H */
+/* NVTV client backend header -- Dirk Thierbach <dthierbach@gmx.de>
+ *
+ * This file is part of nvtv, a tool for tv-output on NVidia cards.
+ *
+ * nvtv is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * nvtv is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ *
+ * $Id: nvtvd.h,v 1.1 2002/06/10 21:42:45 mshopf Exp $
+ *
+ * Contents:
+ *
+ * Header for client backend
+ */
+
+#ifndef _BACK_CLIENT_H
+#define _BACK_CLIENT_H
+
+Bool back_client_avail (void);
+CardPtr back_client_init (void);
+
+/* client backend methods */
+
+void bcl_openCard (CardPtr card);
+void bcl_closeCard (void);
+#ifdef DEBUG_PROBE
+void bcl_probeCards (CardPtr card_list);
+#endif
+void bcl_setHeads (int main, int tv, int video);
+void bcl_getHeads (int *main, int *tv, int *video, int *max);
+void bcl_probeChips (void);
+void bcl_setChip (ChipPtr chip, Bool init);
+void bcl_setSettings (TVSettings *set);
+void bcl_getSettings (TVSettings *set);
+void bcl_setMode (int ModeFlags, TVCrtRegs *crt, TVRegs *tv);
+void bcl_getMode (TVCrtRegs *crt, TVRegs *tv);
+void bcl_setModeSettings (int ModeFlags, TVCrtRegs *crt,
+ TVRegs *tv, TVSettings *set);
+void bcl_setTestImage (int ModeFlags, TVRegs *tv, TVSettings *set);
+long bcl_getStatus (int index);
+TVConnect bcl_getConnection (void);
+Bool bcl_findBySize (TVSystem system, int xres, int yres, char *size,
+ TVMode *mode, TVCrtRegs *crt, TVRegs *tv);
+Bool bcl_findByOverscan (TVSystem system, int xres, int yres,
+ double hoc, double voc, TVMode *mode, TVCrtRegs *crt, TVRegs *tv);
+
+void bcl_initSharedView (int *view_x, int *view_y);
+Bool bcl_getTwinView (int *view_x, int *view_y);
+Bool bcl_adjustViewportVideo (int flags, int *view_x, int *view_y);
+Bool bcl_serviceViewportVideoCursor (int flags, int cursor_x, int cursor_y,
+ int *view_x, int *view_y);
+
+#endif /* _BACK_CLIENT_H */
+