]> Pileus Git - ~andy/linux/blobdiff - drivers/media/dvb/dvb-usb/friio-fe.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
[~andy/linux] / drivers / media / dvb / dvb-usb / friio-fe.c
index c4dfe25cf60dc7deaf6030a9de2914dd8eaaaa04..9cbbe42ca44be982ef46d8e6c1d6fe660edd77aa 100644 (file)
@@ -232,12 +232,6 @@ static int jdvbt90502_read_status(struct dvb_frontend *fe, fe_status_t *state)
        return 0;
 }
 
-static int jdvbt90502_read_ber(struct dvb_frontend *fe, u32 *ber)
-{
-       *ber = 0;
-       return 0;
-}
-
 static int jdvbt90502_read_signal_strength(struct dvb_frontend *fe,
                                           u16 *strength)
 {
@@ -264,26 +258,26 @@ static int jdvbt90502_read_signal_strength(struct dvb_frontend *fe,
        return 0;
 }
 
-static int jdvbt90502_read_snr(struct dvb_frontend *fe, u16 *snr)
-{
-       *snr = 0x0101;
-       return 0;
-}
-
-static int jdvbt90502_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
-{
-       *ucblocks = 0;
-       return 0;
-}
 
-static int jdvbt90502_get_tune_settings(struct dvb_frontend *fe,
-                                       struct dvb_frontend_tune_settings *fs)
+/* filter out un-supported properties to notify users */
+static int jdvbt90502_set_property(struct dvb_frontend *fe,
+                                  struct dtv_property *tvp)
 {
-       fs->min_delay_ms = 500;
-       fs->step_size = 0;
-       fs->max_drift = 0;
-
-       return 0;
+       int r = 0;
+
+       switch (tvp->cmd) {
+       case DTV_DELIVERY_SYSTEM:
+               if (tvp->u.data != SYS_ISDBT)
+                       r = -EINVAL;
+               break;
+       case DTV_CLEAR:
+       case DTV_TUNE:
+       case DTV_FREQUENCY:
+               break;
+       default:
+               r = -EINVAL;
+       }
+       return r;
 }
 
 static int jdvbt90502_get_frontend(struct dvb_frontend *fe,
@@ -314,6 +308,9 @@ static int jdvbt90502_set_frontend(struct dvb_frontend *fe,
 
        deb_fe("%s: Freq:%d\n", __func__, p->frequency);
 
+       /* for recovery from DTV_CLEAN */
+       fe->dtv_property_cache.delivery_system = SYS_ISDBT;
+
        ret = jdvbt90502_pll_set_freq(state, p->frequency);
        if (ret) {
                deb_fe("%s:ret == %d\n", __func__, ret);
@@ -323,12 +320,6 @@ static int jdvbt90502_set_frontend(struct dvb_frontend *fe,
        return 0;
 }
 
-static int jdvbt90502_sleep(struct dvb_frontend *fe)
-{
-       deb_fe("%s called.\n", __func__);
-       return 0;
-}
-
 
 /**
  * (reg, val) commad list to initialize this module.
@@ -394,6 +385,7 @@ static int jdvbt90502_init(struct dvb_frontend *fe)
                if (ret != 1)
                        goto error;
        }
+       fe->dtv_property_cache.delivery_system = SYS_ISDBT;
        msleep(100);
 
        return 0;
@@ -468,16 +460,13 @@ static struct dvb_frontend_ops jdvbt90502_ops = {
        .release = jdvbt90502_release,
 
        .init = jdvbt90502_init,
-       .sleep = jdvbt90502_sleep,
        .write = _jdvbt90502_write,
 
+       .set_property = jdvbt90502_set_property,
+
        .set_frontend = jdvbt90502_set_frontend,
        .get_frontend = jdvbt90502_get_frontend,
-       .get_tune_settings = jdvbt90502_get_tune_settings,
 
        .read_status = jdvbt90502_read_status,
-       .read_ber = jdvbt90502_read_ber,
        .read_signal_strength = jdvbt90502_read_signal_strength,
-       .read_snr = jdvbt90502_read_snr,
-       .read_ucblocks = jdvbt90502_read_ucblocks,
 };