mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 22:54:05 +08:00
media: cxd2841er: ensure that status will always be available
The loop with read status use a dynamic timeout value, calculated from symbol rate. It should run the loop at least one time for the status to be handled after the loop. While this should, in practice, happen every time, it doesn't hurt to change the logic to make it explicit. This solves a smatch warning: drivers/media/dvb-frontends/cxd2841er.c:3350 cxd2841er_set_frontend_s() error: uninitialized symbol 'status'. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
04f849c00c
commit
07ade2d0f6
@ -3339,13 +3339,17 @@ static int cxd2841er_set_frontend_s(struct dvb_frontend *fe)
|
||||
|
||||
cxd2841er_tune_done(priv);
|
||||
timeout = ((3000000 + (symbol_rate - 1)) / symbol_rate) + 150;
|
||||
for (i = 0; i < timeout / CXD2841ER_DVBS_POLLING_INVL; i++) {
|
||||
|
||||
i = 0;
|
||||
do {
|
||||
usleep_range(CXD2841ER_DVBS_POLLING_INVL*1000,
|
||||
(CXD2841ER_DVBS_POLLING_INVL + 2) * 1000);
|
||||
cxd2841er_read_status_s(fe, &status);
|
||||
if (status & FE_HAS_LOCK)
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
} while (i < timeout / CXD2841ER_DVBS_POLLING_INVL);
|
||||
|
||||
if (status & FE_HAS_LOCK) {
|
||||
if (cxd2841er_get_carrier_offset_s_s2(
|
||||
priv, &carr_offset)) {
|
||||
|
Loading…
Reference in New Issue
Block a user