lkml.org 
[lkml]   [2016]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 088/129] [media] tda1004x: only update the frontend properties if locked
    Date
    3.16.7-ckt25 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

    commit e8beb02343e7582980c6705816cd957cf4f74c7a upstream.

    The tda1004x was updating the properties cache before locking.
    If the device is not locked, the data at the registers are just
    random values with no real meaning.

    This caused the driver to fail with libdvbv5, as such library
    calls GET_PROPERTY from time to time, in order to return the
    DVB stats.

    Tested with a saa7134 card 78:
    ASUSTeK P7131 Dual, vendor PCI ID: 1043:4862

    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    drivers/media/dvb-frontends/tda1004x.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    diff --git a/drivers/media/dvb-frontends/tda1004x.c b/drivers/media/dvb-frontends/tda1004x.c
    index a2631be7ffac..08e0f0dd8728 100644
    --- a/drivers/media/dvb-frontends/tda1004x.c
    +++ b/drivers/media/dvb-frontends/tda1004x.c
    @@ -903,9 +903,18 @@ static int tda1004x_get_fe(struct dvb_frontend *fe)
    {
    struct dtv_frontend_properties *fe_params = &fe->dtv_property_cache;
    struct tda1004x_state* state = fe->demodulator_priv;
    + int status;

    dprintk("%s\n", __func__);

    + status = tda1004x_read_byte(state, TDA1004X_STATUS_CD);
    + if (status == -1)
    + return -EIO;
    +
    + /* Only update the properties cache if device is locked */
    + if (!(status & 8))
    + return 0;
    +
    // inversion status
    fe_params->inversion = INVERSION_OFF;
    if (tda1004x_read_byte(state, TDA1004X_CONFC1) & 0x20)
    \
     
     \ /
      Last update: 2016-02-26 12:21    [W:4.338 / U:0.748 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site