• Daniel Scheller's avatar
    [media] dvb-frontends/cxd2841er: do I2C reads in one go · 725e93eb
    Daniel Scheller authored
    Doing the I2C read operation with two calls to i2c_transfer() causes the
    exclusive I2C bus lock of the underlying adapter to be released. While this
    isn't an issue if only one demodulator is attached to the bus, having two
    or even more causes troubles in that concurrent accesses to the different
    demods will cause all kinds of issues due to wrong data being returned on
    read operations (for example, the TS config register will be set wrong).
    This changes the read_regs() function to do the operation in one go (by
    calling i2c_transfer with the whole msg list instead of one by one) to not
    loose the I2C bus lock, fixing all sorts of random runtime failures.
    Signed-off-by: default avatarDaniel Scheller <d.scheller@gmx.net>
    Acked-by: default avatarAbylay Ospan <aospan@netup.ru>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    725e93eb
cxd2841er.c 116 KB