Merge tag 'media/v4.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 9 Mar 2017 23:50:56 +0000 (15:50 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 9 Mar 2017 23:50:56 +0000 (15:50 -0800)
Pull media fixes from Mauro Carvalho Chehab:
 "Media regression fixes:

   - serial_ir: fix a Kernel crash during boot on Kernel 4.11-rc1, due
     to an IRQ code called too early

   - other IR regression fixes at lirc and at the raw IR decoding

   - a deadlock fix at the RC nuvoton driver

   - fix another issue with DMA on stack at dw2102 driver

  There's an extra patch there that change a driver interface for the
  SoC VSP1 driver, with is shared between the DRM and V4L2 driver. The
  patch itself is trivial, and was acked by David Arlie"

* tag 'media/v4.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  [media] v4l: vsp1: Adapt vsp1_du_setup_lif() interface to use a structure
  [media] dw2102: don't do DMA on stack
  [media] rc: protocol is not set on register for raw IR devices
  [media] rc: raw decoder for keymap protocol is not loaded on register
  [media] rc: nuvoton: fix deadlock in nvt_write_wakeup_codes
  [media] lirc: fix dead lock between open and wakeup_filter
  [media] serial_ir: ensure we're ready to receive interrupts

1  2 
drivers/gpu/drm/rcar-du/rcar_du_vsp.c
drivers/media/rc/lirc_dev.c

index b5bfbe50bd87167a7b28f528a74a034b1f68a738,22da2d671297f3ad936a3963d138867fa4c27f28..b0ff304ce3dc4a9ac18f359a73498efede18cbd4
@@@ -32,6 -32,10 +32,10 @@@ void rcar_du_vsp_enable(struct rcar_du_
  {
        const struct drm_display_mode *mode = &crtc->crtc.state->adjusted_mode;
        struct rcar_du_device *rcdu = crtc->group->dev;
+       struct vsp1_du_lif_config cfg = {
+               .width = mode->hdisplay,
+               .height = mode->vdisplay,
+       };
        struct rcar_du_plane_state state = {
                .state = {
                        .crtc = &crtc->crtc,
         */
        crtc->group->need_restart = true;
  
-       vsp1_du_setup_lif(crtc->vsp->vsp, mode->hdisplay, mode->vdisplay);
+       vsp1_du_setup_lif(crtc->vsp->vsp, &cfg);
  }
  
  void rcar_du_vsp_disable(struct rcar_du_crtc *crtc)
  {
-       vsp1_du_setup_lif(crtc->vsp->vsp, 0, 0);
+       vsp1_du_setup_lif(crtc->vsp->vsp, NULL);
  }
  
  void rcar_du_vsp_atomic_begin(struct rcar_du_crtc *crtc)
@@@ -201,10 -205,10 +205,10 @@@ static int rcar_du_vsp_plane_atomic_che
                return -EINVAL;
        }
  
 -      rstate->format = rcar_du_format_info(state->fb->pixel_format);
 +      rstate->format = rcar_du_format_info(state->fb->format->format);
        if (rstate->format == NULL) {
                dev_dbg(rcdu->dev, "%s: unsupported format %08x\n", __func__,
 -                      state->fb->pixel_format);
 +                      state->fb->format->format);
                return -EINVAL;
        }
  
index 393dccaabdd02ac83744faf049ef1a08675fe7ae,4630f3e6753889ab344c7a0b1b61903112f95cc1..1688893a65bb57d2d2ff0d667f82d27fbd88dc37
@@@ -19,7 -19,7 +19,7 @@@
  
  #include <linux/module.h>
  #include <linux/kernel.h>
 -#include <linux/sched.h>
 +#include <linux/sched/signal.h>
  #include <linux/errno.h>
  #include <linux/ioctl.h>
  #include <linux/fs.h>
@@@ -436,6 -436,8 +436,8 @@@ int lirc_dev_fop_open(struct inode *ino
                return -ERESTARTSYS;
  
        ir = irctls[iminor(inode)];
+       mutex_unlock(&lirc_dev_lock);
        if (!ir) {
                retval = -ENODEV;
                goto error;
        }
  
  error:
-       mutex_unlock(&lirc_dev_lock);
        nonseekable_open(inode, file);
  
        return retval;