25 Oct, 2010

2 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (75 commits)
    Input: wacom - specify Cinitq supported tools
    Input: ab8500-ponkey - fix IRQ freeing in error path
    Input: adp5588-keys - use more obvious i2c_device_id name string
    Input: ad7877 - switch to using threaded IRQ
    Input: ad7877 - use attribute group to control visibility of attributes
    Input: serio - add support for PS2Mult multiplexer protocol
    Input: wacom - properly enable runtime PM
    Input: ad7877 - filter events where pressure is beyond the maximum
    Input: ad7877 - implement EV_KEY:BTN_TOUCH reporting
    Input: ad7877 - implement specified chip select behavior
    Input: hp680_ts_input - use cancel_delayed_work_sync()
    Input: mousedev - correct lockdep annotation
    Input: ads7846 - switch to using threaded IRQ
    Input: serio - support multiple child devices per single parent
    Input: synaptics - simplify pass-through port handling
    Input: add ROHM BU21013 touch panel controller support
    Input: omap4-keypad - wake-up on events & long presses
    Input: omap4-keypad - fix interrupt line configuration
    Input: omap4-keypad - SYSCONFIG register configuration
    Input: omap4-keypad - use platform device helpers
    ...

    Linus Torvalds
     
  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)
    Update broken web addresses in arch directory.
    Update broken web addresses in the kernel.
    Revert "drivers/usb: Remove unnecessary return's from void functions" for musb gadget
    Revert "Fix typo: configuation => configuration" partially
    ida: document IDA_BITMAP_LONGS calculation
    ext2: fix a typo on comment in ext2/inode.c
    drivers/scsi: Remove unnecessary casts of private_data
    drivers/s390: Remove unnecessary casts of private_data
    net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data
    drivers/infiniband: Remove unnecessary casts of private_data
    drivers/gpu/drm: Remove unnecessary casts of private_data
    kernel/pm_qos_params.c: Remove unnecessary casts of private_data
    fs/ecryptfs: Remove unnecessary casts of private_data
    fs/seq_file.c: Remove unnecessary casts of private_data
    arm: uengine.c: remove C99 comments
    arm: scoop.c: remove C99 comments
    Fix typo configue => configure in comments
    Fix typo: configuation => configuration
    Fix typo interrest[ing|ed] => interest[ing|ed]
    Fix various typos of valid in comments
    ...

    Fix up trivial conflicts in:
    drivers/char/ipmi/ipmi_si_intf.c
    drivers/usb/gadget/rndis.c
    net/irda/irnet/irnet_ppp.c

    Linus Torvalds
     

23 Oct, 2010

2 commits

  • * 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
    vfs: make no_llseek the default
    vfs: don't use BKL in default_llseek
    llseek: automatically add .llseek fop
    libfs: use generic_file_llseek for simple_attr
    mac80211: disallow seeks in minstrel debug code
    lirc: make chardev nonseekable
    viotape: use noop_llseek
    raw: use explicit llseek file operations
    ibmasmfs: use generic_file_llseek
    spufs: use llseek in all file operations
    arm/omap: use generic_file_llseek in iommu_debug
    lkdtm: use generic_file_llseek in debugfs
    net/wireless: use generic_file_llseek in debugfs
    drm: use noop_llseek

    Linus Torvalds
     
  • * 'config' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
    BKL: introduce CONFIG_BKL.
    dabusb: remove the BKL
    sunrpc: remove the big kernel lock
    init/main.c: remove BKL notations
    blktrace: remove the big kernel lock
    rtmutex-tester: make it build without BKL
    dvb-core: kill the big kernel lock
    dvb/bt8xx: kill the big kernel lock
    tlclk: remove big kernel lock
    fix rawctl compat ioctls breakage on amd64 and itanic
    uml: kill big kernel lock
    parisc: remove big kernel lock
    cris: autoconvert trivial BKL users
    alpha: kill big kernel lock
    isapnp: BKL removal
    s390/block: kill the big kernel lock
    hpet: kill BKL, add compat_ioctl

    Linus Torvalds
     

