aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorPatrick Boettcher <pb@linuxtv.org>2005-07-07 20:58:07 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-07-07 21:23:59 -0400
commit8945c8c3d207c7a69024c02d164f5ae790c5b7ba (patch)
treebde659c1e944fbb27e9d156265331d6396d26fc6 /drivers/media
parent68293ddbabb26a58ddb0a84aa5058a7acd7127e7 (diff)
[PATCH] dvb: usb: fix ADSTech Instant TV DVB-T USB2.0 support
Fixed support for the ADSTech Instant TV DVB-T USB (2.0 version). Thanks to Gerolf Wendland for his support. Signed-off-by: Patrick Boettcher <pb@linuxtv.org> Signed-off-by: Johannes Stezenbach <js@linuxtv.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/dvb/dvb-usb/dibusb-mb.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/drivers/media/dvb/dvb-usb/dibusb-mb.c b/drivers/media/dvb/dvb-usb/dibusb-mb.c
index 494e1227cb7e..aee6263f07cc 100644
--- a/drivers/media/dvb/dvb-usb/dibusb-mb.c
+++ b/drivers/media/dvb/dvb-usb/dibusb-mb.c
@@ -31,10 +31,17 @@ static int dibusb_dib3000mb_frontend_attach(struct dvb_usb_device *d)
31 return 0; 31 return 0;
32} 32}
33 33
34/* some of the dibusb 1.1 device aren't equipped with the default tuner 34static int dibusb_thomson_tuner_attach(struct dvb_usb_device *d)
35{
36 d->pll_addr = 0x61;
37 d->pll_desc = &dvb_pll_tua6010xs;
38 return 0;
39}
40
41/* Some of the Artec 1.1 device aren't equipped with the default tuner
35 * (Thomson Cable), but with a Panasonic ENV77H11D5. This function figures 42 * (Thomson Cable), but with a Panasonic ENV77H11D5. This function figures
36 * this out. */ 43 * this out. */
37static int dibusb_dib3000mb_tuner_attach (struct dvb_usb_device *d) 44static int dibusb_tuner_probe_and_attach(struct dvb_usb_device *d)
38{ 45{
39 u8 b[2] = { 0,0 }, b2[1]; 46 u8 b[2] = { 0,0 }, b2[1];
40 int ret = 0; 47 int ret = 0;
@@ -59,8 +66,7 @@ static int dibusb_dib3000mb_tuner_attach (struct dvb_usb_device *d)
59 66
60 if (b2[0] == 0xfe) { 67 if (b2[0] == 0xfe) {
61 info("this device has the Thomson Cable onboard. Which is default."); 68 info("this device has the Thomson Cable onboard. Which is default.");
62 d->pll_addr = 0x61; 69 dibusb_thomson_tuner_attach(d);
63 d->pll_desc = &dvb_pll_tua6010xs;
64 } else { 70 } else {
65 u8 bpll[4] = { 0x0b, 0xf5, 0x85, 0xab }; 71 u8 bpll[4] = { 0x0b, 0xf5, 0x85, 0xab };
66 info("this device has the Panasonic ENV77H11D5 onboard."); 72 info("this device has the Panasonic ENV77H11D5 onboard.");
@@ -114,6 +120,8 @@ static struct usb_device_id dibusb_dib3000mb_table [] = {
114/* 21 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_COLD) }, 120/* 21 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_COLD) },
115/* 22 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_WARM) }, 121/* 22 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_WARM) },
116/* 23 */ { USB_DEVICE(USB_VID_ADSTECH, USB_PID_ADSTECH_USB2_COLD) }, 122/* 23 */ { USB_DEVICE(USB_VID_ADSTECH, USB_PID_ADSTECH_USB2_COLD) },
123
124/* device ID with default DIBUSB2_0-firmware and with the hacked firmware */
117/* 24 */ { USB_DEVICE(USB_VID_ADSTECH, USB_PID_ADSTECH_USB2_WARM) }, 125/* 24 */ { USB_DEVICE(USB_VID_ADSTECH, USB_PID_ADSTECH_USB2_WARM) },
118 126
119// #define DVB_USB_DIBUSB_MB_FAULTY_USB_IDs 127// #define DVB_USB_DIBUSB_MB_FAULTY_USB_IDs
@@ -140,7 +148,7 @@ static struct dvb_usb_properties dibusb1_1_properties = {
140 .pid_filter_ctrl = dibusb_pid_filter_ctrl, 148 .pid_filter_ctrl = dibusb_pid_filter_ctrl,
141 .power_ctrl = dibusb_power_ctrl, 149 .power_ctrl = dibusb_power_ctrl,
142 .frontend_attach = dibusb_dib3000mb_frontend_attach, 150 .frontend_attach = dibusb_dib3000mb_frontend_attach,
143 .tuner_attach = dibusb_dib3000mb_tuner_attach, 151 .tuner_attach = dibusb_tuner_probe_and_attach,
144 152
145 .rc_interval = DEFAULT_RC_INTERVAL, 153 .rc_interval = DEFAULT_RC_INTERVAL,
146 .rc_key_map = dibusb_rc_keys, 154 .rc_key_map = dibusb_rc_keys,
@@ -212,7 +220,7 @@ static struct dvb_usb_properties dibusb1_1_an2235_properties = {
212 .pid_filter_ctrl = dibusb_pid_filter_ctrl, 220 .pid_filter_ctrl = dibusb_pid_filter_ctrl,
213 .power_ctrl = dibusb_power_ctrl, 221 .power_ctrl = dibusb_power_ctrl,
214 .frontend_attach = dibusb_dib3000mb_frontend_attach, 222 .frontend_attach = dibusb_dib3000mb_frontend_attach,
215 .tuner_attach = dibusb_dib3000mb_tuner_attach, 223 .tuner_attach = dibusb_tuner_probe_and_attach,
216 224
217 .rc_interval = DEFAULT_RC_INTERVAL, 225 .rc_interval = DEFAULT_RC_INTERVAL,
218 .rc_key_map = dibusb_rc_keys, 226 .rc_key_map = dibusb_rc_keys,
@@ -257,7 +265,7 @@ static struct dvb_usb_properties dibusb2_0b_properties = {
257 .caps = DVB_USB_HAS_PID_FILTER | DVB_USB_PID_FILTER_CAN_BE_TURNED_OFF | DVB_USB_IS_AN_I2C_ADAPTER, 265 .caps = DVB_USB_HAS_PID_FILTER | DVB_USB_PID_FILTER_CAN_BE_TURNED_OFF | DVB_USB_IS_AN_I2C_ADAPTER,
258 .usb_ctrl = CYPRESS_FX2, 266 .usb_ctrl = CYPRESS_FX2,
259 267
260 .firmware = "dvb-usb-adstech-usb2-01.fw", 268 .firmware = "dvb-usb-adstech-usb2-02.fw",
261 269
262 .size_of_priv = sizeof(struct dibusb_state), 270 .size_of_priv = sizeof(struct dibusb_state),
263 271
@@ -266,7 +274,7 @@ static struct dvb_usb_properties dibusb2_0b_properties = {
266 .pid_filter_ctrl = dibusb_pid_filter_ctrl, 274 .pid_filter_ctrl = dibusb_pid_filter_ctrl,
267 .power_ctrl = dibusb2_0_power_ctrl, 275 .power_ctrl = dibusb2_0_power_ctrl,
268 .frontend_attach = dibusb_dib3000mb_frontend_attach, 276 .frontend_attach = dibusb_dib3000mb_frontend_attach,
269 .tuner_attach = dibusb_dib3000mb_tuner_attach, 277 .tuner_attach = dibusb_thomson_tuner_attach,
270 278
271 .rc_interval = DEFAULT_RC_INTERVAL, 279 .rc_interval = DEFAULT_RC_INTERVAL,
272 .rc_key_map = dibusb_rc_keys, 280 .rc_key_map = dibusb_rc_keys,
@@ -288,11 +296,11 @@ static struct dvb_usb_properties dibusb2_0b_properties = {
288 } 296 }
289 }, 297 },
290 298
291 .num_device_descs = 2, 299 .num_device_descs = 1,
292 .devices = { 300 .devices = {
293 { "KWorld/ADSTech Instant DVB-T USB 2.0", 301 { "KWorld/ADSTech Instant DVB-T USB 2.0",
294 { &dibusb_dib3000mb_table[23], NULL }, 302 { &dibusb_dib3000mb_table[23], NULL },
295 { &dibusb_dib3000mb_table[24], NULL }, /* device ID with default DIBUSB2_0-firmware */ 303 { &dibusb_dib3000mb_table[24], NULL },
296 }, 304 },
297 } 305 }
298}; 306};