Skip to content

Commit

Permalink
[media] dvb_usb_v2: implement .get_firmware_name()
Browse files Browse the repository at this point in the history
Use callback to return firmware name instead of static firmware name.
There is some chips that needs to select firmware name according to
chip revision.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Antti Palosaari authored and Mauro Carvalho Chehab committed Aug 4, 2012
1 parent 496e827 commit 8b9dff5
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
2 changes: 1 addition & 1 deletion drivers/media/dvb/dvb-usb/dvb_usb.h
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ struct dvb_usb_device_properties {

#define RECONNECTS_USB 1
int (*download_firmware) (struct dvb_usb_device *, const struct firmware *);
const char *firmware;
int (*get_firmware_name) (struct dvb_usb_device *, const char **);

int size_of_priv;

Expand Down
11 changes: 8 additions & 3 deletions drivers/media/dvb/dvb-usb/dvb_usb_firmware.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,20 @@ int dvb_usb_download_firmware(struct dvb_usb_device *d)
{
int ret;
const struct firmware *fw = NULL;
const char *name;

if ((ret = request_firmware(&fw, d->props.firmware, &d->udev->dev)) != 0) {
ret = d->props.get_firmware_name(d, &name);
if (ret < 0)
return ret;

if ((ret = request_firmware(&fw, name, &d->udev->dev)) != 0) {
err("did not find the firmware file. (%s) "
"Please see linux/Documentation/dvb/ for more details on firmware-problems. (%d)",
d->props.firmware,ret);
name,ret);
return ret;
}

info("downloading firmware from file '%s'", d->props.firmware);
info("downloading firmware from file '%s'", name);

switch (d->props.usb_ctrl) {
case CYPRESS_AN2135:
Expand Down

0 comments on commit 8b9dff5

Please sign in to comment.