diff options
| author | Manu Abraham <abraham.manu@gmail.com> | 2009-12-15 04:15:27 -0500 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-01-17 08:55:43 -0500 |
| commit | 5dd83a35bea908ebb8243d67d8c251eed2bb5cc8 (patch) | |
| tree | 59fb048f9735e4ca0ce44d27847eb181e3c718b3 | |
| parent | 281859179f731b28aae78d13b2e8720219492000 (diff) | |
V4L/DVB (13801): [MB86A16] Use the search callback
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | drivers/media/dvb/frontends/mb86a16.c | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/drivers/media/dvb/frontends/mb86a16.c b/drivers/media/dvb/frontends/mb86a16.c index eddb35baaf00..33387b78d85a 100644 --- a/drivers/media/dvb/frontends/mb86a16.c +++ b/drivers/media/dvb/frontends/mb86a16.c | |||
| @@ -1487,16 +1487,19 @@ static int mb86a16_set_fe(struct mb86a16_state *state) | |||
| 1487 | } else { | 1487 | } else { |
| 1488 | dprintk(verbose, MB86A16_INFO, 1, "NO -- SYNC"); | 1488 | dprintk(verbose, MB86A16_INFO, 1, "NO -- SYNC"); |
| 1489 | SEQ_set(state, 1); | 1489 | SEQ_set(state, 1); |
| 1490 | ret = -1; | ||
| 1490 | } | 1491 | } |
| 1491 | } | 1492 | } |
| 1492 | } else { | 1493 | } else { |
| 1493 | dprintk (verbose, MB86A16_INFO, 1, "NO -- SIGNAL"); | 1494 | dprintk (verbose, MB86A16_INFO, 1, "NO -- SIGNAL"); |
| 1495 | ret = -1; | ||
| 1494 | } | 1496 | } |
| 1495 | 1497 | ||
| 1496 | sync = sync_chk(state, &junk); | 1498 | sync = sync_chk(state, &junk); |
| 1497 | if (sync) { | 1499 | if (sync) { |
| 1498 | dprintk(verbose, MB86A16_INFO, 1, "******* SYNC *******"); | 1500 | dprintk(verbose, MB86A16_INFO, 1, "******* SYNC *******"); |
| 1499 | freqerr_chk(state, state->frequency, state->srate, 1); | 1501 | freqerr_chk(state, state->frequency, state->srate, 1); |
| 1502 | ret = 0; | ||
| 1500 | break; | 1503 | break; |
| 1501 | } | 1504 | } |
| 1502 | } | 1505 | } |
| @@ -1610,33 +1613,21 @@ err: | |||
| 1610 | return -EREMOTEIO; | 1613 | return -EREMOTEIO; |
| 1611 | } | 1614 | } |
| 1612 | 1615 | ||
| 1613 | #define MB86A16_FE_ALGO 1 | 1616 | static enum dvbfe_search mb86a16_search(struct dvb_frontend *fe, |
| 1614 | 1617 | struct dvb_frontend_parameters *p) | |
| 1615 | static int mb86a16_frontend_algo(struct dvb_frontend *fe) | ||
| 1616 | { | ||
| 1617 | return MB86A16_FE_ALGO; | ||
| 1618 | } | ||
| 1619 | |||
| 1620 | static int mb86a16_set_frontend(struct dvb_frontend *fe, | ||
| 1621 | struct dvb_frontend_parameters *p, | ||
| 1622 | unsigned int mode_flags, | ||
| 1623 | int *delay, | ||
| 1624 | fe_status_t *status) | ||
| 1625 | { | 1618 | { |
| 1626 | int ret = 0; | ||
| 1627 | struct mb86a16_state *state = fe->demodulator_priv; | 1619 | struct mb86a16_state *state = fe->demodulator_priv; |
| 1628 | 1620 | ||
| 1629 | if (p != NULL) { | 1621 | state->frequency = p->frequency / 1000; |
| 1630 | state->frequency = p->frequency / 1000; | 1622 | state->srate = p->u.qpsk.symbol_rate / 1000; |
| 1631 | state->srate = p->u.qpsk.symbol_rate / 1000; | ||
| 1632 | ret = mb86a16_set_fe(state); | ||
| 1633 | } | ||
| 1634 | if (!(mode_flags & FE_TUNE_MODE_ONESHOT)) | ||
| 1635 | mb86a16_read_status(fe, status); | ||
| 1636 | 1623 | ||
| 1637 | *delay = HZ/3000; | 1624 | if (!mb86a16_set_fe(state)) { |
| 1625 | dprintk(verbose, MB86A16_ERROR, 1, "Succesfully acquired LOCK"); | ||
| 1626 | return DVBFE_ALGO_SEARCH_SUCCESS; | ||
| 1627 | } | ||
| 1638 | 1628 | ||
| 1639 | return ret; | 1629 | dprintk(verbose, MB86A16_ERROR, 1, "Lock acquisition failed!"); |
| 1630 | return DVBFE_ALGO_SEARCH_FAILED; | ||
| 1640 | } | 1631 | } |
| 1641 | 1632 | ||
| 1642 | static void mb86a16_release(struct dvb_frontend *fe) | 1633 | static void mb86a16_release(struct dvb_frontend *fe) |
| @@ -1809,6 +1800,11 @@ static int mb86a16_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) | |||
| 1809 | return 0; | 1800 | return 0; |
| 1810 | } | 1801 | } |
| 1811 | 1802 | ||
| 1803 | static enum dvbfe_algo mb86a16_frontend_algo(struct dvb_frontend *fe) | ||
| 1804 | { | ||
| 1805 | return DVBFE_ALGO_CUSTOM; | ||
| 1806 | } | ||
| 1807 | |||
| 1812 | static struct dvb_frontend_ops mb86a16_ops = { | 1808 | static struct dvb_frontend_ops mb86a16_ops = { |
| 1813 | .info = { | 1809 | .info = { |
| 1814 | .name = "Fujitsu MB86A16 DVB-S", | 1810 | .name = "Fujitsu MB86A16 DVB-S", |
| @@ -1826,9 +1822,10 @@ static struct dvb_frontend_ops mb86a16_ops = { | |||
| 1826 | FE_CAN_FEC_AUTO | 1822 | FE_CAN_FEC_AUTO |
| 1827 | }, | 1823 | }, |
| 1828 | .release = mb86a16_release, | 1824 | .release = mb86a16_release, |
| 1829 | .tune = mb86a16_set_frontend, | 1825 | |
| 1830 | .read_status = mb86a16_read_status, | ||
| 1831 | .get_frontend_algo = mb86a16_frontend_algo, | 1826 | .get_frontend_algo = mb86a16_frontend_algo, |
| 1827 | .search = mb86a16_search, | ||
| 1828 | .read_status = mb86a16_read_status, | ||
| 1832 | .init = mb86a16_init, | 1829 | .init = mb86a16_init, |
| 1833 | .sleep = mb86a16_sleep, | 1830 | .sleep = mb86a16_sleep, |
| 1834 | .read_status = mb86a16_read_status, | 1831 | .read_status = mb86a16_read_status, |
