aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/common/siano/smsdvb.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/media/common/siano/smsdvb.c b/drivers/media/common/siano/smsdvb.c
index 4900aa9e8b7a..864f53e7ca63 100644
--- a/drivers/media/common/siano/smsdvb.c
+++ b/drivers/media/common/siano/smsdvb.c
@@ -655,7 +655,7 @@ static int smsdvb_isdbt_set_frontend(struct dvb_frontend *fe)
655 int board_id = smscore_get_board_id(client->coredev); 655 int board_id = smscore_get_board_id(client->coredev);
656 struct sms_board *board = sms_get_board(board_id); 656 struct sms_board *board = sms_get_board(board_id);
657 enum sms_device_type_st type = board->type; 657 enum sms_device_type_st type = board->type;
658 658 int ret;
659 struct { 659 struct {
660 struct SmsMsgHdr_ST Msg; 660 struct SmsMsgHdr_ST Msg;
661 u32 Data[4]; 661 u32 Data[4];
@@ -695,6 +695,23 @@ static int smsdvb_isdbt_set_frontend(struct dvb_frontend *fe)
695 c->frequency, c->isdbt_sb_segment_count, 695 c->frequency, c->isdbt_sb_segment_count,
696 c->isdbt_sb_segment_idx); 696 c->isdbt_sb_segment_idx);
697 697
698 /* Disable LNA, if any. An error is returned if no LNA is present */
699 ret = sms_board_lna_control(client->coredev, 0);
700 if (ret == 0) {
701 fe_status_t status;
702
703 /* tune with LNA off at first */
704 ret = smsdvb_sendrequest_and_wait(client, &Msg, sizeof(Msg),
705 &client->tune_done);
706
707 smsdvb_read_status(fe, &status);
708
709 if (status & FE_HAS_LOCK)
710 return ret;
711
712 /* previous tune didn't lock - enable LNA and tune again */
713 sms_board_lna_control(client->coredev, 1);
714 }
698 return smsdvb_sendrequest_and_wait(client, &Msg, sizeof(Msg), 715 return smsdvb_sendrequest_and_wait(client, &Msg, sizeof(Msg),
699 &client->tune_done); 716 &client->tune_done);
700} 717}