diff options
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r-- | drivers/media/dvb/dvb-usb-v2/af9015.c | 15 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb-v2/af9015.h | 1 |
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]; |