• Mauro Carvalho Chehab's avatar
    V4L/DVB (12411): em28xx: Fix artifacts with Silvercrest webcam · 3d3215c4
    Mauro Carvalho Chehab authored
    Silvercrest mt9v011 sensor produces a 640x480 image. However,
    previously, the code were getting only half of the lines and merging two
    consecutive frames to "produce" a 640x480 image.
    
    With the addition of progressive mode, now em28xx is working with a full
    image. However, when the number of lines is bigger than 240, the
    beginning of some odd lines are filled with blank.
    
    After lots of testing, and physically checking the device for a Xtal, it
    was noticed experimentally that mt9v011 is using em28xx XCLK as its
    clock. Due to that, changing XCLK value changes the maximum speed of the
    stream.
    
    At the tests, it were possible to produce up to 32 fps, using a 30 MHz
    XCLK. However, at that rate, the artifacts happen even at 320x240. Lower
    values of XCLK produces artifacts only at 640x480.
    
    At some values of xclk (for example XCLKK = 6 MHz, 640x480), it is
    possible to see an invalid sucession of artifacts with this pattern:
    
    .xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    .xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ....xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    (where the dots represent the blanked pixels)
    
    So, it seems that a waveform in the format of a ramp is interferring at
    the image.
    
    The cause of this interference is currently unknown. Some possibilities
    are:
    	- electrical interference (maybe this device is broken?);
    	- some issue at mt9v011 programming;
    	- some bug at em28xx chip.
    
    So, for now, let's be conservative and use a value of XCLK that we know
    for sure that it won't cause artifacts.
    
    As I'm waiting for more of such devices with different em28xx chipset
    revisions, I'll have the opportunity to double check the issue with
    other pieces of hardware.
    
    Later patches can vary XCLK depending on the vertical resolutions, if a
    proper fix is not discovered.
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    3d3215c4
em28xx-cards.c 82.3 KB