15 Jan, 2012

1 commit


11 Jan, 2012

39 commits

  • Some time ago, Manoel sent us a patch adding more stuff
    to the init sequence. However, his patch were also doing
    non-related stuff, by changing the init logic without
    any good reason. So, it was asked for him to submit a
    patch with just the data that has changed, in order to
    allow us to better analyze it.

    As he didn't what it was requested, I finally found some
    time to dig into his init sequence and add it here.

    Basically, new stuff is added there. There are a few changes:

    1) The removal of the extra (duplicated) logic that puts
    the chip into the serial mode;
    2) Some Viterbi VBER measurement init data was changed from
    0x00 to 0xff for layer A, to match what was done for
    layers B and C.

    None of those caused any regressions and both make sense
    on my eyes.

    The other parameters additions actually increased the
    tuning quality for some channels. Yet, some channels that
    were previously discovered with scan disappered, while
    others appeared instead. This were tested in Brasilia,
    with an external antena.

    At the overall, it is now a little better. So, better to
    add these, and then try to figure out a configuration that
    would get even better scanning results.

    Reported-by: Manoel Pinheiro
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • On mb86a20s, some registers have sub-addresses, while others not.
    In order to make easier to compare different settings, group them.

    No functional changes in this patch.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • As a DVBv3 application may be relying on the delivery system,
    don't reset it at DTV_CLEAR. For DVBv5 applications, the
    delivery system should be set anyway.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Fix error where SNR unstable and jumps levels.

    Signed-off-by: Malcolm Priestley
    Signed-off-by: Mauro Carvalho Chehab

    Malcolm Priestley
     
  • We can pass a NO_SIGNAL video decoder state back to applications
    if it's available.

    Signed-off-by: Steven Toth
    Signed-off-by: Mauro Carvalho Chehab

    Steven Toth
     
  • Allow bridge drivers to query status.

    Signed-off-by: Steven Toth
    Signed-off-by: Mauro Carvalho Chehab

    Steven Toth
     
  • This remote was added with support for card Compro VideoMate M1F.

    This remote is shipped with various Compro cards, not this one only.

    Furthermore this remote can be bought separately under name Compro
    VideoMate K100.
    http://compro.com.tw/en/product/k100/k100.html

    So give it a proper name.

    [mchehab@redhat.com: Fix the Makefile]
    Signed-off-by: Samuel Rakitničan
    Signed-off-by: Mauro Carvalho Chehab

    Samuel Rakitnican
     
  • Fix the following build warning:

    warning: (VIDEO_AU0828) selects DVB_AU8522 which has unmet direct dependencies (MEDIA_SUPPORT && DVB_CAPTURE_DRIVERS && DVB_CORE && I2C && VIDEO_V4L2)

    Signed-off-by: Fabio Estevam
    Signed-off-by: Mauro Carvalho Chehab

    Fabio Estevam
     
  • This patch converts the drivers in drivers/media/* to use the
    module_platform_driver() macro which makes the code smaller and a bit
    simpler.

    Cc: Mauro Carvalho Chehab
    Cc: Laurent Pinchart
    Cc: Kyungmin Park
    Cc: Hans Verkuil
    Cc: "Richard Röjfors"
    Cc: "Matti J. Aaltonen"
    Cc: Lucas De Marchi
    Cc: Manjunath Hadli
    Cc: Muralidharan Karicheri
    Cc: Anatolij Gustschin
    Cc: Guennadi Liakhovetski
    Cc: Marek Szyprowski
    Cc: Robert Jarzmik
    Cc: Jonathan Corbet
    Cc: Daniel Drake
    Signed-off-by: Axel Lin
    Acked-by: Laurent Pinchart
    Acked-by: Guennadi Liakhovetski
    Acked-by: Marek Szyprowski
    Acked-by: Matti J. Aaltonen
    Signed-off-by: Mauro Carvalho Chehab

    Axel Lin
     
  • Fix the following build warning:

    warning: (VIDEO_CX231XX_DVB) selects DVB_MB86A20S which has unmet direct dependencies (MEDIA_SUPPORT && DVB_CAPTURE_DRIVERS && DVB_CORE && I2C)

    Signed-off-by: Fabio Estevam
    Signed-off-by: Mauro Carvalho Chehab

    Fabio Estevam
     
  • Add driver for the JPEG codec IP block available in Samsung Exynos SoC series.

    The driver is implemented as a V4L2 mem-to-mem device. It exposes two video
    nodes to user space, one for the encoding part, and one for the decoding part.

    Signed-off-by: Andrzej Pietrasiewicz
    Signed-off-by: Kyungmin Park
    Reviewed-by: Sakari Ailus
    Reviewed-by: Sylwester Nawrocki
    Reviewed-by: Tomasz Stanislawski
    Signed-off-by: Marek Szyprowski
    Signed-off-by: Mauro Carvalho Chehab

    Andrzej Pietrasiewicz
     
  • Adjusting of Video Processor's scaling factors was flawed. It bounded scaling
    to range 1/16 to 1/1. The correct range should be 1/4 to 4/1. This patch fixes
    this bug.

    Signed-off-by: Tomasz Stanislawski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Tomasz Stanislawski
     
  • This patch add support for V4L2 selection API to s5p-tv driver. Moreover it
    removes old API for cropping. Old applications would still work because the
    crop ioctls are emulated using the selection API.

    Signed-off-by: Tomasz Stanislawski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Tomasz Stanislawski
     
  • This patch allows new video drivers to work correctly with applications that
    use the old-style crop API. The old crop ioctl is emulated by using selection
    callbacks.

    Signed-off-by: Tomasz Stanislawski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Tomasz Stanislawski
     
  • This patch introduces new api for a precise control of cropping and composing
    features for video devices. The new ioctls are VIDIOC_S_SELECTION and
    VIDIOC_G_SELECTION.

    Signed-off-by: Tomasz Stanislawski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Tomasz Stanislawski
     
  • Fix some issues pointed out by Mauro.
    Mauro Carvalho Chehab

    Signed-off-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Antti Palosaari
     
  • Allow use of that general callback for demod too.

    Signed-off-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Antti Palosaari
     
  • Signed-off-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Antti Palosaari
     
  • Signed-off-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Antti Palosaari
     
  • Signed-off-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Antti Palosaari
     
  • Signed-off-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Antti Palosaari
     
  • The card definition of the Terratec Cinergy 200 USB uses the
    wrong tuner type. Therefore some channels are currently missing.
    Attached patch fixes this problem.

    Signed-off-by: Sascha Sommer
    Signed-off-by: Mauro Carvalho Chehab

    Sascha Sommer
     
  • The MaxPacketSize for em2800 based devices is too small to capture at full resolution.
    Therefore scale down when the maximum frame size is selected.
    The previous workaround that simply reduced the X resolution cannot be used
    because it crops a part of the input as
    the em2800 can only scale down with a factor of 0.5.

    reverts commits 1ca31892e and fb3de0398ab.

    [mchehab@redhat.com: Fix CodingStyle]
    Signed-off-by: Sascha Sommer
    Signed-off-by: Mauro Carvalho Chehab

    Sascha Sommer
     
  • writing the EM28XX_R06_I2C_CLK register leads to the problem that the
    i2c bus on the Terratec Cinergy 200 USB is no longer usable when the
    system is rebooted.

    The device needs to be unplugged in order to bring it back to life.
    Attached patch conditionally disables the write in
    em28xx_pre_card_setup() like it is already done in em28xx_card_setup().

    Signed-off-by: Sascha Sommer
    Signed-off-by: Mauro Carvalho Chehab

    Sascha Sommer
     
  • It looks like the return value check that is done after setting the I2C
    speed checks the wrong return code.

    Signed-off-by: Sascha Sommer
    Signed-off-by: Mauro Carvalho Chehab

    Sascha Sommer
     
  • The 'struct em28xx *' pointer was passed by reference to the
    em28xx_init_dev() function, for no reason. Instead, just pass it by
    value, which is much more logical and simple.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Mauro Carvalho Chehab

    Thomas Petazzoni
     
  • The af9005_properties and af9015_properties tables make use of USB ids
    from the USB id tables with hardcoded indices, as in
    "&af9015_usb_table[30]". Adding new entries before the end breaks
    such references, so everyone has had to carefully tiptoe to only add
    entries at the end of the list.

    In the spirit of "dw2102: use symbolic names for dw2102_table
    indices", use C99-style initializers with symbolic names for each
    index to avoid this. In the new regime, properties tables referring
    to the USB ids have names like "&af9015_usb_table[CINERGY_T_STICK_RC]"
    that do not change meaning when items in the USB id table are
    reordered.

    Encouraged-by: Mauro Carvalho Chehab

    Signed-off-by: Jonathan Nieder
    Acked-by: Luca Olivetti
    Acked-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Jonathan Nieder
     
  • URBs allocated with usb_alloc_urb() are allocated from DMA-coherent
    areas, and therefore it is not necessary to call dma_map_single() on
    such buffers. Worst, on ARM, calling dma_map_single() on a
    DMA-coherent buffer will trigger a BUG_ON() in
    arch/arm/mm/dma-mapping.c.

    Therefore, we mark all URBs allocated with usb_alloc_urb() with the
    URB_NO_TRANSFER_DMA_MAP transfer_flags, so that the USB core does not
    do dma_map_single()/dma_unmap_single() on those buffers.

    This is similar to 882787ff8fdeb0be790547ee9b22b281095e95da for the
    gspca driver, and has already been discussed on the linux-media list
    in the past:
    http://www.mail-archive.com/linux-media@vger.kernel.org/msg37086.html.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Mauro Carvalho Chehab

    Thomas Petazzoni
     
  • The 'struct cx231xx *' pointer was passed by reference to the
    cx231xx_init_dev() function, for no reason. Instead, just pass it by
    value, which is much more logical and simple.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Mauro Carvalho Chehab

    Thomas Petazzoni
     
  • DVB-T did not work at all - only 6 MHz was working but it is not
    commonly used.
    Fix it.

    Signed-off-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Antti Palosaari
     
  • Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • The driver were using DEV_MISCONFIGURED on some places, and
    DEV_DISCONNECTED on others. In a matter of fact, DEV_MISCONFIGURED
    were set only during the usb disconnect callback, with
    was confusing.

    Also, the alsa driver never checks if the device is present,
    before doing some dangerous things.

    Remove DEV_MISCONFIGURED, replacing it by DEV_DISCONNECTED.

    Also, fixes the other usecases for DEV_DISCONNECTED.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • cx231xx_devused is racy. Re-implement it in a proper way,
    to remove the risk of mangling it.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • There are several weirdness at the unregister logic.

    First of all, IR has a poll thread. This thread needs to be
    removed, as it uses some resources associated to the main driver.
    So, the driver needs to explicitly unregister the I2C client for
    ir-kbd-i2c.

    If, for some reason, the driver needs to wait for a close()
    to happen, not all memories will be freed, because the free
    logic were in the wrong place.

    Also, v4l2_device_unregister() seems to be called too early,
    as devices are still using it.

    Finally, even with the device disconnected, there is one
    USB function call that will still try to talk with it.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Reports the auto-detected parameters to userspace.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • If the device got removed, stops polling it. Also, un-registers
    it at input/evdev, as it won't work anymore. We can't free the
    IR structure yet, as the ir_remove method will be called later.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Now that we set the intfdata on the right interface, the 'lif'
    variable is useless.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Mauro Carvalho Chehab

    Thomas Petazzoni
     
  • The following sequence of commands was triggering a kernel crash in
    cdev_get():

    modprobe cx231xx
    rmmod cx231xx
    modprobe cx231xx
    v4l2grab -n 1

    The problem was that cx231xx_usb_disconnect() was not doing anything
    because the test:

    if (!dev->udev)
    return;

    was reached (i.e, dev->udev was NULL).

    This is due to the fact that the 'dev' pointer placed as intfdata into
    the usb_interface structure had the wrong value, because
    cx231xx_probe() was doing the usb_set_intfdata() on the wrong
    usb_interface structure. For some reason, cx231xx_probe() was doing
    the following:

    static int cx231xx_usb_probe(struct usb_interface *interface,
    const struct usb_device_id *id)
    {
    struct usb_interface *lif = NULL;
    [...]
    /* store the current interface */
    lif = interface;
    [...]
    /* store the interface 0 back */
    lif = udev->actconfig->interface[0];
    [...]
    usb_set_intfdata(lif, dev);
    [...]
    retval = v4l2_device_register(&interface->dev, &dev->v4l2_dev);
    [...]
    }

    So, the usb_set_intfdata() was done on udev->actconfig->interface[0]
    and not on the 'interface' passed as argument to the ->probe() and
    ->disconnect() hooks. Later on, v4l2_device_register() was
    initializing the intfdata of the correct usb_interface structure as a
    pointer to the v4l2_device structure.

    Upon unregistration, the ->disconnect() hook was getting the intfdata
    of the usb_interface passed as argument... and casted it to a 'struct
    cx231xx *' while it was in fact a 'struct v4l2_device *'.

    The correct fix seems to just be to set the intfdata on the proper
    interface from the beginning. Now, loading/unloading/reloading the
    driver allows to use the device properly.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Mauro Carvalho Chehab

    Thomas Petazzoni
     
  • As reported by Toralf:

    the build failed with :
    CC [M] drivers/media/dvb/dvb-core/dvb_ca_en50221.o
    In file included from arch/x86/include/asm/uaccess.h:573:0,
    from include/linux/poll.h:14,
    from drivers/media/dvb/dvb-core/dvbdev.h:27,
    from drivers/media/dvb/dvb-core/dvb_ca_en50221.h:27,
    from drivers/media/dvb/dvb-core/dvb_ca_en50221.c:41:
    In function "copy_from_user", inlined from "dvb_ca_en50221_io_write" at drivers/media/dvb/dvb-core/dvb_ca_en50221.c:1314:26: arch/x86/include/asm/uaccess_32.h:211:26: error: call to "copy_from_user_overflow" declared with attribute error: copy_from_user() buffer size is not provably correct

    Reported-by: Toralf Foerster
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab