11 Jan, 2012

13 commits

  • 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
     

07 Jan, 2012

15 commits

  • Signed-off-by: Mario Ceresa
    Signed-off-by: Mauro Carvalho Chehab

    Mario Ceresa
     
  • These callbacks allow a host video driver
    to poll video formats supported by tvp5150.

    Signed-off-by: Mauro Carvalho Chehab

    Javier Martin
     
  • The patch "dm1105: handle errors from dvb_net_init" moved the
    initialization of dvbnet to before frontend attachment but forgot
    to adjust the error handling when frontend attachment fails.

    Signed-off-by: Jonathan Nieder
    Signed-off-by: Mauro Carvalho Chehab

    Jonathan Nieder
     
  • This module does some printks with the loglevel missing.

    pr_err() takes care of adding the KERN_ERR tag and the module name.
    So we can simplify the code and add the missing printk loglevel by
    using it.

    Also add a #define pr_fmt() to make this work, and remove a few
    unnecessary periods at the end of messages and bump the loglevel of
    "Unknown bttv card type" from KERN_WARNING to KERN_ERR while at it.

    Inspired-by: Mauro Carvalho Chehab

    Signed-off-by: Jonathan Nieder
    Signed-off-by: Mauro Carvalho Chehab

    Jonathan Nieder
     
  • This way, the messages will be tagged with KERN_DEBUG and not clutter
    the log from dmesg unless the "debug" module parameter is set.

    [mchehab@redhat.com: whitespace fixes]
    Signed-off-by: Jonathan Nieder
    Signed-off-by: Mauro Carvalho Chehab

    Jonathan Nieder
     
  • Lift assignments from "if" conditionals for readability. No change
    in functionality intended.

    Suggested-by: Mauro Carvalho Chehab

    Signed-off-by: Jonathan Nieder
    Signed-off-by: Mauro Carvalho Chehab

    Jonathan Nieder
     
  • Signed-off-by: Stefan Ringel
    Signed-off-by: Mauro Carvalho Chehab

    Stefan Ringel
     
  • This code is wrong as I should have coded it as SYS_DVBC, instead of
    SYS_DVBS & friends. Anyway, this check has other problems

    1) it does some "magic" by assuming that all QAM modulations are below
    QAM_AUTO;

    2) it checks modulation parameters only for one delivery system.
    Or the core should check invalid parameters for all delivery
    systems, or it should let the frontend drivers do it;

    3) frontend drivers should already be checking for invalid parameters
    (most of them do it, anyway);

    4) not all modulations are mapped at fe->ops.info.caps, so it is not
    even possible to check for the valid modulations inside the core
    for some delivery systems;

    5) The core check is incomplete anyway: it only checks for a few
    parameters. If moved into the core other parameters like bandwidth
    and fec should also be checked;

    6) 2nd gen DVB-C uses OFDM. So, that test would fail for it.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • As reported by Oliver, some old dead code were preserved there.

    Thanks-to: Oliver endriss
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Add support for two new types of Leadtek Winfast TV 2000XP tuner

    The author of this patch is Istvan Varga.
    Only resending current reformated version against current git.

    Signed-off-by: Miroslav Slugen
    Signed-off-by: Mauro Carvalho Chehab

    Istvan Varga
     
  • If ctrls->count is too high the multiplication could overflow and
    array_size would be lower than expected. Mauro and Hans Verkuil
    suggested that we cap it at 1024. That comes from the maximum
    number of controls with lots of room for expantion.

    $ grep V4L2_CID include/linux/videodev2.h | wc -l
    211

    Cc: stable
    Signed-off-by: Dan Carpenter
    Signed-off-by: Mauro Carvalho Chehab

    Dan Carpenter
     
  • Smatch complains that i can be one passed the end of the array if we
    don't hit the break statement. We should be using the "audio" here like
    we do in the other places.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Mauro Carvalho Chehab

    Dan Carpenter
     
  • This is just a cleanup, it doesn't change how the code works. These
    are compound conditions and not bitwise operations so it should be &&
    and not &.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Mauro Carvalho Chehab

    Dan Carpenter
     
  • Leadtek DTV2000H J has Philips a FMD1216MEX tuner,
    and not a FMD1216ME.

    Signed-off-by: Miroslav Slugen
    Signed-off-by: Mauro Carvalho Chehab

    Miroslav Slugen
     
  • This patch replaces the previous one proposed in the thread "xc3028:
    force reload of DTV7 firmware in VHF band with Zarlink demodulator",
    at the linux-media@vger.kernel.org ML.

    The problem is that the firmware DTV78 works fine in UHF band (8 MHz
    bandwidth) but is not working at all in VHF band (7 MHz bandwidth).
    Reading the comments inside the code, I figured out that the real
    problem could be connected to the formula used to calculate the center
    frequency offset in VHF band.

    In fact, removing this adjustment fixes the problem:

    if ((priv->cur_fw.type & DTV78) && freq < 470000000)
    offset -= 500000;

    This is coherent to what was implemented for the DTV7 firmware by an
    Australian user:

    if (priv->cur_fw.type & DTV7)
    offset += 500000;

    In the end, now the center frequency is the same for all firmwares
    (DTV7, DTV8, DTV78) and doesn't depend on channel bandwidth.

    The final code looks clean and simple, and there is no need for any
    "magic" adjustment:

    if (priv->cur_fw.type & DTV6)
    offset = 1750000;
    else /* DTV7 or DTV8 or DTV78 */
    offset = 2750000;

    Signed-off-by: Gianluca Gennari
    Signed-off-by: Mauro Carvalho Chehab

    Gianluca Gennari
     

