Commit 8af5e381 authored by Antti Palosaari's avatar Antti Palosaari Committed by Mauro Carvalho Chehab

V4L/DVB: af9013: af9013_read_status() refactoring

Function af9013_read_status() refactoring. Read lock bits in different
order to save count of register reads.
Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 737fabf0
...@@ -1184,45 +1184,49 @@ static int af9013_read_status(struct dvb_frontend *fe, fe_status_t *status) ...@@ -1184,45 +1184,49 @@ static int af9013_read_status(struct dvb_frontend *fe, fe_status_t *status)
u8 tmp; u8 tmp;
*status = 0; *status = 0;
/* TPS lock */
ret = af9013_read_reg_bits(state, 0xd330, 3, 1, &tmp);
if (ret)
goto error;
if (tmp)
*status |= FE_HAS_VITERBI | FE_HAS_CARRIER | FE_HAS_SIGNAL;
/* MPEG2 lock */ /* MPEG2 lock */
ret = af9013_read_reg_bits(state, 0xd507, 6, 1, &tmp); ret = af9013_read_reg_bits(state, 0xd507, 6, 1, &tmp);
if (ret) if (ret)
goto error; goto error;
if (tmp) if (tmp)
*status |= FE_HAS_SYNC | FE_HAS_LOCK; *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI |
FE_HAS_SYNC | FE_HAS_LOCK;
if (!(*status & FE_HAS_SIGNAL)) { if (!*status) {
/* AGC lock */ /* TPS lock */
ret = af9013_read_reg_bits(state, 0xd1a0, 6, 1, &tmp); ret = af9013_read_reg_bits(state, 0xd330, 3, 1, &tmp);
if (ret) if (ret)
goto error; goto error;
if (tmp) if (tmp)
*status |= FE_HAS_SIGNAL; *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER |
FE_HAS_VITERBI;
} }
if (!(*status & FE_HAS_CARRIER)) { if (!*status) {
/* CFO lock */ /* CFO lock */
ret = af9013_read_reg_bits(state, 0xd333, 7, 1, &tmp); ret = af9013_read_reg_bits(state, 0xd333, 7, 1, &tmp);
if (ret) if (ret)
goto error; goto error;
if (tmp) if (tmp)
*status |= FE_HAS_CARRIER; *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER;
} }
if (!(*status & FE_HAS_CARRIER)) { if (!*status) {
/* SFOE lock */ /* SFOE lock */
ret = af9013_read_reg_bits(state, 0xd334, 6, 1, &tmp); ret = af9013_read_reg_bits(state, 0xd334, 6, 1, &tmp);
if (ret) if (ret)
goto error; goto error;
if (tmp) if (tmp)
*status |= FE_HAS_CARRIER; *status |= FE_HAS_SIGNAL | FE_HAS_CARRIER;
}
if (!*status) {
/* AGC lock */
ret = af9013_read_reg_bits(state, 0xd1a0, 6, 1, &tmp);
if (ret)
goto error;
if (tmp)
*status |= FE_HAS_SIGNAL;
} }
ret = af9013_update_statistics(fe); ret = af9013_update_statistics(fe);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment