• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2     Copyright (C) 2008 Mauro Carvalho Chehab <mchehab@kernel.org>
3     This program is free software; you can redistribute it and/or modify
4     it under the terms of the GNU General Public License as published by
5     the Free Software Foundation version 2 of the License.
6 
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10     GNU General Public License for more details.
11 
12     You should have received a copy of the GNU General Public License
13     along with this program; if not, write to the Free Software
14     Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA  02110-1335  USA
15  */
16 
17 #include "v4l2-dbg.h"
18 
19 #define EM28XX_IDENT "em28xx"
20 
21 /* Register name prefix */
22 #define EM2800_PREFIX "EM2800_"
23 #define EM2874_PREFIX "EM2874_"
24 #define EM2880_PREFIX "EM2880_"
25 #define EM28XX_PREFIX "EM28XX_"
26 
27 static const std::vector<board_regs> em28xx_regs{
28 	{ 0x00, EM28XX_PREFIX "CHIPCFG", 1 },	{ 0x04, EM2880_PREFIX "GPO", 1 },
29 	{ 0x08, EM28XX_PREFIX "GPIO", 1 },
30 
31 	{ 0x06, EM28XX_PREFIX "I2C_CLK", 1 },	{ 0x0a, EM28XX_PREFIX "CHIPID", 1 },
32 	{ 0x0c, EM28XX_PREFIX "USBSUSP", 1 },
33 
34 	{ 0x0e, EM28XX_PREFIX "AUDIOSRC", 1 },	{ 0x0f, EM28XX_PREFIX "XCLK", 1 },
35 
36 	{ 0x10, EM28XX_PREFIX "VINMODE", 1 },	{ 0x11, EM28XX_PREFIX "VINCTRL", 1 },
37 	{ 0x12, EM28XX_PREFIX "VINENABLE", 1 },
38 
39 	{ 0x14, EM28XX_PREFIX "GAMMA", 1 },	{ 0x15, EM28XX_PREFIX "RGAIN", 1 },
40 	{ 0x16, EM28XX_PREFIX "GGAIN", 1 },	{ 0x17, EM28XX_PREFIX "BGAIN", 1 },
41 	{ 0x18, EM28XX_PREFIX "ROFFSET", 1 },	{ 0x19, EM28XX_PREFIX "GOFFSET", 1 },
42 	{ 0x1a, EM28XX_PREFIX "BOFFSET", 1 },
43 
44 	{ 0x1b, EM28XX_PREFIX "OFLOW", 1 },	{ 0x1c, EM28XX_PREFIX "HSTART", 1 },
45 	{ 0x1d, EM28XX_PREFIX "VSTART", 1 },	{ 0x1e, EM28XX_PREFIX "CWIDTH", 1 },
46 	{ 0x1f, EM28XX_PREFIX "CHEIGHT", 1 },
47 
48 	{ 0x20, EM28XX_PREFIX "YGAIN", 1 },	{ 0x21, EM28XX_PREFIX "YOFFSET", 1 },
49 	{ 0x22, EM28XX_PREFIX "UVGAIN", 1 },	{ 0x23, EM28XX_PREFIX "UOFFSET", 1 },
50 	{ 0x24, EM28XX_PREFIX "VOFFSET", 1 },	{ 0x25, EM28XX_PREFIX "SHARPNESS", 1 },
51 
52 	{ 0x26, EM28XX_PREFIX "COMPR", 1 },	{ 0x27, EM28XX_PREFIX "OUTFMT", 1 },
53 
54 	{ 0x28, EM28XX_PREFIX "XMIN", 1 },	{ 0x29, EM28XX_PREFIX "XMAX", 1 },
55 	{ 0x2a, EM28XX_PREFIX "YMIN", 1 },	{ 0x2b, EM28XX_PREFIX "YMAX", 1 },
56 
57 	{ 0x30, EM28XX_PREFIX "HSCALELOW", 1 }, { 0x31, EM28XX_PREFIX "HSCALEHIGH", 1 },
58 	{ 0x32, EM28XX_PREFIX "VSCALELOW", 1 }, { 0x33, EM28XX_PREFIX "VSCALEHIGH", 1 },
59 
60 	{ 0x40, EM28XX_PREFIX "AC97LSB", 1 },	{ 0x41, EM28XX_PREFIX "AC97MSB", 1 },
61 	{ 0x42, EM28XX_PREFIX "AC97ADDR", 1 },	{ 0x43, EM28XX_PREFIX "AC97BUSY", 1 },
62 
63 	{ 0x45, EM28XX_PREFIX "IR", 1 },
64 
65 	{ 0x50, EM2874_PREFIX "IR_CONFIG", 1 }, { 0x51, EM2874_PREFIX "IR", 1 },
66 	{ 0x5f, EM2874_PREFIX "TS_ENABLE", 1 }, { 0x80, EM2874_PREFIX "GPIO", 1 },
67 };
68 
69 static const std::vector<board_regs> em28xx_alt_regs{
70 	{ 0x08, EM2800_PREFIX "AUDIOSRC", 1 },
71 };
72