diff options
Diffstat (limited to 'drivers/media/usb/pvrusb2/pvrusb2-devattr.h')
-rw-r--r-- | drivers/media/usb/pvrusb2/pvrusb2-devattr.h | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-devattr.h b/drivers/media/usb/pvrusb2/pvrusb2-devattr.h new file mode 100644 index 000000000000..273c8d4b3853 --- /dev/null +++ b/drivers/media/usb/pvrusb2/pvrusb2-devattr.h | |||
@@ -0,0 +1,199 @@ | |||
1 | /* | ||
2 | * | ||
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> | ||
24 | #include <linux/videodev2.h> | ||
25 | #ifdef CONFIG_VIDEO_PVRUSB2_DVB | ||
26 | #include "pvrusb2-dvb.h" | ||
27 | #endif | ||
28 | |||
29 | /* | ||
30 | |||
31 | This header defines structures used to describe attributes of a device. | ||
32 | |||
33 | */ | ||
34 | |||
35 | |||
36 | #define PVR2_CLIENT_ID_NULL 0 | ||
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_CS53L32A 5 | ||
42 | #define PVR2_CLIENT_ID_WM8775 6 | ||
43 | #define PVR2_CLIENT_ID_DEMOD 7 | ||
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 | |||
64 | struct pvr2_string_table { | ||
65 | const char **lst; | ||
66 | unsigned int cnt; | ||
67 | }; | ||
68 | |||
69 | #define PVR2_ROUTING_SCHEME_HAUPPAUGE 0 | ||
70 | #define PVR2_ROUTING_SCHEME_GOTVIEW 1 | ||
71 | #define PVR2_ROUTING_SCHEME_ONAIR 2 | ||
72 | #define PVR2_ROUTING_SCHEME_AV400 3 | ||
73 | |||
74 | #define PVR2_DIGITAL_SCHEME_NONE 0 | ||
75 | #define PVR2_DIGITAL_SCHEME_HAUPPAUGE 1 | ||
76 | #define PVR2_DIGITAL_SCHEME_ONAIR 2 | ||
77 | |||
78 | #define PVR2_LED_SCHEME_NONE 0 | ||
79 | #define PVR2_LED_SCHEME_HAUPPAUGE 1 | ||
80 | |||
81 | #define PVR2_IR_SCHEME_NONE 0 | ||
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 */ | ||
86 | |||
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 | |||
101 | /* List of defined client modules we need to load */ | ||
102 | struct pvr2_device_client_table client_table; | ||
103 | |||
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 | |||
109 | #ifdef CONFIG_VIDEO_PVRUSB2_DVB | ||
110 | /* callback functions to handle attachment of digital tuner & demod */ | ||
111 | const struct pvr2_dvb_props *dvb_props; | ||
112 | |||
113 | #endif | ||
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 | |||
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). */ | ||
130 | unsigned char signal_routing_scheme; | ||
131 | |||
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. */ | ||
135 | unsigned char led_scheme; | ||
136 | |||
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). */ | ||
142 | unsigned char digital_control_scheme; | ||
143 | |||
144 | /* If set, we don't bother trying to load cx23416 firmware. */ | ||
145 | unsigned int flag_skip_cx23416_firmware:1; | ||
146 | |||
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. */ | ||
152 | unsigned int flag_digital_requires_cx23416:1; | ||
153 | |||
154 | /* Device has a hauppauge eeprom which we can interrogate. */ | ||
155 | unsigned int flag_has_hauppauge_rom:1; | ||
156 | |||
157 | /* Device does not require a powerup command to be issued. */ | ||
158 | unsigned int flag_no_powerup:1; | ||
159 | |||
160 | /* Device has a cx25840 - this enables special additional logic to | ||
161 | handle it. */ | ||
162 | unsigned int flag_has_cx25840:1; | ||
163 | |||
164 | /* Device has a wm8775 - this enables special additional logic to | ||
165 | ensure that it is found. */ | ||
166 | unsigned int flag_has_wm8775:1; | ||
167 | |||
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; | ||
171 | |||
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. */ | ||
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 */ | ||
179 | unsigned int flag_fx2_16kb:1; /* 16KB FX2 firmware OK here */ | ||
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; | ||
185 | }; | ||
186 | |||
187 | extern struct usb_device_id pvr2_device_table[]; | ||
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 | */ | ||