]>
Commit | Line | Data |
---|---|---|
989eb154 MI |
1 | /* |
2 | * | |
989eb154 MI |
3 | * |
4 | * Copyright (C) 2005 Mike Isely <isely@pobox.com> | |
5 | * | |
6 | * This program is free software; you can redistribute it and/or modify | |
7 | * it under the terms of the GNU General Public License as published by | |
8 | * the Free Software Foundation; either version 2 of the License | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | * GNU General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU General Public License | |
16 | * along with this program; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | */ | |
20 | #ifndef __PVRUSB2_DEVATTR_H | |
21 | #define __PVRUSB2_DEVATTR_H | |
22 | ||
23 | #include <linux/mod_devicetable.h> | |
6a540254 | 24 | #include <linux/videodev2.h> |
ce52f811 | 25 | #ifdef CONFIG_VIDEO_PVRUSB2_DVB |
04910bdc | 26 | #include "pvrusb2-dvb.h" |
ce52f811 | 27 | #endif |
989eb154 MI |
28 | |
29 | /* | |
30 | ||
31 | This header defines structures used to describe attributes of a device. | |
32 | ||
33 | */ | |
34 | ||
35 | ||
e3e76cbb | 36 | #define PVR2_CLIENT_ID_NULL 0 |
e9c64a78 MI |
37 | #define PVR2_CLIENT_ID_MSP3400 1 |
38 | #define PVR2_CLIENT_ID_CX25840 2 | |
39 | #define PVR2_CLIENT_ID_SAA7115 3 | |
40 | #define PVR2_CLIENT_ID_TUNER 4 | |
851981a1 | 41 | #define PVR2_CLIENT_ID_CS53L32A 5 |
5f6dae80 | 42 | #define PVR2_CLIENT_ID_WM8775 6 |
bb65242a | 43 | #define PVR2_CLIENT_ID_DEMOD 7 |
e9c64a78 MI |
44 | |
45 | struct pvr2_device_client_desc { | |
46 | /* One ovr PVR2_CLIENT_ID_xxxx */ | |
47 | unsigned char module_id; | |
48 | ||
49 | /* Null-terminated array of I2C addresses to try in order | |
50 | initialize the module. It's safe to make this null terminated | |
51 | since we're never going to encounter an i2c device with an | |
52 | address of zero. If this is a null pointer or zero-length, | |
53 | then no I2C addresses have been specified, in which case we'll | |
54 | try some compiled in defaults for now. */ | |
55 | unsigned char *i2c_address_list; | |
56 | }; | |
57 | ||
58 | struct pvr2_device_client_table { | |
59 | const struct pvr2_device_client_desc *lst; | |
60 | unsigned char cnt; | |
61 | }; | |
62 | ||
63 | ||
989eb154 MI |
64 | struct pvr2_string_table { |
65 | const char **lst; | |
66 | unsigned int cnt; | |
67 | }; | |
68 | ||
f5174af2 | 69 | #define PVR2_ROUTING_SCHEME_HAUPPAUGE 0 |
9e2e3aeb | 70 | #define PVR2_ROUTING_SCHEME_GOTVIEW 1 |
2a6b627f | 71 | #define PVR2_ROUTING_SCHEME_ONAIR 2 |
008b6c5f | 72 | #define PVR2_ROUTING_SCHEME_AV400 3 |
989eb154 | 73 | |
e8f5bacf MI |
74 | #define PVR2_DIGITAL_SCHEME_NONE 0 |
75 | #define PVR2_DIGITAL_SCHEME_HAUPPAUGE 1 | |
76 | #define PVR2_DIGITAL_SCHEME_ONAIR 2 | |
77 | ||
40381cb0 MI |
78 | #define PVR2_LED_SCHEME_NONE 0 |
79 | #define PVR2_LED_SCHEME_HAUPPAUGE 1 | |
80 | ||
31335b13 | 81 | #define PVR2_IR_SCHEME_NONE 0 |
27eab384 MI |
82 | #define PVR2_IR_SCHEME_24XXX 1 /* FX2-controlled IR */ |
83 | #define PVR2_IR_SCHEME_ZILOG 2 /* HVR-1950 style (must be taken out of reset) */ | |
84 | #define PVR2_IR_SCHEME_24XXX_MCE 3 /* 24xxx MCE device */ | |
85 | #define PVR2_IR_SCHEME_29XXX 4 /* Original 29xxx device */ | |
31335b13 | 86 | |
989eb154 MI |
87 | /* This describes a particular hardware type (except for the USB device ID |
88 | which must live in a separate structure due to environmental | |
89 | constraints). See the top of pvrusb2-hdw.c for where this is | |
90 | instantiated. */ | |
91 | struct pvr2_device_desc { | |
92 | /* Single line text description of hardware */ | |
93 | const char *description; | |
94 | ||
95 | /* Single token identifier for hardware */ | |
96 | const char *shortname; | |
97 | ||
98 | /* List of additional client modules we need to load */ | |
99 | struct pvr2_string_table client_modules; | |
100 | ||
e9c64a78 MI |
101 | /* List of defined client modules we need to load */ |
102 | struct pvr2_device_client_table client_table; | |
103 | ||
989eb154 MI |
104 | /* List of FX2 firmware file names we should search; if empty then |
105 | FX2 firmware check / load is skipped and we assume the device | |
106 | was initialized from internal ROM. */ | |
107 | struct pvr2_string_table fx2_firmware; | |
108 | ||
1b1b8d78 | 109 | #ifdef CONFIG_VIDEO_PVRUSB2_DVB |
04910bdc | 110 | /* callback functions to handle attachment of digital tuner & demod */ |
69ea3c1c | 111 | const struct pvr2_dvb_props *dvb_props; |
04910bdc | 112 | |
1b1b8d78 | 113 | #endif |
5fd782af MI |
114 | /* Initial standard bits to use for this device, if not zero. |
115 | Anything set here is also implied as an available standard. | |
116 | Note: This is ignored if overridden on the module load line via | |
117 | the video_std module option. */ | |
118 | v4l2_std_id default_std_mask; | |
119 | ||
120 | /* V4L tuner type ID to use with this device (only used if the | |
121 | driver could not discover the type any other way). */ | |
122 | int default_tuner_type; | |
123 | ||
f5174af2 MI |
124 | /* Signal routing scheme used by device, contains one of |
125 | PVR2_ROUTING_SCHEME_XXX. Schemes have to be defined as we | |
126 | encounter them. This is an arbitrary integer scheme id; its | |
127 | meaning is contained entirely within the driver and is | |
128 | interpreted by logic which must send commands to the chip-level | |
129 | drivers (search for things which touch this field). */ | |
5fd782af | 130 | unsigned char signal_routing_scheme; |
f5174af2 | 131 | |
40381cb0 MI |
132 | /* Indicates scheme for controlling device's LED (if any). The |
133 | driver will turn on the LED when streaming is underway. This | |
134 | contains one of PVR2_LED_SCHEME_XXX. */ | |
5fd782af | 135 | unsigned char led_scheme; |
40381cb0 | 136 | |
e8f5bacf MI |
137 | /* Control scheme to use if there is a digital tuner. This |
138 | contains one of PVR2_DIGITAL_SCHEME_XXX. This is an arbitrary | |
139 | integer scheme id; its meaning is contained entirely within the | |
140 | driver and is interpreted by logic which must control the | |
141 | streaming pathway (search for things which touch this field). */ | |
5fd782af | 142 | unsigned char digital_control_scheme; |
6a540254 | 143 | |
989eb154 | 144 | /* If set, we don't bother trying to load cx23416 firmware. */ |
0e3cbe81 | 145 | unsigned int flag_skip_cx23416_firmware:1; |
989eb154 | 146 | |
72998b71 MI |
147 | /* If set, the encoder must be healthy in order for digital mode to |
148 | work (otherwise we assume that digital streaming will work even | |
149 | if we fail to locate firmware for the encoder). If the device | |
150 | doesn't support digital streaming then this flag has no | |
151 | effect. */ | |
0e3cbe81 | 152 | unsigned int flag_digital_requires_cx23416:1; |
72998b71 | 153 | |
aaf7884d | 154 | /* Device has a hauppauge eeprom which we can interrogate. */ |
0e3cbe81 | 155 | unsigned int flag_has_hauppauge_rom:1; |
aaf7884d | 156 | |
989eb154 | 157 | /* Device does not require a powerup command to be issued. */ |
0e3cbe81 | 158 | unsigned int flag_no_powerup:1; |
989eb154 MI |
159 | |
160 | /* Device has a cx25840 - this enables special additional logic to | |
161 | handle it. */ | |
0e3cbe81 | 162 | unsigned int flag_has_cx25840:1; |
989eb154 MI |
163 | |
164 | /* Device has a wm8775 - this enables special additional logic to | |
165 | ensure that it is found. */ | |
0e3cbe81 | 166 | unsigned int flag_has_wm8775:1; |
056d1a89 | 167 | |
27eab384 MI |
168 | /* Indicate IR scheme of hardware. If not set, then it is assumed |
169 | that IR can work without any help from the driver. */ | |
170 | unsigned int ir_scheme:3; | |
d068c6ee | 171 | |
e8f5bacf MI |
172 | /* These bits define which kinds of sources the device can handle. |
173 | Note: Digital tuner presence is inferred by the | |
174 | digital_control_scheme enumeration. */ | |
0e3cbe81 HH |
175 | unsigned int flag_has_fmradio:1; /* Has FM radio receiver */ |
176 | unsigned int flag_has_analogtuner:1; /* Has analog tuner */ | |
177 | unsigned int flag_has_composite:1; /* Has composite input */ | |
178 | unsigned int flag_has_svideo:1; /* Has s-video input */ | |
c21c2db4 | 179 | unsigned int flag_fx2_16kb:1; /* 16KB FX2 firmware OK here */ |
8fd04448 MI |
180 | |
181 | /* If this driver is considered experimental, i.e. not all aspects | |
182 | are working correctly and/or it is untested, mark that fact | |
183 | with this flag. */ | |
184 | unsigned int flag_is_experimental:1; | |
989eb154 MI |
185 | }; |
186 | ||
989eb154 | 187 | extern struct usb_device_id pvr2_device_table[]; |
989eb154 MI |
188 | |
189 | #endif /* __PVRUSB2_HDW_INTERNAL_H */ | |
190 | ||
191 | /* | |
192 | Stuff for Emacs to see, in order to encourage consistent editing style: | |
193 | *** Local Variables: *** | |
194 | *** mode: c *** | |
195 | *** fill-column: 75 *** | |
196 | *** tab-width: 8 *** | |
197 | *** c-basic-offset: 8 *** | |
198 | *** End: *** | |
199 | */ |