21 Oct, 2010

1 commit

  • With all the patches we have queued in the BKL removal tree, only a
    few dozen modules are left that actually rely on the BKL, and even
    there are lots of low-hanging fruit. We need to decide what to do
    about them, this patch illustrates one of the options:

    Every user of the BKL is marked as 'depends on BKL' in Kconfig,
    and the CONFIG_BKL becomes a user-visible option. If it gets
    disabled, no BKL using module can be built any more and the BKL
    code itself is compiled out.

    The one exception is file locking, which is practically always
    enabled and does a 'select BKL' instead. This effectively forces
    CONFIG_BKL to be enabled until we have solved the fs/lockd
    mess and can apply the patch that removes the BKL from fs/locks.c.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

19 Oct, 2010

3 commits

  • The dabusb device driver is sufficiently serialized using
    its own mutex, no need for the big kernel lock here
    in addition.

    Signed-off-by: Arnd Bergmann
    Cc: Mauro Carvalho Chehab

    Arnd Bergmann
     
  • The dvb core only uses the big kernel lock in the open
    and ioctl functions, which means it can be replaced with
    a dvb specific mutex. Fortunately, all the ioctl functions
    go through dvb_usercopy, so we can move the serialization
    in there.

    Signed-off-by: Arnd Bergmann
    Cc: Mauro Carvalho Chehab
    Cc: linux-media@vger.kernel.org

    Arnd Bergmann
     
  • The bt8xx driver only uses the big kernel lock in its dst_ca_ioctl
    function and never to serialize against other code, so we can
    trivially replace it with a private mutex.

    Signed-off-by: Arnd Bergmann
    Cc: linux-media@vger.kernel.org
    Cc: Mauro Carvalho Chehab

    Arnd Bergmann
     

18 Oct, 2010

1 commit

  • The patch below updates broken web addresses in the kernel

    Signed-off-by: Justin P. Mattock
    Cc: Maciej W. Rozycki
    Cc: Geert Uytterhoeven
    Cc: Finn Thain
    Cc: Randy Dunlap
    Cc: Matt Turner
    Cc: Dimitry Torokhov
    Cc: Mike Frysinger
    Acked-by: Ben Pfaff
    Acked-by: Hans J. Koch
    Reviewed-by: Finn Thain
    Signed-off-by: Jiri Kosina

    Justin P. Mattock
     

16 Oct, 2010

1 commit

  • The compat code for the VIDIOCSMICROCODE ioctl is totally buggered.
    It's only used by the VIDEO_STRADIS driver, and that one is scheduled to
    staging and eventually removed unless somebody steps up to maintain it
    (at which point it should use request_firmware() rather than some magic
    ioctl). So we'll get rid of it eventually.

    But in the meantime, the compatibility ioctl code is broken, and this
    tries to get it to at least limp along (even if Mauro suggested just
    deleting it entirely, which may be the right thing to do - I don't think
    the compatibility translation code has ever worked unless you were very
    lucky).

    Reported-by: Kees Cook
    Cc: Mauro Carvalho Chehab
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

15 Oct, 2010

