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