Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=58d834ea89664b41e6e21ed2d8dc5680d0dd76b6
Commit:     58d834ea89664b41e6e21ed2d8dc5680d0dd76b6
Parent:     a644e4a3e95f8ca6eca019c92d8dfde101150687
Author:     Chris Pascoe <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 19 03:32:06 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 19:02:21 2008 -0200

    V4L/DVB (6628): zl10353: Improve support for boards without a tuner on 
secondary i2c
    
    Issue FSM_GO instead of TUNER_GO if there is no tuner attached to the
    secondary i2c bus.
    
    Signed-off-by: Chris Pascoe <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/dvb/frontends/zl10353.c      |   34 ++++++++++++---------------
 drivers/media/dvb/frontends/zl10353_priv.h |    2 +
 2 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/drivers/media/dvb/frontends/zl10353.c 
b/drivers/media/dvb/frontends/zl10353.c
index 0106df4..9bfdc01 100644
--- a/drivers/media/dvb/frontends/zl10353.c
+++ b/drivers/media/dvb/frontends/zl10353.c
@@ -183,35 +183,31 @@ static int zl10353_set_parameters(struct dvb_frontend *fe,
        if (fe->ops.i2c_gate_ctrl)
                fe->ops.i2c_gate_ctrl(fe, 0);
 
-       // if there is no attached secondary tuner, we call set_params to 
program
-       // a potential tuner attached somewhere else
+       /*
+        * If there is no tuner attached to the secondary I2C bus, we call
+        * set_params to program a potential tuner attached somewhere else.
+        * Otherwise, we update the PLL registers via calc_regs.
+        */
        if (state->config.no_tuner) {
                if (fe->ops.tuner_ops.set_params) {
                        fe->ops.tuner_ops.set_params(fe, param);
                        if (fe->ops.i2c_gate_ctrl)
                                fe->ops.i2c_gate_ctrl(fe, 0);
                }
-       }
-
-       // if pllbuf is defined, retrieve the settings
-       if (fe->ops.tuner_ops.calc_regs) {
-               fe->ops.tuner_ops.calc_regs(fe, param, pllbuf+1, 5);
+       } else if (fe->ops.tuner_ops.calc_regs) {
+               fe->ops.tuner_ops.calc_regs(fe, param, pllbuf + 1, 5);
                pllbuf[1] <<= 1;
-       } else {
-               // fake pllbuf settings
-               pllbuf[1] = 0x61 << 1;
-               pllbuf[2] = 0;
-               pllbuf[3] = 0;
-               pllbuf[3] = 0;
-               pllbuf[4] = 0;
+               zl10353_write(fe, pllbuf, sizeof(pllbuf));
        }
 
-       // there is no call to _just_ start decoding, so we send the pllbuf 
anyway
-       // even if there isn't a PLL attached to the secondary bus
-       zl10353_write(fe, pllbuf, sizeof(pllbuf));
-
        zl10353_single_write(fe, 0x5F, 0x13);
-       zl10353_single_write(fe, 0x70, 0x01);
+
+       /* If no attached tuner or invalid PLL registers, just start the FSM. */
+       if (state->config.no_tuner || fe->ops.tuner_ops.calc_regs == NULL)
+               zl10353_single_write(fe, FSM_GO, 0x01);
+       else
+               zl10353_single_write(fe, TUNER_GO, 0x01);
+
        udelay(250);
        zl10353_single_write(fe, 0xE4, 0x00);
        zl10353_single_write(fe, 0xE5, 0x2A);
diff --git a/drivers/media/dvb/frontends/zl10353_priv.h 
b/drivers/media/dvb/frontends/zl10353_priv.h
index 4962434..42855df 100644
--- a/drivers/media/dvb/frontends/zl10353_priv.h
+++ b/drivers/media/dvb/frontends/zl10353_priv.h
@@ -48,6 +48,8 @@ enum zl10353_reg_addr {
        RS_UBC_0           = 0x15,
        TRL_NOMINAL_RATE_1 = 0x65,
        TRL_NOMINAL_RATE_0 = 0x66,
+       TUNER_GO           = 0x70,
+       FSM_GO             = 0x71,
        CHIP_ID            = 0x7F,
 };
 
-
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