summaryrefslogtreecommitdiffstats
path: root/sys/dev/bktr/bktr_reg.h
blob: 281577ffdc60bdb9cc1eb2f93a435b9fd36b7d0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
/*
 * Copyright (c) 1995 Mark Tinguely and Jim Lowe
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by Mark Tinguely and Jim Lowe
 * 4. The name of the author may not be used to endorse or promote products 
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
#ifndef PCI_LATENCY_TIMER
#define	PCI_LATENCY_TIMER		0x0c	/* pci timer register */
#endif

/*
 * Definitions for the Philips SAA7116 digital video to pci interface.
 */
#define	BROOKTREE_848_ID			0x0350109E

typedef volatile u_int 	breg_t;


#define BKTR_DSTATUS                 0x000
#define BKTR_IFORM                   0x004
#define BKTR_TDEC                    0x008
#define BKTR_EVEN_CROP               0x00C
#define BKTR_ODD_CROP                0x08C
#define BKTR_E_VDELAY_LO             0x010
#define BKTR_O_VDELAY_LO             0x090
#define BKTR_E_VACTIVE_LO            0x014
#define BKTR_O_VACTIVE_LO            0x094
#define BKTR_E_DELAY_LO              0x018
#define BKTR_O_DELAY_LO              0x098
#define BKTR_E_HACTIVE_LO            0x01C
#define BKTR_O_HACTIVE_LO            0x09C
#define BKTR_E_HSCALE_HI             0x020
#define BKTR_O_HSCALE_HI             0x0A0
#define BKTR_E_HSCALE_LO             0x024
#define BKTR_O_HSCALE_LO             0x0A4
#define BKTR_BRIGHT                  0x028
#define BKTR_E_CONTROL               0x02C
#define BKTR_O_CONTROL               0x0AC
#define BKTR_CONTRAST_LO             0x030
#define BKTR_SAT_U_LO                0x034
#define BKTR_SAT_V_LO                0x038
#define BKTR_HUE                     0x03C
#define BKTR_E_SCLOOP                0x040
#define BKTR_O_SCLOOP                0x0C0
#define BKTR_OFORM                   0x048
#define BKTR_E_VSCALE_HI             0x04C
#define BKTR_O_VSCALE_HI             0x0CC
#define BKTR_E_VSCALE_LO             0x050
#define BKTR_O_VSCALE_LO             0x0D0
#define BKTR_TEST                    0x054
#define BKTR_ADELAY                  0x060
#define BKTR_BDELAY                  0x064
#define BKTR_ADC                     0x068
#define BKTR_E_VTC                   0x06C
#define BKTR_O_VTC                   0x0EC
#define BKTR_SRESET                  0x07C
#define BKTR_COLOR_FMT               0x0D4
#define BKTR_COLOR_CTL               0x0D8
#define BKTR_CAP_CTL                 0x0DC
#define BKTR_VBI_PACK_SIZE           0x0E0
#define BKTR_VBI_PACK_DEL            0x0E4
#define BKTR_INT_STAT                0x100
#define BKTR_INT_MASK                0x104
#define BKTR_RISC_COUNT              0x120
#define BKTR_RISC_STRT_ADD           0x114
#define BKTR_GPIO_DMA_CTL            0x10C
#define BKTR_GPIO_OUT_EN             0x118
#define BKTR_GPIO_REG_INP            0x11C
#define BKTR_GPIO_DATA               0x200
#define BKTR_I2C_CONTROL             0x110


/*
 * device support for onboard tv tuners
 */
struct tvtuner {
	int	frequency;
	u_char	tunertype;
	u_char	channel;
	u_char	band;
};


/*
 * BrookTree 848  info structure, one per bt848 card installed.
 */
