summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/frontends/bcm3510.c
diff options
context:
space:
mode:
authorPatrick Boettcher <devnull@localhost>2005-05-16 11:21:21 +0000
committerPatrick Boettcher <devnull@localhost>2005-05-16 11:21:21 +0000
commit66b37ff828afed808bddb816a2edfdbe3fc8f794 (patch)
tree365bd49b2395503a4d622c6c1e9ccf64b362443b /linux/drivers/media/dvb/frontends/bcm3510.c
parent296d38d57b95ab75d2ab872fcd0f972fda99b8c5 (diff)
downloadmediapointer-dvb-s2-66b37ff828afed808bddb816a2edfdbe3fc8f794.tar.gz
mediapointer-dvb-s2-66b37ff828afed808bddb816a2edfdbe3fc8f794.tar.bz2
clearing busy state of the HAB if something went wrong
added a small tuning delay Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Diffstat (limited to 'linux/drivers/media/dvb/frontends/bcm3510.c')
-rw-r--r--linux/drivers/media/dvb/frontends/bcm3510.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/linux/drivers/media/dvb/frontends/bcm3510.c b/linux/drivers/media/dvb/frontends/bcm3510.c
index 5589c94e9..41b40d532 100644
--- a/linux/drivers/media/dvb/frontends/bcm3510.c
+++ b/linux/drivers/media/dvb/frontends/bcm3510.c
@@ -157,8 +157,10 @@ static int bcm3510_hab_send_request(struct bcm3510_state *st, u8 *buf, int len)
if ((ret = bcm3510_readB(st,0xa8,&v)) < 0)
return ret;
if (v.HABSTAT_a8.HABR) {
- deb_info("HAB is running already.");
- return -EBUSY;
+ deb_info("HAB is running already - clearing it.\n");
+ v.HABSTAT_a8.HABR = 0;
+ bcm3510_writeB(st,0xa8,v);
+// return -EBUSY;
}
/* Send the start HAB Address (automatically incremented after write of
@@ -538,7 +540,7 @@ static int bcm3510_set_frontend(struct dvb_frontend* fe,
} */
bcm3510_do_hab_cmd(st, CMD_ACQUIRE, MSGID_EXT_TUNER_ACQUIRE, (u8 *) &cmd, sizeof(cmd), NULL, 0);
- /* doing it with different MSGIDs, data book and source differs */
+/* doing it with different MSGIDs, data book and source differs */
bert.BE = 0;
bert.unused = 0;
bcm3510_do_hab_cmd(st, CMD_STATE_CONTROL, MSGID_BERT_CONTROL, (u8 *) &bert, sizeof(bert), NULL, 0);
@@ -553,6 +555,9 @@ static int bcm3510_set_frontend(struct dvb_frontend* fe,
memset(&st->status2,0,sizeof(st->status2));
st->status_check_interval = 500;
+/* Give the AP some time */
+ msleep(200);
+
return 0;
}