diff options
author | Patrick Boettcher <pb@linuxtv.org> | 2005-07-07 20:58:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-07 21:23:59 -0400 |
commit | 8945c8c3d207c7a69024c02d164f5ae790c5b7ba (patch) | |
tree | bde659c1e944fbb27e9d156265331d6396d26fc6 /drivers/media/dvb | |
parent | 68293ddbabb26a58ddb0a84aa5058a7acd7127e7 (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/dvb')
-rw-r--r-- | drivers/media/dvb/dvb-usb/dibusb-mb.c | 28 |
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 | 34 | static 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. */ |
37 | static int dibusb_dib3000mb_tuner_attach (struct dvb_usb_device *d) | 44 | static 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 | }; |