OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [usb/] [stv680.h] - Blame information for rev 1780

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/****************************************************************************
2
 *
3
 *  Filename: stv680.h
4
 *
5
 *  Description:
6
 *     This is a USB driver for STV0680 based usb video cameras.
7
 *
8
 *  This program is free software; you can redistribute it and/or modify
9
 *  it under the terms of the GNU General Public License as published by
10
 *  the Free Software Foundation; either version 2 of the License, or
11
 *  (at your option) any later version.
12
 *
13
 *  This program is distributed in the hope that it will be useful,
14
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 *  GNU General Public License for more details.
17
 *
18
 *  You should have received a copy of the GNU General Public License
19
 *  along with this program; if not, write to the Free Software
20
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21
 *
22
 ****************************************************************************/
23
 
24
/* size of usb transfers */
25
#define STV680_PACKETSIZE       4096
26
 
27
/* number of queued bulk transfers to use, may have problems if > 1 */
28
#define STV680_NUMSBUF          1
29
 
30
/* number of frames supported by the v4l part */
31
#define STV680_NUMFRAMES        2
32
 
33
/* scratch buffers for passing data to the decoders: 2 or 4 are good */
34
#define STV680_NUMSCRATCH       2
35
 
36
/* number of nul sized packets to receive before kicking the camera */
37
#define STV680_MAX_NULLPACKETS  200
38
 
39
/* number of decoding errors before kicking the camera */
40
#define STV680_MAX_ERRORS       100
41
 
42
#define USB_PENCAM_VENDOR_ID    0x0553
43
#define USB_PENCAM_PRODUCT_ID   0x0202
44
#define PENCAM_TIMEOUT          1000
45
/* fmt 4 */
46
#define STV_VIDEO_PALETTE       VIDEO_PALETTE_RGB24
47
 
48
static struct usb_device_id device_table[] = {
49
        {USB_DEVICE (USB_PENCAM_VENDOR_ID, USB_PENCAM_PRODUCT_ID)},
50
        {}
51
};
52
MODULE_DEVICE_TABLE (usb, device_table);
53
 
54
struct stv680_sbuf {
55
        unsigned char *data;
56
};
57
 
58
enum {
59
        FRAME_UNUSED,           /* Unused (no MCAPTURE) */
60
        FRAME_READY,            /* Ready to start grabbing */
61
        FRAME_GRABBING,         /* In the process of being grabbed into */
62
        FRAME_DONE,             /* Finished grabbing, but not been synced yet */
63
        FRAME_ERROR,            /* Something bad happened while processing */
64
};
65
 
66
enum {
67
        BUFFER_UNUSED,
68
        BUFFER_READY,
69
        BUFFER_BUSY,
70
        BUFFER_DONE,
71
};
72
 
73
/* raw camera data <- sbuf (urb transfer buf) */
74
struct stv680_scratch {
75
        unsigned char *data;
76
        volatile int state;
77
        int offset;
78
        int length;
79
};
80
 
81
/* processed data for display ends up here, after bayer */
82
struct stv680_frame {
83
        unsigned char *data;    /* Frame buffer */
84
        volatile int grabstate; /* State of grabbing */
85
        unsigned char *curline;
86
        int curlinepix;
87
        int curpix;
88
};
89
 
90
/* this is almost the video structure uvd_t, with extra parameters for stv */
91
struct usb_stv {
92
        struct video_device vdev;
93
 
94
        struct usb_device *udev;
95
 
96
        unsigned char bulk_in_endpointAddr;     /* __u8  the address of the bulk in endpoint */
97
        char *camera_name;
98
 
99
        unsigned int VideoMode; /* 0x0100 = VGA, 0x0000 = CIF, 0x0300 = QVGA */
100
        int SupportedModes;
101
        int CIF;
102
        int VGA;
103
        int QVGA;
104
        int cwidth;             /* camera width */
105
        int cheight;            /* camera height */
106
        int maxwidth;           /* max video width */
107
        int maxheight;          /* max video height */
108
        int vwidth;             /* current width for video window */
109
        int vheight;            /* current height for video window */
110
        unsigned long int rawbufsize;
111
        unsigned long int maxframesize; /* rawbufsize * 3 for RGB */
112
 
113
        int origGain;
114
        int origMode;           /* original camera mode */
115
 
116
        struct semaphore lock;  /* to lock the structure */
117
        int user;               /* user count for exclusive use */
118
        int removed;            /* device disconnected */
119
        int streaming;          /* Are we streaming video? */
120
        char *fbuf;             /* Videodev buffer area */
121
        struct urb *urb[STV680_NUMSBUF];        /* # of queued bulk transfers */
122
        int curframe;           /* Current receiving frame */
123
        struct stv680_frame frame[STV680_NUMFRAMES];    /* # frames supported by v4l part */
124
        int readcount;
125
        int framecount;
126
        int error;
127
        int dropped;
128
        int scratch_next;
129
        int scratch_use;
130
        int scratch_overflow;
131
        struct stv680_scratch scratch[STV680_NUMSCRATCH];       /* for decoders */
132
        struct stv680_sbuf sbuf[STV680_NUMSBUF];
133
 
134
        unsigned int brightness;
135
        unsigned int chgbright;
136
        unsigned int whiteness;
137
        unsigned int colour;
138
        unsigned int contrast;
139
        unsigned int hue;
140
        unsigned int palette;
141
        unsigned int depth;     /* rgb24 in bits */
142
 
143
        wait_queue_head_t wq;   /* Processes waiting */
144
 
145
        struct proc_dir_entry *proc_entry;      /* /proc/stv680/videoX */
146
        int nullpackets;
147
};
148
 