1 commit

  • All file_operations should get a .llseek operation so we can make
    nonseekable_open the default for future file operations without a
    .llseek pointer.

    The three cases that we can automatically detect are no_llseek, seq_lseek
    and default_llseek. For cases where we can we can automatically prove that
    the file offset is always ignored, we use noop_llseek, which maintains
    the current behavior of not returning an error from a seek.

    New drivers should normally not use noop_llseek but instead use no_llseek
    and call nonseekable_open at open time. Existing drivers can be converted
    to do the same when the maintainer knows for certain that no user code
    relies on calling seek on the device file.

    The generated code is often incorrectly indented and right now contains
    comments that clarify for each added line why a specific variant was
    chosen. In the version that gets submitted upstream, the comments will
    be gone and I will manually fix the indentation, because there does not
    seem to be a way to do that using coccinelle.

    Some amount of new code is currently sitting in linux-next that should get
    the same modifications, which I will do at the end of the merge window.

    Many thanks to Julia Lawall for helping me learn to write a semantic
    patch that does all this.

    ===== begin semantic patch =====
    // This adds an llseek= method to all file operations,
    // as a preparation for making no_llseek the default.
    //
    // The rules are
    // - use no_llseek explicitly if we do nonseekable_open
    // - use seq_lseek for sequential files
    // - use default_llseek if we know we access f_pos
    // - use noop_llseek if we know we don't access f_pos,
    // but we still want to allow users to call lseek
    //
    @ open1 exists @
    identifier nested_open;
    @@
    nested_open(...)
    {

    }

    @ open exists@
    identifier open_f;
    identifier i, f;
    identifier open1.nested_open;
    @@
    int open_f(struct inode *i, struct file *f)
    {

    }

    @ read disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {

    }

    @ read_no_fpos disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ write @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {

    }

    @ write_no_fpos @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ fops0 @
    identifier fops;
    @@
    struct file_operations fops = {
    ...
    };

    @ has_llseek depends on fops0 @
    identifier fops0.fops;
    identifier llseek_f;
    @@
    struct file_operations fops = {
    ...
    .llseek = llseek_f,
    ...
    };

    @ has_read depends on fops0 @
    identifier fops0.fops;
    identifier read_f;
    @@
    struct file_operations fops = {
    ...
    .read = read_f,
    ...
    };

    @ has_write depends on fops0 @
    identifier fops0.fops;
    identifier write_f;
    @@
    struct file_operations fops = {
    ...
    .write = write_f,
    ...
    };

    @ has_open depends on fops0 @
    identifier fops0.fops;
    identifier open_f;
    @@
    struct file_operations fops = {
    ...
    .open = open_f,
    ...
    };

    // use no_llseek if we call nonseekable_open
    ////////////////////////////////////////////
    @ nonseekable1 depends on !has_llseek && has_open @
    identifier fops0.fops;
    identifier nso ~= "nonseekable_open";
    @@
    struct file_operations fops = {
    ... .open = nso, ...
    +.llseek = no_llseek, /* nonseekable */
    };

    @ nonseekable2 depends on !has_llseek @
    identifier fops0.fops;
    identifier open.open_f;
    @@
    struct file_operations fops = {
    ... .open = open_f, ...
    +.llseek = no_llseek, /* open uses nonseekable */
    };

    // use seq_lseek for sequential files
    /////////////////////////////////////
    @ seq depends on !has_llseek @
    identifier fops0.fops;
    identifier sr ~= "seq_read";
    @@
    struct file_operations fops = {
    ... .read = sr, ...
    +.llseek = seq_lseek, /* we have seq_read */
    };

    // use default_llseek if there is a readdir
    ///////////////////////////////////////////
    @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier readdir_e;
    @@
    // any other fop is used that changes pos
    struct file_operations fops = {
    ... .readdir = readdir_e, ...
    +.llseek = default_llseek, /* readdir is present */
    };

    // use default_llseek if at least one of read/write touches f_pos
    /////////////////////////////////////////////////////////////////
    @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read.read_f;
    @@
    // read fops use offset
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = default_llseek, /* read accesses f_pos */
    };

    @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ... .write = write_f, ...
    + .llseek = default_llseek, /* write accesses f_pos */
    };

    // Use noop_llseek if neither read nor write accesses f_pos
    ///////////////////////////////////////////////////////////

    @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    identifier write_no_fpos.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ...
    .write = write_f,
    .read = read_f,
    ...
    +.llseek = noop_llseek, /* read and write both use no f_pos */
    };

    @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write_no_fpos.write_f;
    @@
    struct file_operations fops = {
    ... .write = write_f, ...
    +.llseek = noop_llseek, /* write uses no f_pos */
    };

    @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    @@
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = noop_llseek, /* read uses no f_pos */
    };

    @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    @@
    struct file_operations fops = {
    ...
    +.llseek = noop_llseek, /* no read or write fn */
    };
    ===== End semantic patch =====

    Signed-off-by: Arnd Bergmann
    Cc: Julia Lawall
    Cc: Christoph Hellwig

    Arnd Bergmann
     

