1*53ee8cc1Swenshuai.xi #ifndef _VTX_H 2*53ee8cc1Swenshuai.xi #define _VTX_H 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi /* 5*53ee8cc1Swenshuai.xi * Teletext (=Videotext) hardware decoders using interface /dev/vtx 6*53ee8cc1Swenshuai.xi * Do not confuse with drivers using /dev/vbi which decode videotext by software 7*53ee8cc1Swenshuai.xi * 8*53ee8cc1Swenshuai.xi * Videotext IOCTLs changed in order to use _IO() macros defined in <linux/ioctl.h>, 9*53ee8cc1Swenshuai.xi * unused tuner IOCTLs cleaned up by 10*53ee8cc1Swenshuai.xi * Michael Geng <linux@MichaelGeng.de> 11*53ee8cc1Swenshuai.xi * 12*53ee8cc1Swenshuai.xi * Copyright (c) 1994-97 Martin Buck <martin-2.buck@student.uni-ulm.de> 13*53ee8cc1Swenshuai.xi * Read COPYING for more information 14*53ee8cc1Swenshuai.xi * 15*53ee8cc1Swenshuai.xi */ 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi 18*53ee8cc1Swenshuai.xi /* 19*53ee8cc1Swenshuai.xi * Videotext ioctls 20*53ee8cc1Swenshuai.xi */ 21*53ee8cc1Swenshuai.xi #define VTXIOCGETINFO _IOR (0x81, 1, vtx_info_t) 22*53ee8cc1Swenshuai.xi #define VTXIOCCLRPAGE _IOW (0x81, 2, vtx_pagereq_t) 23*53ee8cc1Swenshuai.xi #define VTXIOCCLRFOUND _IOW (0x81, 3, vtx_pagereq_t) 24*53ee8cc1Swenshuai.xi #define VTXIOCPAGEREQ _IOW (0x81, 4, vtx_pagereq_t) 25*53ee8cc1Swenshuai.xi #define VTXIOCGETSTAT _IOW (0x81, 5, vtx_pagereq_t) 26*53ee8cc1Swenshuai.xi #define VTXIOCGETPAGE _IOW (0x81, 6, vtx_pagereq_t) 27*53ee8cc1Swenshuai.xi #define VTXIOCSTOPDAU _IOW (0x81, 7, vtx_pagereq_t) 28*53ee8cc1Swenshuai.xi #define VTXIOCPUTPAGE _IO (0x81, 8) 29*53ee8cc1Swenshuai.xi #define VTXIOCSETDISP _IO (0x81, 9) 30*53ee8cc1Swenshuai.xi #define VTXIOCPUTSTAT _IO (0x81, 10) 31*53ee8cc1Swenshuai.xi #define VTXIOCCLRCACHE _IO (0x81, 11) 32*53ee8cc1Swenshuai.xi #define VTXIOCSETVIRT _IOW (0x81, 12, long) 33*53ee8cc1Swenshuai.xi 34*53ee8cc1Swenshuai.xi /* for compatibility, will go away some day */ 35*53ee8cc1Swenshuai.xi #define VTXIOCGETINFO_OLD 0x7101 /* get version of driver & capabilities of vtx-chipset */ 36*53ee8cc1Swenshuai.xi #define VTXIOCCLRPAGE_OLD 0x7102 /* clear page-buffer */ 37*53ee8cc1Swenshuai.xi #define VTXIOCCLRFOUND_OLD 0x7103 /* clear bits indicating that page was found */ 38*53ee8cc1Swenshuai.xi #define VTXIOCPAGEREQ_OLD 0x7104 /* search for page */ 39*53ee8cc1Swenshuai.xi #define VTXIOCGETSTAT_OLD 0x7105 /* get status of page-buffer */ 40*53ee8cc1Swenshuai.xi #define VTXIOCGETPAGE_OLD 0x7106 /* get contents of page-buffer */ 41*53ee8cc1Swenshuai.xi #define VTXIOCSTOPDAU_OLD 0x7107 /* stop data acquisition unit */ 42*53ee8cc1Swenshuai.xi #define VTXIOCPUTPAGE_OLD 0x7108 /* display page on TV-screen */ 43*53ee8cc1Swenshuai.xi #define VTXIOCSETDISP_OLD 0x7109 /* set TV-mode */ 44*53ee8cc1Swenshuai.xi #define VTXIOCPUTSTAT_OLD 0x710a /* set status of TV-output-buffer */ 45*53ee8cc1Swenshuai.xi #define VTXIOCCLRCACHE_OLD 0x710b /* clear cache on VTX-interface (if avail.) */ 46*53ee8cc1Swenshuai.xi #define VTXIOCSETVIRT_OLD 0x710c /* turn on virtual mode (this disables TV-display) */ 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xi /* 49*53ee8cc1Swenshuai.xi * Definitions for VTXIOCGETINFO 50*53ee8cc1Swenshuai.xi */ 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi #define SAA5243 0 53*53ee8cc1Swenshuai.xi #define SAA5246 1 54*53ee8cc1Swenshuai.xi #define SAA5249 2 55*53ee8cc1Swenshuai.xi #define SAA5248 3 56*53ee8cc1Swenshuai.xi #define XSTV5346 4 57*53ee8cc1Swenshuai.xi 58*53ee8cc1Swenshuai.xi typedef struct { 59*53ee8cc1Swenshuai.xi int version_major, version_minor; /* version of driver; if version_major changes, driver */ 60*53ee8cc1Swenshuai.xi /* is not backward compatible!!! CHECK THIS!!! */ 61*53ee8cc1Swenshuai.xi int numpages; /* number of page-buffers of vtx-chipset */ 62*53ee8cc1Swenshuai.xi int cct_type; /* type of vtx-chipset (SAA5243, SAA5246, SAA5248 or 63*53ee8cc1Swenshuai.xi * SAA5249) */ 64*53ee8cc1Swenshuai.xi } 65*53ee8cc1Swenshuai.xi vtx_info_t; 66*53ee8cc1Swenshuai.xi 67*53ee8cc1Swenshuai.xi 68*53ee8cc1Swenshuai.xi /* 69*53ee8cc1Swenshuai.xi * Definitions for VTXIOC{CLRPAGE,CLRFOUND,PAGEREQ,GETSTAT,GETPAGE,STOPDAU,PUTPAGE,SETDISP} 70*53ee8cc1Swenshuai.xi */ 71*53ee8cc1Swenshuai.xi 72*53ee8cc1Swenshuai.xi #define MIN_UNIT (1<<0) 73*53ee8cc1Swenshuai.xi #define MIN_TEN (1<<1) 74*53ee8cc1Swenshuai.xi #define HR_UNIT (1<<2) 75*53ee8cc1Swenshuai.xi #define HR_TEN (1<<3) 76*53ee8cc1Swenshuai.xi #define PG_UNIT (1<<4) 77*53ee8cc1Swenshuai.xi #define PG_TEN (1<<5) 78*53ee8cc1Swenshuai.xi #define PG_HUND (1<<6) 79*53ee8cc1Swenshuai.xi #define PGMASK_MAX (1<<7) 80*53ee8cc1Swenshuai.xi #define PGMASK_PAGE (PG_HUND | PG_TEN | PG_UNIT) 81*53ee8cc1Swenshuai.xi #define PGMASK_HOUR (HR_TEN | HR_UNIT) 82*53ee8cc1Swenshuai.xi #define PGMASK_MINUTE (MIN_TEN | MIN_UNIT) 83*53ee8cc1Swenshuai.xi 84*53ee8cc1Swenshuai.xi typedef struct 85*53ee8cc1Swenshuai.xi { 86*53ee8cc1Swenshuai.xi int page; /* number of requested page (hexadecimal) */ 87*53ee8cc1Swenshuai.xi int hour; /* requested hour (hexadecimal) */ 88*53ee8cc1Swenshuai.xi int minute; /* requested minute (hexadecimal) */ 89*53ee8cc1Swenshuai.xi int pagemask; /* mask defining which values of the above are set */ 90*53ee8cc1Swenshuai.xi int pgbuf; /* buffer where page will be stored */ 91*53ee8cc1Swenshuai.xi int start; /* start of requested part of page */ 92*53ee8cc1Swenshuai.xi int end; /* end of requested part of page */ 93*53ee8cc1Swenshuai.xi void *buffer; /* pointer to beginning of destination buffer */ 94*53ee8cc1Swenshuai.xi } 95*53ee8cc1Swenshuai.xi vtx_pagereq_t; 96*53ee8cc1Swenshuai.xi 97*53ee8cc1Swenshuai.xi 98*53ee8cc1Swenshuai.xi /* 99*53ee8cc1Swenshuai.xi * Definitions for VTXIOC{GETSTAT,PUTSTAT} 100*53ee8cc1Swenshuai.xi */ 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi #define VTX_PAGESIZE (40 * 24) 103*53ee8cc1Swenshuai.xi #define VTX_VIRTUALSIZE (40 * 49) 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi typedef struct 106*53ee8cc1Swenshuai.xi { 107*53ee8cc1Swenshuai.xi int pagenum; /* number of page (hexadecimal) */ 108*53ee8cc1Swenshuai.xi int hour; /* hour (hexadecimal) */ 109*53ee8cc1Swenshuai.xi int minute; /* minute (hexadecimal) */ 110*53ee8cc1Swenshuai.xi int charset; /* national charset */ 111*53ee8cc1Swenshuai.xi unsigned delete : 1; /* delete page (C4) */ 112*53ee8cc1Swenshuai.xi unsigned headline : 1; /* insert headline (C5) */ 113*53ee8cc1Swenshuai.xi unsigned subtitle : 1; /* insert subtitle (C6) */ 114*53ee8cc1Swenshuai.xi unsigned supp_header : 1; /* suppress header (C7) */ 115*53ee8cc1Swenshuai.xi unsigned update : 1; /* update page (C8) */ 116*53ee8cc1Swenshuai.xi unsigned inter_seq : 1; /* interrupted sequence (C9) */ 117*53ee8cc1Swenshuai.xi unsigned dis_disp : 1; /* disable/suppress display (C10) */ 118*53ee8cc1Swenshuai.xi unsigned serial : 1; /* serial mode (C11) */ 119*53ee8cc1Swenshuai.xi unsigned notfound : 1; /* /FOUND */ 120*53ee8cc1Swenshuai.xi unsigned pblf : 1; /* PBLF */ 121*53ee8cc1Swenshuai.xi unsigned hamming : 1; /* hamming-error occurred */ 122*53ee8cc1Swenshuai.xi } 123*53ee8cc1Swenshuai.xi vtx_pageinfo_t; 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi #endif /* _VTX_H */ 126