Commit:     6175e487e314385e37f06448847e4c46c20edb44
Parent:     b377fd3982ad957c796758a90e2988401a884241
Author:     Trent Piepho <[EMAIL PROTECTED]>
AuthorDate: Sun Aug 19 05:05:54 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Thu Aug 23 13:17:32 2007 -0300

    V4L/DVB (6042): b2c2-flexcop: fix Airstar HD5000 tuning regression
    Git changeset 6bdcc6e6dbab8daffd05e5026486f34ba41a6c72 dropped the
    stand-alone lgh06xf module, whose functionality was absorbed into the
    dvb-pll module. However, there was a minor difference between the code
    in lgh06xf and dvb-pll, which caused a regression in b2c2-flexcop
    devices using the LG-H06xF NIM.
    dvb-pll will probe for the presence of an i2c pll chip by performing a
    single byte read, the lgh06xf driver did not do this. Unfortunately, the
    code in flexcop-i2c.c does not currently support 1 byte or 0 byte reads
    as a probe.  Such probes with the current code will always fail.
    In order to work around this problem, and restore proper functionality
    of the Airstar HD5000 device, this hack was created to make the probe
    appear to succeed.  The single byte read in dvb_pll_attach is the only
    place where such a probe would ever occur, so this change is safe, and
    will not affect any other devices.
    Of course, if one knew how to actually perform the read operation, it
    would be better to go that route.  In the meantime, however, we must
    apply this workaround, in order to prevent the regression that causes
    tuning to fail on the Airstar HD5000 ATSC device.
    Thanks to Jarod Wilson, who had originally reported this regression, and
    to Geoffrey Hausheer, whose original workaround patch led us to find the
    actual cause of the problem.
    Signed-off-by: Trent Piepho <[EMAIL PROTECTED]>
    Cc: Geoffrey Hausheer <[EMAIL PROTECTED]>
    Acked-by: Jarod Wilson <[EMAIL PROTECTED]>
    Signed-off-by: Michael Krufky <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
 drivers/media/dvb/b2c2/flexcop-i2c.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/media/dvb/b2c2/flexcop-i2c.c 
index 02a0ea6..6bf858a 100644
--- a/drivers/media/dvb/b2c2/flexcop-i2c.c
+++ b/drivers/media/dvb/b2c2/flexcop-i2c.c
@@ -135,6 +135,13 @@ static int flexcop_master_xfer(struct i2c_adapter 
*i2c_adap, struct i2c_msg msgs
        struct flexcop_device *fc = i2c_get_adapdata(i2c_adap);
        int i, ret = 0;
+       /* Some drivers use 1 byte or 0 byte reads as probes, which this
+        * driver doesn't support.  These probes will always fail, so this
+        * hack makes them always succeed.  If one knew how, it would of
+        * course be better to actually do the read.  */
+       if (num == 1 && msgs[0].flags == I2C_M_RD && msgs[0].len <= 1)
+               return 1;
        if (mutex_lock_interruptible(&fc->i2c_mutex))
                return -ERESTARTSYS;
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

Reply via email to