summaryrefslogtreecommitdiff
path: root/drivers/media/dvb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/dvb-usb-v2/af9015.c15
-rw-r--r--drivers/media/dvb/dvb-usb-v2/af9015.h1
2 files changed, 13 insertions, 3 deletions
diff --git a/drivers/media/dvb/dvb-usb-v2/af9015.c b/drivers/media/dvb/dvb-usb-v2/af9015.c
index bbe1d3382195..10363f6b5234 100644
--- a/drivers/media/dvb/dvb-usb-v2/af9015.c
+++ b/drivers/media/dvb/dvb-usb-v2/af9015.c
@@ -1232,11 +1232,19 @@ static int af9015_rc_query(struct dvb_usb_device *d)
}
state->rc_repeat = buf[6];
+ state->rc_failed = false;
error:
- if (ret)
+ if (ret) {
err("%s: failed:%d", __func__, ret);
+ /* allow random errors as dvb-usb will stop polling on error */
+ if (!state->rc_failed)
+ ret = 0;
+
+ state->rc_failed = true;
+ }
+
return ret;
}
@@ -1249,8 +1257,9 @@ static int af9015_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc)
return 0;
/* try to load remote based module param */
- rc->map_name = af9015_rc_setup_match(dvb_usb_af9015_remote,
- af9015_rc_setup_modparam);
+ if (!rc->map_name)
+ rc->map_name = af9015_rc_setup_match(dvb_usb_af9015_remote,
+ af9015_rc_setup_modparam);
/* try to load remote based eeprom hash */
if (!rc->map_name)
diff --git a/drivers/media/dvb/dvb-usb-v2/af9015.h b/drivers/media/dvb/dvb-usb-v2/af9015.h
index b41ee73b26dc..c6b304d962ad 100644
--- a/drivers/media/dvb/dvb-usb-v2/af9015.h
+++ b/drivers/media/dvb/dvb-usb-v2/af9015.h
@@ -139,6 +139,7 @@ struct af9015_state {
u8 rc_repeat;
u32 rc_keycode;
u8 rc_last[4];
+ bool rc_failed;
u8 dual_mode;
u8 seq; /* packet sequence number */
u16 mt2060_if1[2];