30 Sep, 2010

3 commits

  • In case of error during probe() the driver calls free_irq() function
    on not yet allocated irq. This patches fixes the call sequence in case of
    the error.

    Signed-off-by: Marek Szyprowski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Marek Szyprowski
     
  • When a driver that uses videobuf-dma-contig is used with the USERPTR
    memory access method a kernel oops might happen: a NULL address may be
    passed to dma_free_coherent(). This happens when an application calls
    REQBUFS and then exits without queuing any buffers. This patch fixes
    that bug.

    Signed-off-by: Pawel Osciak
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Pawel Osciak
     
  • For some cards, ir_dev->props and ir_dev->raw are both NULL. These cards are
    using built-in IR decoding instead of raw, and can't easily be made to switch
    protocols.

    So upon reading /sys/class/rc/rc?/protocols on such a card, return 'builtin' as
    the supported and enabled protocol. Return -EINVAL on any attempts to change
    the protocol. And most important of all, don't crash.

    Signed-off-by: Brian Rogers
    Acked-by: Jarod Wilson
    Signed-off-by: Mauro Carvalho Chehab

    Brian Rogers
     

28 Sep, 2010

26 commits

  • Fix DMA engine pixel offset calculation for 3-planar YUV formats.
    On S5PV210 SoCs horizontal offset is applied as number of pixels,
    not bytes per line.

    [mchehab@redhat.com: CodingStyle cleanup]
    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Kyungmin Park
    Signed-off-by: Marek Szyprowski
    Signed-off-by: Mauro Carvalho Chehab

    Sylwester Nawrocki
     
  • On failed create_workqueue() fimc_probe() was returning 0.

    Signed-off-by: Pawel Osciak
    Signed-off-by: Kyungmin Park
    Signed-off-by: Marek Szyprowski
    Signed-off-by: Mauro Carvalho Chehab

    Pawel Osciak
     
  • At all frame rates except 30fps and 5fps the camera produces very dark
    pictures. Auto-exposure is probably disabled by the camera at all frame
    rates except 30fps, making them pretty unusable.

    Work around the problem by introducing a new RESTRICT_FRAME_RATE quirk
    that disables all the frame rates except the default one.

    Signed-off-by: Laurent Pinchart
    Signed-off-by: Mauro Carvalho Chehab

    Laurent Pinchart
     
  • The camera requires the STREAM_NO_FID quirk. Add a corresponding entry
    in the device IDs list.

    Signed-off-by: Laurent Pinchart
    Signed-off-by: Mauro Carvalho Chehab

    Laurent Pinchart
     
  • The FBIOGET_VBLANK device ioctl allows unprivileged users to read 16
    bytes of uninitialized stack memory, because the "reserved" member of
    the fb_vblank struct declared on the stack is not altered or zeroed
    before being copied back to the user. This patch takes care of it.

    Signed-off-by: Dan Rosenberg
    Signed-off-by: Andy Walls
    Signed-off-by: Mauro Carvalho Chehab

    Dan Rosenberg
     
  • The wrong value for the volume control limit, 65335 vs. 65535,
    prevents proper cx25840 v4l2_subdevice initialization.

    Reported-by: Igor M. liplianin
    Signed-off-by: Andy Walls
    Signed-off-by: Mauro Carvalho Chehab

    Andy Walls
     
  • Video device was not being released on driver remove.

    Signed-off-by: Pawel Osciak
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Pawel Osciak
     
  • Output buffer has to be at least the size of input buffer, not the other
    way around.

    Signed-off-by: Pawel Osciak
    Signed-off-by: Kyungmin Park
    Signed-off-by: Mauro Carvalho Chehab

    Pawel Osciak
     
  • The drivers/media/video/mt9v022.c file, on line 405, tries a "case 0" o a
    v4l2_mbus_pixelcode enum which don't have an 0 value element, so I got a compile
    warning. That "case" is useless so it can be removed.

    Signed-off-by: Ionut Gabriel Popescu
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Ionut Gabriel Popescu
     
  • Signed-off-by: Michael Grzeschik
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Michael Grzeschik
     
  • Signed-off-by: Philipp Wiesner
    Signed-off-by: Michael Grzeschik
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Michael Grzeschik
     
  • The mx25_camera_irq irq handler may get called after the camera has been
    deactivated (from mx2_camera_deactivate). Detect this situation, and bail out.

    Signed-off-by: Baruch Siach
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Mauro Carvalho Chehab

    Baruch Siach
     
  • As the end of frame marker does not contain any pixel, it must not be
    transferred.

    Reported-by: Ivo Jager
    Signed-off-by: Jean-François Moine
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Jean-François Moine
     
  • This fixes a nasty memory corruption bug when using userptr I/O.
    The function videobuf_pages_to_sg() sets up the scatter-gather list for the
    DMA transfer to the userspace pages. The first transfer is setup correctly
    (the size is set to PAGE_SIZE - offset), but all other transfers have size
    PAGE_SIZE. This is wrong for the last transfer which may be less than PAGE_SIZE.

    Most, if not all, drivers will program the boards DMA engine correctly, i.e.
    even though the size in the last sg element is wrong, they will do their
    own size calculations and make sure the right amount is DMA-ed, and so seemingly
    prevent memory corruption.

    However, behind the scenes the dynamic DMA mapping support (in lib/swiotlb.c)
    may create bounce buffers if the memory pages are not in DMA-able memory.
    This happens for example on a 64-bit linux with a board that only supports
    32-bit DMA.

    These bounce buffers DO use the information in the sg list to determine the
    size. So while the DMA engine transfers the correct amount of data, when the
    data is 'bounced' back too much is copied, causing buffer overwrites.

    The fix is simple: calculate and set the correct size for the last sg list
    element.

    Signed-off-by: Hans Verkuil
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • As reported by: Carlos Americo Domiciano :

    [ 220.033500] cx231xx v4l2 driver loaded.
    [ 220.033571] cx231xx #0: New device Conexant Corporation Polaris AV Capturb @ 480 Mbps (1554:5010) with 6 interfaces
    [ 220.033577] cx231xx #0: registering interface 0
    [ 220.033591] cx231xx #0: registering interface 1
    [ 220.033654] cx231xx #0: registering interface 6
    [ 220.033910] cx231xx #0: Identified as Unknown CX231xx video grabber (card=0)
    [ 220.033946] BUG: unable to handle kernel NULL pointer dereference at (null)
    [ 220.033955] IP: [] cx231xx_pre_card_setup+0x5d/0xb0 [cx231xx]

    Thanks-to: Carlos Americo Domiciano
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Drivers shouldn't sleep while holding a spinlock. A previous workaround
    were to release the spinlock before callinc schedule().

    This patch uses a different approach: it just waits for the
    siano hardware to answer.

    Signed-off-by: Richard Zidlicky
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Richard Zidlicky
     
  • This patch improves the overall driver performance in
    diversity-reception scenarios.

    Signed-off-by: Olivier Grenie
    Signed-off-by: Patrick Boettcher
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Olivier Grenie
     
  • To improve performance on DiB7770-devices enabling the current mirror
    is needed.

    This patch adds an option to the dib7000p-driver to do that and it
    creates a separate device-entry in dib0700-device to use those changes
    on hardware which is using the DiB7770.

    Signed-off-by: Olivier Grenie
    Signed-off-by: Patrick Boettcher
    Signed-off-by: Mauro Carvalho Chehab

    Olivier Grenie
     
  • These keys are found on remote bundled with
    Toshiba Qosmio F50-10q.

    Found and tested by, Sami R

    Signed-off-by: Maxim Levitsky
    Acked-by: Jarod Wilson
    Signed-off-by: Mauro Carvalho Chehab

    Maxim Levitsky
     
  • The logic in ir_timer_keyup was inverted.

    In case that values aren't equal,
    the meaning of the time_is_after_eq_jiffies(ir->keyup_jiffies) is that
    ir->keyup_jiffies is after the the jiffies or equally that
    that jiffies are before the the ir->keyup_jiffies which is
    exactly the situation we want to avoid (that the timeout is in the future)
    Confusing Eh?

    Signed-off-by: Maxim Levitsky
    Acked-by: Jarod Wilson
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Maxim Levitsky
     
  • Due to typo lirc bridge enabled wrong capability.

    Signed-off-by: Maxim Levitsky
    Acked-by: Jarod Wilson
    Signed-off-by: Mauro Carvalho Chehab

    Maxim Levitsky
     
  • As reported by Anton Blanchard , double IR events on
    2.6.36-rc2 and a DViCO FusionHDTV DVB-T Dual Express are happening:

    [ 1351.032084] ir_keydown: i2c IR (FusionHDTV): key down event, key 0x0067, scancode 0x0051
    [ 1351.281284] ir_keyup: keyup key 0x0067

    ie one key down event and one key up event 250ms later.

    So, we need to increase the repeat timeout, to avoid this bug to hit.

    As we're doing it at core, this fix is not needed anymore at dib0700 driver.

    Thanks-to: Anton Blanchard
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • As reported by Carlos, Prolink Pixelview SBTVD Hybrid is based on
    Conexant cx231xx + Fujitsu 86A20S demodulator. However, both shares
    the same USB ID. So, we need to use USB bcdDevice, in order to
    properly discover what's the board.

    We know for sure that bcd 0x100 is used for a dib0700 device, while
    bcd 0x4001 is used for a cx23102 device. This patch reserves two ranges,
    the first one from 0x0000-0x3f00 for dib0700, and the second from
    0x4000-0x4fff for cx231xx devices.

    This may need fixes in the future, as we get access to other devices.

    Thanks-to: Carlos Americo Domiciano
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Reported in lirc sf.net tracker and on lirc mailing list

    Signed-off-by: Jarod Wilson
    Signed-off-by: Mauro Carvalho Chehab

    Jarod Wilson
     
  • When plugging some webcams on ARM, the system crashes.
    This is because we alloc buffer for an urb through usb_buffer_alloc,
    the alloced buffer is already in DMA coherent region, so we should
    set the flag of this urb to URB_NO_TRANSFER_DMA_MAP, otherwise when
    we submit this urb, the hcd core will handle this address as an
    non-DMA address and call dma_map_single/sg to map it. On arm
    architecture, dma_map_single a DMA coherent address will be catched
    by a BUG_ON().

    Signed-off-by: Jason Wang
    Signed-off-by: Jean-François Moine
    Cc: stable@kernel.org
    Signed-off-by: Mauro Carvalho Chehab

    Jason Wang
     
  • Some time a go our customers wrote me about problem with our TV card
    BeholdTV Columbus. It's PCMCIA TV card for notebook.
    As I understand v4l has some regression with autodetect address of tuners.
    I can set incorrect I2C address and had report about detect tuner. No any TV of course.
    When I set correct tuner type and I2C address of the tuners all works well.

    Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov
    Signed-off-by: Mauro Carvalho Chehab

    Dmitri Belimov