tree 9972a46642aa5cf67d2e11896f07a93d365f5bc0
parent 47dc3d688d04f06d8ef90a06c48930906fbc4a8c
author Svante Olofsson <[EMAIL PROTECTED]> Sat, 10 Sep 2005 03:02:48 -0700
committer Linus Torvalds <[EMAIL PROTECTED]> Sat, 10 Sep 2005 03:57:41 -0700

[PATCH] dvb: usb: digitv: support for nxt6000 demod

Add support for the NXT6000-based digitv-box.  Add .get_tune_settings callback
for the NXT6000 to have a min_tune_delay of 500ms.

Signed-off-by: Svante Olofsson <[EMAIL PROTECTED]>
Signed-off-by: Patrick Boettcher <[EMAIL PROTECTED]>
Signed-off-by: Johannes Stezenbach <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>

 drivers/media/dvb/dvb-usb/digitv.c    |   40 ++++++++++++++++++++--------------
 drivers/media/dvb/frontends/nxt6000.c |    9 +++++++
 2 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/drivers/media/dvb/dvb-usb/digitv.c 
b/drivers/media/dvb/dvb-usb/digitv.c
--- a/drivers/media/dvb/dvb-usb/digitv.c
+++ b/drivers/media/dvb/dvb-usb/digitv.c
@@ -111,31 +111,28 @@ static int digitv_mt352_demod_init(struc
 }
 
 static struct mt352_config digitv_mt352_config = {
-       .demod_address = 0x0, /* ignored by the digitv anyway */
        .demod_init = digitv_mt352_demod_init,
        .pll_set = dvb_usb_pll_set,
 };
 
-static struct nxt6000_config digitv_nxt6000_config = {
-       .demod_address = 0x0, /* ignored by the digitv anyway */
-       .clock_inversion = 0x0,
+static int digitv_nxt6000_pll_set(struct dvb_frontend *fe, struct 
dvb_frontend_parameters *fep)
+{
+       struct dvb_usb_device *d = fe->dvb->priv;
+       u8 b[5];
+       dvb_usb_pll_set(fe,fep,b);
+       return digitv_ctrl_msg(d,USB_WRITE_TUNER,0,&b[1],4,NULL,0);
+}
 
-       .pll_init = NULL,
-       .pll_set = NULL,
+static struct nxt6000_config digitv_nxt6000_config = {
+       .clock_inversion = 1,
+       .pll_set = digitv_nxt6000_pll_set,
 };
 
 static int digitv_frontend_attach(struct dvb_usb_device *d)
 {
-       if ((d->fe = mt352_attach(&digitv_mt352_config, &d->i2c_adap)) != NULL)
+       if ((d->fe = mt352_attach(&digitv_mt352_config, &d->i2c_adap)) != NULL 
||
+               (d->fe = nxt6000_attach(&digitv_nxt6000_config, &d->i2c_adap)) 
!= NULL)
                return 0;
-       if ((d->fe = nxt6000_attach(&digitv_nxt6000_config, &d->i2c_adap)) != 
NULL) {
-
-               warn("nxt6000 support is not done yet, in fact you are one of 
the first "
-                               "person who wants to use this device in Linux. 
Please report to "
-                               "linux-dvb@linuxtv.org");
-
-               return 0;
-       }
        return -EIO;
 }
 
@@ -173,7 +170,18 @@ static struct dvb_usb_properties digitv_
 static int digitv_probe(struct usb_interface *intf,
                const struct usb_device_id *id)
 {
-       return dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE,NULL);
+       struct dvb_usb_device *d;
+       int ret;
+       if ((ret = dvb_usb_device_init(intf,&digitv_properties,THIS_MODULE,&d)) 
== 0) {
+               u8 b[4] = { 0 };
+
+               b[0] = 1;
+               digitv_ctrl_msg(d,USB_WRITE_REMOTE_TYPE,0,b,4,NULL,0);
+
+               b[0] = 0;
+               digitv_ctrl_msg(d,USB_WRITE_REMOTE,0,b,4,NULL,0);
+       }
+       return ret;
 }
 
 static struct usb_device_id digitv_table [] = {
diff --git a/drivers/media/dvb/frontends/nxt6000.c 
b/drivers/media/dvb/frontends/nxt6000.c
--- a/drivers/media/dvb/frontends/nxt6000.c
+++ b/drivers/media/dvb/frontends/nxt6000.c
@@ -482,6 +482,7 @@ static int nxt6000_set_frontend(struct d
        if ((result = nxt6000_set_inversion(state, param->inversion)) < 0)
                return result;
 
+       msleep(500);
        return 0;
 }
 
@@ -525,6 +526,12 @@ static int nxt6000_read_signal_strength(
        return 0;
 }
 
+static int nxt6000_fe_get_tune_settings(struct dvb_frontend* fe, struct 
dvb_frontend_tune_settings *tune)
+{
+       tune->min_delay_ms = 500;
+       return 0;
+}
+
 static struct dvb_frontend_ops nxt6000_ops;
 
 struct dvb_frontend* nxt6000_attach(const struct nxt6000_config* config,
@@ -578,6 +585,8 @@ static struct dvb_frontend_ops nxt6000_o
 
        .init = nxt6000_init,
 
+       .get_tune_settings = nxt6000_fe_get_tune_settings,
+
        .set_frontend = nxt6000_set_frontend,
 
        .read_status = nxt6000_read_status,
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to