mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 02:21:47 +00:00
[media] dvb_usb_v2: implement .get_firmware_name()
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>
This commit is contained in:
parent
496e827899
commit
8b9dff5828
@ -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;
|
||||
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user