149
 
150
unsigned char red[256] = {
151
        0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
152
        18, 18, 18, 18, 18, 18, 18, 25, 30, 35, 38, 42,
153
        44, 47, 50, 53, 54, 57, 59, 61, 63, 65, 67, 69,
154
        71, 71, 73, 75, 77, 78, 80, 81, 82, 84, 85, 87,
155
        88, 89, 90, 91, 93, 94, 95, 97, 98, 98, 99, 101,
156
        102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
157
        114, 115, 116, 116, 117, 118, 119, 120, 121, 122, 123, 124,
158
        125, 125, 126, 127, 128, 129, 129, 130, 131, 132, 133, 134,
159
        134, 135, 135, 136, 137, 138, 139, 140, 140, 141, 142, 143,
160
        143, 143, 144, 145, 146, 147, 147, 148, 149, 150, 150, 151,
161
        152, 152, 152, 153, 154, 154, 155, 156, 157, 157, 158, 159,
162
        159, 160, 161, 161, 161, 162, 163, 163, 164, 165, 165, 166,
163
        167, 167, 168, 168, 169, 170, 170, 170, 171, 171, 172, 173,
164
        173, 174, 174, 175, 176, 176, 177, 178, 178, 179, 179, 179,
165
        180, 180, 181, 181, 182, 183, 183, 184, 184, 185, 185, 186,
166
        187, 187, 188, 188, 188, 188, 189, 190, 190, 191, 191, 192,
167
        192, 193, 193, 194, 195, 195, 196, 196, 197, 197, 197, 197,
168
        198, 198, 199, 199, 200, 201, 201, 202, 202, 203, 203, 204,
169
        204, 205, 205, 206, 206, 206, 206, 207, 207, 208, 208, 209,
170
        209, 210, 210, 211, 211, 212, 212, 213, 213, 214, 214, 215,
171
        215, 215, 215, 216, 216, 217, 217, 218, 218, 218, 219, 219,
172
        220, 220, 221, 221
173
};
174
 
175
unsigned char green[256] = {
176
        0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
177
        21, 21, 21, 21, 21, 21, 21, 28, 34, 39, 43, 47,
178
        50, 53, 56, 59, 61, 64, 66, 68, 71, 73, 75, 77,
179
        79, 80, 82, 84, 86, 87, 89, 91, 92, 94, 95, 97,
180
        98, 100, 101, 102, 104, 105, 106, 108, 109, 110, 111, 113,
181
        114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126,
182
        127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
183
        139, 140, 141, 142, 143, 144, 144, 145, 146, 147, 148, 149,
184
        150, 151, 151, 152, 153, 154, 155, 156, 156, 157, 158, 159,
185
        160, 160, 161, 162, 163, 164, 164, 165, 166, 167, 167, 168,
186
        169, 170, 170, 171, 172, 172, 173, 174, 175, 175, 176, 177,
187
        177, 178, 179, 179, 180, 181, 182, 182, 183, 184, 184, 185,
188
        186, 186, 187, 187, 188, 189, 189, 190, 191, 191, 192, 193,
189
        193, 194, 194, 195, 196, 196, 197, 198, 198, 199, 199, 200,
190
        201, 201, 202, 202, 203, 204, 204, 205, 205, 206, 206, 207,
191
        208, 208, 209, 209, 210, 210, 211, 212, 212, 213, 213, 214,
192
        214, 215, 215, 216, 217, 217, 218, 218, 219, 219, 220, 220,
193
        221, 221, 222, 222, 223, 224, 224, 225, 225, 226, 226, 227,
194
        227, 228, 228, 229, 229, 230, 230, 231, 231, 232, 232, 233,
195
        233, 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, 239,
196
        239, 240, 240, 241, 241, 242, 242, 243, 243, 243, 244, 244,
197
        245, 245, 246, 246
198
};
199
 
200
unsigned char blue[256] = {
201
        0, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
202
        23, 23, 23, 23, 23, 23, 23, 30, 37, 42, 47, 51,
203
        55, 58, 61, 64, 67, 70, 72, 74, 78, 80, 82, 84,
204
        86, 88, 90, 92, 94, 95, 97, 100, 101, 103, 104, 106,
205
        107, 110, 111, 112, 114, 115, 116, 118, 119, 121, 122, 124,
206
        125, 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138,
207
        139, 140, 141, 143, 144, 145, 146, 147, 148, 149, 150, 151,
208
        152, 154, 155, 156, 157, 158, 158, 159, 160, 161, 162, 163,
209
        165, 166, 166, 167, 168, 169, 170, 171, 171, 172, 173, 174,
210
        176, 176, 177, 178, 179, 180, 180, 181, 182, 183, 183, 184,
211
        185, 187, 187, 188, 189, 189, 190, 191, 192, 192, 193, 194,
212
        194, 195, 196, 196, 198, 199, 200, 200, 201, 202, 202, 203,
213
        204, 204, 205, 205, 206, 207, 207, 209, 210, 210, 211, 212,
214
        212, 213, 213, 214, 215, 215, 216, 217, 217, 218, 218, 220,
215
        221, 221, 222, 222, 223, 224, 224, 225, 225, 226, 226, 227,
216
        228, 228, 229, 229, 231, 231, 232, 233, 233, 234, 234, 235,
217
        235, 236, 236, 237, 238, 238, 239, 239, 240, 240, 242, 242,
218
        243, 243, 244, 244, 245, 246, 246, 247, 247, 248, 248, 249,
219
        249, 250, 250, 251, 251, 253, 253, 254, 254, 255, 255, 255,
220
        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
221
        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
222
        255, 255, 255, 255
223
};

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.