Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3dfefc50ff45744ffb97ce0bf9c213a3fb6d5d3d
Commit:     3dfefc50ff45744ffb97ce0bf9c213a3fb6d5d3d
Parent:     897b842296f1285a6b58e9170f7017022e2e2603
Author:     Chris Pascoe <[EMAIL PROTECTED]>
AuthorDate: Sun Dec 2 10:07:06 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 19:04:01 2008 -0200

    V4L/DVB (6855): xc2028: select DTV78 firmware if tuning 7MHz VHF / 8MHz UHF
    
    It seems that the DTV78 firmware is intended for use in locations where
    VHF channels have 7MHz bandwidth and UHF channels have 8MHz bandwidth.
    If we switch to DTV78 firmware when we detect this condition, we can
    avoid firmware reloads when switching between VHF and UHF transponders.
    
    Place the state for this in the control structure so that card drivers
    can hint to us to use DTV78 firmware from the first tuning attempt.
    
    Signed-off-by: Chris Pascoe <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/video/tuner-xc2028.c |   23 +++++++++++++++--------
 drivers/media/video/tuner-xc2028.h |    2 ++
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/drivers/media/video/tuner-xc2028.c 
b/drivers/media/video/tuner-xc2028.c
index 63a6fca..0565edd 100644
--- a/drivers/media/video/tuner-xc2028.c
+++ b/drivers/media/video/tuner-xc2028.c
@@ -998,20 +998,27 @@ static int xc2028_set_params(struct dvb_frontend *fe,
                return -EINVAL;
        }
 
-       /* FIXME:
-         There are two Scodes that will never be selected:
-               DTV78 ZARLINK456, DTV78 DIBCOM52
-         When it should opt for DTV78 instead of DTV7 or DTV8?
-       */
        switch (bw) {
        case BANDWIDTH_8_MHZ:
-               type |= DTV8 | F8MHZ;
+               if (p->frequency < 470000000)
+                       priv->ctrl.vhfbw7 = 0;
+               else
+                       priv->ctrl.uhfbw8 = 1;
+               type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV8;
+               type |= F8MHZ;
                break;
        case BANDWIDTH_7_MHZ:
-               type |= DTV7 | F8MHZ;
+               if (p->frequency < 470000000)
+                       priv->ctrl.vhfbw7 = 1;
+               else
+                       priv->ctrl.uhfbw8 = 0;
+               type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV7;
+               type |= F8MHZ;
                break;
        case BANDWIDTH_6_MHZ:
-               type |= DTV6 ;
+               type |= DTV6;
+               priv->ctrl.vhfbw7 = 0;
+               priv->ctrl.uhfbw8 = 0;
                break;
        default:
                tuner_err("error: bandwidth not supported.\n");
diff --git a/drivers/media/video/tuner-xc2028.h 
b/drivers/media/video/tuner-xc2028.h
index 1fe8b19..7462629 100644
--- a/drivers/media/video/tuner-xc2028.h
+++ b/drivers/media/video/tuner-xc2028.h
@@ -30,6 +30,8 @@ struct xc2028_ctrl {
        unsigned int            mts   :1;
        unsigned int            d2633 :1;
        unsigned int            input1:1;
+       unsigned int            vhfbw7:1;
+       unsigned int            uhfbw8:1;
        unsigned int            demod;
 };
 
-
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