aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends
diff options
context:
space:
mode:
authorIgor M. Liplianin <liplianin@me.by>2011-02-25 16:41:22 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-03-21 19:32:26 -0400
commitfa8bae102fbbabe9ecc4381ace3b74a199684594 (patch)
tree33bb9b680e4f1920a7f15dcfdb5a4457fceb1e71 /drivers/media/dvb/frontends
parent2adc591fb7764bf70f65a5923ff50c1c1b671c20 (diff)
[media] dw2102: Prof 7500: Lock LED implemented
Code changed for dw2102, stv0900 in order to achieve that. Signed-off-by: Igor M. Liplianin <liplianin@me.by> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends')
-rw-r--r--drivers/media/dvb/frontends/stv0900.h2
-rw-r--r--drivers/media/dvb/frontends/stv0900_core.c23
2 files changed, 24 insertions, 1 deletions
diff --git a/drivers/media/dvb/frontends/stv0900.h b/drivers/media/dvb/frontends/stv0900.h
index e3e35d1ce838..91c7ee8b2313 100644
--- a/drivers/media/dvb/frontends/stv0900.h
+++ b/drivers/media/dvb/frontends/stv0900.h
@@ -53,6 +53,8 @@ struct stv0900_config {
53 u8 tun2_type; 53 u8 tun2_type;
54 /* Set device param to start dma */ 54 /* Set device param to start dma */
55 int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured); 55 int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
56 /* Hook for Lock LED */
57 void (*set_lock_led)(struct dvb_frontend *fe, int offon);
56}; 58};
57 59
58#if defined(CONFIG_DVB_STV0900) || (defined(CONFIG_DVB_STV0900_MODULE) \ 60#if defined(CONFIG_DVB_STV0900) || (defined(CONFIG_DVB_STV0900_MODULE) \
diff --git a/drivers/media/dvb/frontends/stv0900_core.c b/drivers/media/dvb/frontends/stv0900_core.c
index 4f5e7d3a0e61..1ca1c835048f 100644
--- a/drivers/media/dvb/frontends/stv0900_core.c
+++ b/drivers/media/dvb/frontends/stv0900_core.c
@@ -1660,8 +1660,13 @@ static int stv0900_read_status(struct dvb_frontend *fe, enum fe_status *status)
1660 | FE_HAS_VITERBI 1660 | FE_HAS_VITERBI
1661 | FE_HAS_SYNC 1661 | FE_HAS_SYNC
1662 | FE_HAS_LOCK; 1662 | FE_HAS_LOCK;
1663 } else 1663 if (state->config->set_lock_led)
1664 state->config->set_lock_led(fe, 1);
1665 } else {
1666 if (state->config->set_lock_led)
1667 state->config->set_lock_led(fe, 0);
1664 dprintk("DEMOD LOCK FAIL\n"); 1668 dprintk("DEMOD LOCK FAIL\n");
1669 }
1665 1670
1666 return 0; 1671 return 0;
1667} 1672}
@@ -1831,6 +1836,9 @@ static void stv0900_release(struct dvb_frontend *fe)
1831 1836
1832 dprintk("%s\n", __func__); 1837 dprintk("%s\n", __func__);
1833 1838
1839 if (state->config->set_lock_led)
1840 state->config->set_lock_led(fe, 0);
1841
1834 if ((--(state->internal->dmds_used)) <= 0) { 1842 if ((--(state->internal->dmds_used)) <= 0) {
1835 1843
1836 dprintk("%s: Actually removing\n", __func__); 1844 dprintk("%s: Actually removing\n", __func__);
@@ -1842,6 +1850,18 @@ static void stv0900_release(struct dvb_frontend *fe)
1842 kfree(state); 1850 kfree(state);
1843} 1851}
1844 1852
1853static int stv0900_sleep(struct dvb_frontend *fe)
1854{
1855 struct stv0900_state *state = fe->demodulator_priv;
1856
1857 dprintk("%s\n", __func__);
1858
1859 if (state->config->set_lock_led)
1860 state->config->set_lock_led(fe, 0);
1861
1862 return 0;
1863}
1864
1845static int stv0900_get_frontend(struct dvb_frontend *fe, 1865static int stv0900_get_frontend(struct dvb_frontend *fe,
1846 struct dvb_frontend_parameters *p) 1866 struct dvb_frontend_parameters *p)
1847{ 1867{
@@ -1876,6 +1896,7 @@ static struct dvb_frontend_ops stv0900_ops = {
1876 .release = stv0900_release, 1896 .release = stv0900_release,
1877 .init = stv0900_init, 1897 .init = stv0900_init,
1878 .get_frontend = stv0900_get_frontend, 1898 .get_frontend = stv0900_get_frontend,
1899 .sleep = stv0900_sleep,
1879 .get_frontend_algo = stv0900_frontend_algo, 1900 .get_frontend_algo = stv0900_frontend_algo,
1880 .i2c_gate_ctrl = stv0900_i2c_gate_ctrl, 1901 .i2c_gate_ctrl = stv0900_i2c_gate_ctrl,
1881 .diseqc_send_master_cmd = stv0900_send_master_cmd, 1902 .diseqc_send_master_cmd = stv0900_send_master_cmd,