lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 071/239] media: si2157: Fix "warm" tuner state detection
    Date
    From: Robert Schlabbach <robert_s@gmx.net>

    [ Upstream commit a6441ea29cb2c9314654e093a1cd8020b9b851c8 ]

    Commit e955f959ac52 ("media: si2157: Better check for running tuner in
    init") completely broke the "warm" tuner detection of the si2157 driver
    due to a simple endian error: The Si2157 CRYSTAL_TRIM property code is
    0x0402 and needs to be transmitted LSB first. However, it was inserted
    MSB first, causing the warm detection to always fail and spam the kernel
    log with tuner initialization messages each time the DVB frontend
    device was closed and reopened:

    [ 312.215682] si2157 16-0060: found a 'Silicon Labs Si2157-A30'
    [ 312.264334] si2157 16-0060: firmware version: 3.0.5
    [ 342.248593] si2157 16-0060: found a 'Silicon Labs Si2157-A30'
    [ 342.295743] si2157 16-0060: firmware version: 3.0.5
    [ 372.328574] si2157 16-0060: found a 'Silicon Labs Si2157-A30'
    [ 372.385035] si2157 16-0060: firmware version: 3.0.5

    Also, the reinitializations were observed disturb _other_ tuners on
    multi-tuner cards such as the Hauppauge WinTV-QuadHD, leading to missed
    or errored packets when one of the other DVB frontend devices on that
    card was opened.

    Fix the order of the property code bytes to make the warm detection work
    again, also reducing the tuner initialization message in the kernel log
    to once per power-on, as well as fixing the interference with other
    tuners.

    Link: https://lore.kernel.org/linux-media/trinity-2a86eb9d-6264-4387-95e1-ba7b79a4050f-1638392923493@3c-app-gmx-bap03

    Fixes: e955f959ac52 ("media: si2157: Better check for running tuner in init")
    Reported-by: Robert Schlabbach <robert_s@gmx.net>
    Signed-off-by: Robert Schlabbach <robert_s@gmx.net>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/tuners/si2157.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c
    index 13770b038048e..a4bba669f234d 100644
    --- a/drivers/media/tuners/si2157.c
    +++ b/drivers/media/tuners/si2157.c
    @@ -89,7 +89,7 @@ static int si2157_init(struct dvb_frontend *fe)
    dev_dbg(&client->dev, "\n");

    /* Try to get Xtal trim property, to verify tuner still running */
    - memcpy(cmd.args, "\x15\x00\x04\x02", 4);
    + memcpy(cmd.args, "\x15\x00\x02\x04", 4);
    cmd.wlen = 4;
    cmd.rlen = 4;
    ret = si2157_cmd_execute(client, &cmd);
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 20:40    [W:2.341 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site