summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2012-07-24 21:21:04 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-04 07:56:40 -0300
commiteb29fbeaed617f7a2cf53d276535f8fbdc28db09 (patch)
tree0744c7ebfbb4f806d1550b636ab21896c9d17aae
parentad6b9e517b39acec98862e7f9bddefe1b275445b (diff)
[media] af9015: remote controller fixes
1) AF9015 remote controller query will fail rarely due to register access failures and dvb_usb_v2 will stop rc polling when error returned. Add logic to allow errors until two consecutive errors occurs. 2) Remote controller key map was not loaded in case of key map was set as a device property. Fix it. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-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 bbe1d338219..10363f6b523 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 b41ee73b26d..c6b304d962a 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];