06 Jan, 2012

12 commits

  • Fix the following build warning:

    warning: (RADIO_WL128X) selects TI_ST which has unmet direct dependencies (MISC_DEVICES && NET && GPIOLIB)

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

    Fabio Estevam
     
  • Fix the following build warning:

    warning: (MEDIA_TUNER) selects MEDIA_TUNER_TEA5761 which has unmet direct
    dependencies (MEDIA_SUPPORT && VIDEO_MEDIA && I2C && EXPERIMENTAL)

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

    Fabio Estevam
     
  • On Thu, 2011-12-15 at 16:42 +0000, Malcolm Priestley wrote:
    > > [ 1103.536156] it913x: Chip Version=ec Chip Type=5830
    > > [ 1104.336178] it913x: Dual mode=92 Remote=92 Tuner Type=92
    > > [ 1106.248116] dvb-usb: found a 'ITE 9135(9006) Generic' in cold state,
    > > will try to load a firmware
    > > [ 1106.253773] dvb-usb: downloading firmware from file
    > > 'dvb-usb-it9135-02.fw'
    > > [ 1106.452123] it913x: FRM Starting Firmware Download
    > > [ 1130.756039] it913x: FRM Firmware Download Failed (ffffff92)
    > > [ 1130.956168] it913x: Chip Version=79 Chip Type=5823
    > > [ 1131.592192] it913x: DEV it913x Error
    > > [ 1131.592271] usbcore: registered new interface driver it913x
    > >
    > > No frontend is generated anyway.
    >
    > Looks like the the firmware is not at all compatible with your device.
    >
    > Have you applied the patch cleanly to the latest media_build?
    >
    > These appear to be new version of the 9006. A supplier is sending me one
    > of these devices.
    >
    > As a last resort see if the device works with dvb-usb-it9137-01.fw
    >
    > You will have force to use this firmware
    > dvb-usb-it913x firmware=1

    Here is a modified firmware loader for version 2 types.

    The firmware must be as in original
    ./dvb_get_firmware it9135

    dd if=dvb-usb-it9135.fw ibs=1 skip=12866 count=5817 of=dvb-usb-it9135-02.fw

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

    Malcolm Priestley
     
  • This patch fixes an obvious typo in the get_frontend() function
    of the af9013 driver, recently rewritten by Antti Palosaari.

    Signed-off-by: Gianluca Gennari
    Signed-off-by: Mauro Carvalho Chehab

    Gianluca Gennari
     
  • By accident, I added an extra comma at the printk format argument.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Add BER monitoring with Pre-Viterbi error rate.

    Add UCBLOCKS based on Aborted packets.

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

    Malcolm Priestley
     
  • Correction to tuner ID 0x51.

    Don't force tuner ID 0x60 unless eprom data zero.

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

    Malcolm Priestley
     
  • Adds support for the Plextor ConvertX PX-AV100U, which uses the
    eMPIA EM2820 chip. The device has a device_id of '0x093b, 0xa003'. I
    am using the existing EM2820_BOARD_PINNACLE_DVC_90 board profile, as
    the Pinnacle Dazzle DVC 90/100/101/107, Kaiser Baas Video to DVD
    maker, and Kworld DVD Maker 2 were already mapped to it. Some more
    background on the device and my testing can be found at
    http://www.donkramer.net/plextor_122710.pdf

    Signed-off-by: Don Kramer
    Signed-off-by: Mauro Carvalho Chehab

    Don Kramer
     
  • Some channels appear weak signal after warm boot.

    Because tuner id is not present in eprom 0x38 is
    assigned.

    9006 devices are now always assigned 0x60.

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

    Malcolm Priestley
     
  • Fixes issues with PID filter
    Stalling of some channels when PID is on.
    PID filter not turning off fully.
    PID filter can now turn on and off each index.

    Removed PID_RST from it913x_pid_filter_ctrl.
    Replaced with PID_EN removed from it913x_pid_filter

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

    Malcolm Priestley
     
  • The VIDIOC_LOG_STATUS ioctl allows to dump the current status of a driver
    to the kernel log. Currently this ioctl is only available at video device
    nodes and the subdevs rely on the host driver to expose their core.log_status
    operation to user space.

    This patch adds VIDIOC_LOG_STATUS support at the sub-device nodes,
    for standalone subdevs that expose their own /dev entry.

    Acked-by: Laurent Pinchart
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Sylwester Nawrocki
     
  • The following ioctl sequence causes fimc_dma_run() to start processing without
    complete scaler and DMA initialization which causes missing interrupt and
    blocking on DQBUF:
    S_FMT, STREAMON, QBUF, DQBUF, STREAMOFF, STREAMON, QBUF, DQBUF.

    Fix this regression caused by moving pm_runtime* calls to start/stop_streaming
    callback by making sure the fimc_m2m_resume() is always invoked when expected.

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

    Sylwester Nawrocki