typedef struct bktr_softc {
    char *      base;	/* saa7116 register physical address */
    vm_offset_t phys_base;	/* saa7116 register physical address */
    pcici_t	tag;		/* PCI tag, for doing PCI commands */
    vm_offset_t bigbuf;		/* buffer that holds the captured image */
    int		alloc_pages;	/* number of pages in bigbuf */
    struct proc	*proc;		/* process to receive raised signal */
    int		signal;		/* signal to send to process */
#define	METEOR_SIG_MODE_MASK	0xffff0000
#define	METEOR_SIG_FIELD_MODE	0x00010000
#define	METEOR_SIG_FRAME_MODE	0x00000000
    vm_offset_t  dma_prog;
    vm_offset_t  odd_dma_prog;
    char         dma_prog_loaded;
    struct meteor_mem *mem;	/* used to control sync. multi-frame output */
    u_long	synch_wait;	/* wait for free buffer before continuing */
    short	current;	/* frame number in buffer (1-frames) */
    short	rows;		/* number of rows in a frame */
    short	cols;		/* number of columns in a frame */
    short	depth;		/* number of byte per pixel */
    u_long	format;		/* frame format rgb, yuv, etc.. */
    short	frames;		/* number of frames allocated */
    int		frame_size;	/* number of bytes in a frame */
    u_long	fifo_errors;	/* number of fifo capture errors since open */
    u_long	dma_errors;	/* number of DMA capture errors since open */
    u_long	frames_captured;/* number of frames captured since open */
    u_long	even_fields_captured; /* number of even fields captured */
    u_long	odd_fields_captured; /* number of odd fields captured */
    u_long	range_enable;	/* enable range checking ?? */
    u_short     capcontrol;     /* reg 0xdc capture control */
    u_short     bktr_cap_ctl;
    unsigned	flags;
#define	METEOR_INITALIZED	0x00000001
#define	METEOR_OPEN		0x00000002 
#define	METEOR_MMAP		0x00000004
#define	METEOR_INTR		0x00000008
#define	METEOR_READ		0x00000010	/* XXX never gets referenced */
#define	METEOR_SINGLE		0x00000020	/* get single frame */
#define	METEOR_CONTIN		0x00000040	/* continuously get frames */
#define	METEOR_SYNCAP		0x00000080	/* synchronously get frames */
#define	METEOR_CAP_MASK		0x000000f0
#define	METEOR_NTSC		0x00000100
#define	METEOR_PAL		0x00000200
#define	METEOR_SECAM		0x00000400
#define	METEOR_AUTOMODE		0x00000800
#define	METEOR_FORM_MASK	0x00000f00
#define	METEOR_DEV0		0x00001000
#define	METEOR_DEV1		0x00002000
#define	METEOR_DEV2		0x00004000
#define	METEOR_DEV3		0x00008000
#define METEOR_DEV_SVIDEO	0x00006000
#define METEOR_DEV_RGB		0x0000a000
#define	METEOR_DEV_MASK		0x0000f000
#define	METEOR_RGB16		0x00010000
#define	METEOR_RGB24		0x00020000
#define	METEOR_YUV_PACKED	0x00040000
#define	METEOR_YUV_PLANAR	0x00080000
#define	METEOR_WANT_EVEN	0x00100000	/* want even frame */
#define	METEOR_WANT_ODD		0x00200000	/* want odd frame */
#define	METEOR_WANT_MASK	0x00300000
#define METEOR_ONLY_EVEN_FIELDS	0x01000000
#define METEOR_ONLY_ODD_FIELDS	0x02000000
#define METEOR_ONLY_FIELDS_MASK 0x03000000
#define METEOR_YUV_422		0x04000000
#define	METEOR_OUTPUT_FMT_MASK	0x040f0000
#define	METEOR_WANT_TS		0x08000000	/* time-stamp a frame */
#define METEOR_RGB		0x20000000	/* meteor rgb unit */
#define METEOR_FIELD_MODE	0x80000000
    u_short	fps;		/* frames per second */
#ifdef DEVFS
    void	*devfs_token;
#endif
    struct meteor_video video;
    struct tvtuner	tuner;
} bktr_reg_t;


OpenPOWER on IntegriCloud