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 | |
41 | #define PVR2_CLIENT_ID_CS53132A 5 | |
5f6dae80 | 42 | #define PVR2_CLIENT_ID_WM8775 6 |
e9c64a78 MI |
43 | |
44 | struct pvr2_device_client_desc { | |
45 | /* One ovr PVR2_CLIENT_ID_xxxx */ | |
46 | unsigned char module_id; | |
47 | ||
48 | /* Null-terminated array of I2C addresses to try in order | |
49 | initialize the module. It's safe to make this null terminated | |
50 | since we're never going to encounter an i2c device with an | |
51 | address of zero. If this is a null pointer or zero-length, | |
52 | then no I2C addresses have been specified, in which case we'll | |
53 | try some compiled in defaults for now. */ | |
54 | unsigned char *i2c_address_list; | |
55 | }; | |
56 | ||
57 | struct pvr2_device_client_table { | |
58 | const struct pvr2_device_client_desc *lst; | |
59 | unsigned char cnt; | |
60 | }; | |
61 | ||
62 | ||
989eb154 MI |
63 | struct pvr2_string_table { |
64 | const char **lst; | |
65 | unsigned int cnt; | |
66 | }; | |
67 | ||
f5174af2 | 68 | #define PVR2_ROUTING_SCHEME_HAUPPAUGE 0 |
9e2e3aeb | 69 | #define PVR2_ROUTING_SCHEME_GOTVIEW 1 |
989eb154 | 70 | |
e8f5bacf MI |
71 | #define PVR2_DIGITAL_SCHEME_NONE 0 |
72 | #define PVR2_DIGITAL_SCHEME_HAUPPAUGE 1 | |
73 | #define PVR2_DIGITAL_SCHEME_ONAIR 2 | |
74 | ||
40381cb0 MI |
75 | #define PVR2_LED_SCHEME_NONE 0 |
76 | #define PVR2_LED_SCHEME_HAUPPAUGE 1 | |
77 | ||
31335b13 MI |
78 | #define PVR2_IR_SCHEME_NONE 0 |
79 | #define PVR2_IR_SCHEME_24XXX 1 | |
80 | #define PVR2_IR_SCHEME_ZILOG 2 | |
81 | ||
989eb154 MI |
82 | /* This describes a particular hardware type (except for the USB device ID |
83 | which must live in a separate structure due to environmental | |
84 | constraints). See the top of pvrusb2-hdw.c for where this is | |
85 | instantiated. */ | |
86 | struct pvr2_device_desc { | |
87 | /* Single line text description of hardware */ | |
88 | const char *description; | |
89 | ||
90 | /* Single token identifier for hardware */ | |
91 | const char *shortname; | |
92 | ||
93 | /* List of additional client modules we need to load */ | |
94 | struct pvr2_string_table client_modules; | |
95 | ||
e9c64a78 MI |
96 | /* List of defined client modules we need to load */ |
97 | struct pvr2_device_client_table client_table; | |
98 | ||
989eb154 MI |
99 | /* List of FX2 firmware file names we should search; if empty then |
100 | FX2 firmware check / load is skipped and we assume the device | |
101 | was initialized from internal ROM. */ | |
102 | struct pvr2_string_table fx2_firmware; | |
103 | ||
1b1b8d78 | 104 | #ifdef CONFIG_VIDEO_PVRUSB2_DVB |
04910bdc MK |
105 | /* callback functions to handle attachment of digital tuner & demod */ |
106 | struct pvr2_dvb_props *dvb_props; | |
107 | ||
1b1b8d78 | 108 | #endif |
5fd782af MI |
109 | /* Initial standard bits to use for this device, if not zero. |
110 | Anything set here is also implied as an available standard. | |
111 | Note: This is ignored if overridden on the module load line via | |
112 | the video_std module option. */ | |
113 | v4l2_std_id default_std_mask; | |
114 | ||
115 | /* V4L tuner type ID to use with this device (only used if the | |
116 | driver could not discover the type any other way). */ | |
117 | int default_tuner_type; | |
118 | ||
f5174af2 MI |
119 | /* Signal routing scheme used by device, contains one of |
120 | PVR2_ROUTING_SCHEME_XXX. Schemes have to be defined as we | |
121 | encounter them. This is an arbitrary integer scheme id; its | |
122 | meaning is contained entirely within the driver and is | |
123 | interpreted by logic which must send commands to the chip-level | |
124 | drivers (search for things which touch this field). */ | |
5fd782af | 125 | unsigned char signal_routing_scheme; |
f5174af2 | 126 | |
40381cb0 MI |
127 | /* Indicates scheme for controlling device's LED (if any). The |
128 | driver will turn on the LED when streaming is underway. This | |
129 | contains one of PVR2_LED_SCHEME_XXX. */ | |
5fd782af | 130 | unsigned char led_scheme; |
40381cb0 | 131 | |
e8f5bacf MI |
132 | /* Control scheme to use if there is a digital tuner. This |
133 | contains one of PVR2_DIGITAL_SCHEME_XXX. This is an arbitrary | |
134 | integer scheme id; its meaning is contained entirely within the | |
135 | driver and is interpreted by logic which must control the | |
136 | streaming pathway (search for things which touch this field). */ | |
5fd782af | 137 | unsigned char digital_control_scheme; |
6a540254 | 138 | |
989eb154 | 139 | /* If set, we don't bother trying to load cx23416 firmware. */ |
0e3cbe81 | 140 | unsigned int flag_skip_cx23416_firmware:1; |
989eb154 | 141 | |
72998b71 MI |
142 | /* If set, the encoder must be healthy in order for digital mode to |
143 | work (otherwise we assume that digital streaming will work even | |
144 | if we fail to locate firmware for the encoder). If the device | |
145 | doesn't support digital streaming then this flag has no | |
146 | effect. */ | |
0e3cbe81 | 147 | unsigned int flag_digital_requires_cx23416:1; |
72998b71 | 148 | |
aaf7884d | 149 | /* Device has a hauppauge eeprom which we can interrogate. */ |
0e3cbe81 | 150 | unsigned int flag_has_hauppauge_rom:1; |
aaf7884d | 151 | |
989eb154 | 152 | /* Device does not require a powerup command to be issued. */ |
0e3cbe81 | 153 | unsigned int flag_no_powerup:1; |
989eb154 MI |
154 | |
155 | /* Device has a cx25840 - this enables special additional logic to | |
156 | handle it. */ | |
0e3cbe81 | 157 | unsigned int flag_has_cx25840:1; |
989eb154 MI |
158 | |
159 | /* Device has a wm8775 - this enables special additional logic to | |
160 | ensure that it is found. */ | |
0e3cbe81 | 161 | unsigned int flag_has_wm8775:1; |
056d1a89 | 162 | |
31335b13 MI |
163 | /* Indicate any specialized IR scheme that might need to be |
164 | supported by this driver. If not set, then it is assumed that | |
165 | IR can work without help from the driver (which is frequently | |
166 | the case). This is otherwise set to one of | |
167 | PVR2_IR_SCHEME_xxxx. For "xxxx", the value "24XXX" indicates a | |
168 | Hauppauge 24xxx class device which has an FPGA-hosted IR | |
169 | receiver that can only be reached via FX2 command codes. In | |
170 | that case the pvrusb2 driver will emulate the behavior of the | |
171 | older 29xxx device's IR receiver (a "virtual" I2C chip) in terms | |
172 | of those command codes. For the value "ZILOG", we're dealing | |
173 | with an IR chip that must be taken out of reset via another FX2 | |
174 | command code (which is the case for HVR-1950 devices). */ | |
175 | unsigned int ir_scheme:2; | |
d068c6ee | 176 | |
e8f5bacf MI |
177 | /* These bits define which kinds of sources the device can handle. |
178 | Note: Digital tuner presence is inferred by the | |
179 | digital_control_scheme enumeration. */ | |
0e3cbe81 HH |
180 | unsigned int flag_has_fmradio:1; /* Has FM radio receiver */ |
181 | unsigned int flag_has_analogtuner:1; /* Has analog tuner */ | |
182 | unsigned int flag_has_composite:1; /* Has composite input */ | |
183 | unsigned int flag_has_svideo:1; /* Has s-video input */ | |
989eb154 MI |
184 | }; |
185 | ||
989eb154 | 186 | extern struct usb_device_id pvr2_device_table[]; |
989eb154 MI |
187 | |
188 | #endif /* __PVRUSB2_HDW_INTERNAL_H */ | |
189 | ||
190 | /* | |
191 | Stuff for Emacs to see, in order to encourage consistent editing style: | |
192 | *** Local Variables: *** | |
193 | *** mode: c *** | |
194 | *** fill-column: 75 *** | |
195 | *** tab-width: 8 *** | |
196 | *** c-basic-offset: 8 *** | |
197 | *** End: *** | |
198 | */ |