diff options
author | Patrick Boettcher <pb@linuxtv.org> | 2006-01-09 15:21:38 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@brturbo.com.br> | 2006-01-09 15:21:38 -0500 |
commit | f53737882e26ff08022fec6ad79f061c49dadda2 (patch) | |
tree | d07379f003fbb144790b24e845045edfb4f517be /drivers/media/dvb/dvb-usb/cxusb.c | |
parent | 5af0c8f6a09534ebc6c56b4e5d79d0d521364750 (diff) |
V4L/DVB (3327): Remove DViCO specific firmware hacks from the generic code.
- Move the code that patches bluebird firmware before upload from the
generic code into the cxusb driver itself.
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Michael Krufky <mkrufky@m1k.net>
Signed-off-by: Chris Pascoe <c.pascoe@itee.uq.edu.au>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
Diffstat (limited to 'drivers/media/dvb/dvb-usb/cxusb.c')
-rw-r--r-- | drivers/media/dvb/dvb-usb/cxusb.c | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c index 3100ce91ccdb..9d69f8225375 100644 --- a/drivers/media/dvb/dvb-usb/cxusb.c +++ b/drivers/media/dvb/dvb-usb/cxusb.c | |||
@@ -11,8 +11,7 @@ | |||
11 | * design, so it can be reused for the "analogue-only" device (if it will | 11 | * design, so it can be reused for the "analogue-only" device (if it will |
12 | * appear at all). | 12 | * appear at all). |
13 | * | 13 | * |
14 | * TODO: check if the cx25840-driver (from ivtv) can be used for the analogue | 14 | * Use the cx25840-driver for the analogue part |
15 | * part | ||
16 | * | 15 | * |
17 | * Copyright (C) 2005 Patrick Boettcher (patrick.boettcher@desy.de) | 16 | * Copyright (C) 2005 Patrick Boettcher (patrick.boettcher@desy.de) |
18 | * Copyright (C) 2005 Michael Krufky (mkrufky@m1k.net) | 17 | * Copyright (C) 2005 Michael Krufky (mkrufky@m1k.net) |
@@ -343,6 +342,30 @@ static int cxusb_dee1601_frontend_attach(struct dvb_usb_device *d) | |||
343 | return -EIO; | 342 | return -EIO; |
344 | } | 343 | } |
345 | 344 | ||
345 | /* | ||
346 | * DViCO bluebird firmware needs the "warm" product ID to be patched into the | ||
347 | * firmware file before download. | ||
348 | */ | ||
349 | |||
350 | #define BLUEBIRD_01_ID_OFFSET 6638 | ||
351 | static int bluebird_patch_dvico_firmware_download(struct usb_device *udev, const struct firmware *fw) | ||
352 | { | ||
353 | if (fw->size < BLUEBIRD_01_ID_OFFSET + 4) | ||
354 | return -EINVAL; | ||
355 | |||
356 | if (fw->data[BLUEBIRD_01_ID_OFFSET] == (USB_VID_DVICO & 0xff) && | ||
357 | fw->data[BLUEBIRD_01_ID_OFFSET + 1] == USB_VID_DVICO >> 8) { | ||
358 | |||
359 | /* FIXME: are we allowed to change the fw-data ? */ | ||
360 | fw->data[BLUEBIRD_01_ID_OFFSET + 2] = udev->descriptor.idProduct + 1; | ||
361 | fw->data[BLUEBIRD_01_ID_OFFSET + 3] = udev->descriptor.idProduct >> 8; | ||
362 | |||
363 | return usb_cypress_load_firmware(udev,fw,CYPRESS_FX2); | ||
364 | } | ||
365 | |||
366 | return -EINVAL; | ||
367 | } | ||
368 | |||
346 | /* DVB USB Driver stuff */ | 369 | /* DVB USB Driver stuff */ |
347 | static struct dvb_usb_properties cxusb_medion_properties; | 370 | static struct dvb_usb_properties cxusb_medion_properties; |
348 | static struct dvb_usb_properties cxusb_bluebird_lgh064f_properties; | 371 | static struct dvb_usb_properties cxusb_bluebird_lgh064f_properties; |
@@ -409,8 +432,9 @@ static struct dvb_usb_properties cxusb_medion_properties = { | |||
409 | static struct dvb_usb_properties cxusb_bluebird_lgh064f_properties = { | 432 | static struct dvb_usb_properties cxusb_bluebird_lgh064f_properties = { |
410 | .caps = DVB_USB_IS_AN_I2C_ADAPTER, | 433 | .caps = DVB_USB_IS_AN_I2C_ADAPTER, |
411 | 434 | ||
412 | .usb_ctrl = CYPRESS_FX2, | 435 | .usb_ctrl = DEVICE_SPECIFIC, |
413 | .firmware = "dvb-usb-bluebird-01.fw", | 436 | .firmware = "dvb-usb-bluebird-01.fw", |
437 | .download_firmware = bluebird_patch_dvico_firmware_download, | ||
414 | /* use usb alt setting 0 for EP4 transfer (dvb-t), | 438 | /* use usb alt setting 0 for EP4 transfer (dvb-t), |
415 | use usb alt setting 7 for EP2 transfer (atsc) */ | 439 | use usb alt setting 7 for EP2 transfer (atsc) */ |
416 | 440 | ||
@@ -448,8 +472,9 @@ static struct dvb_usb_properties cxusb_bluebird_lgh064f_properties = { | |||
448 | static struct dvb_usb_properties cxusb_bluebird_dee1601_properties = { | 472 | static struct dvb_usb_properties cxusb_bluebird_dee1601_properties = { |
449 | .caps = DVB_USB_IS_AN_I2C_ADAPTER, | 473 | .caps = DVB_USB_IS_AN_I2C_ADAPTER, |
450 | 474 | ||
451 | .usb_ctrl = CYPRESS_FX2, | 475 | .usb_ctrl = DEVICE_SPECIFIC, |
452 | .firmware = "dvb-usb-bluebird-01.fw", | 476 | .firmware = "dvb-usb-bluebird-01.fw", |
477 | .download_firmware = bluebird_patch_dvico_firmware_download, | ||
453 | /* use usb alt setting 0 for EP4 transfer (dvb-t), | 478 | /* use usb alt setting 0 for EP4 transfer (dvb-t), |
454 | use usb alt setting 7 for EP2 transfer (atsc) */ | 479 | use usb alt setting 7 for EP2 transfer (atsc) */ |
455 | 480 | ||