Merge tag 'media/v4.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 29 Oct 2018 21:29:58 +0000 (14:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 29 Oct 2018 21:29:58 +0000 (14:29 -0700)
Pull media updates from Mauro Carvalho Chehab:

 - new dvb frontend driver: lnbh29

 - new sensor drivers: imx319 and imx 355

 - some old soc_camera driver renames to avoid conflict with new
   drivers

 - new i.MX Pixel Pipeline (PXP) mem-to-mem platform driver

 - a new V4L2 frontend for the FWHT codec

 - several other improvements, bug fixes, code cleanups, etc

* tag 'media/v4.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (289 commits)
  media: rename soc_camera I2C drivers
  media: cec: forgot to cancel delayed work
  media: vivid: Support 480p for webcam capture
  media: v4l2-tpg: fix kernel oops when enabling HFLIP and OSD
  media: vivid: Add 16-bit bayer to format list
  media: v4l2-tpg-core: Add 16-bit bayer
  media: pvrusb2: replace `printk` with `pr_*`
  media: venus: vdec: fix decoded data size
  media: cx231xx: fix potential sign-extension overflow on large shift
  media: dt-bindings: media: rcar_vin: add device tree support for r8a7744
  media: isif: fix a NULL pointer dereference bug
  media: exynos4-is: make const array config_ids static
  media: cx23885: make const array addr_list static
  media: ivtv: make const array addr_list static
  media: bttv-input: make const array addr_list static
  media: cx18: Don't check for address of video_dev
  media: dw9807-vcm: Fix probe error handling
  media: dw9714: Remove useless error message
  media: dw9714: Fix error handling in probe function
  media: cec: name for RC passthrough device does not need 'RC for'
  ...

1  2 
MAINTAINERS
drivers/media/platform/Kconfig
drivers/media/usb/em28xx/em28xx-audio.c
drivers/media/usb/tm6000/tm6000-video.c
drivers/staging/media/davinci_vpfe/dm365_ipipe.c
drivers/staging/media/davinci_vpfe/dm365_resizer.c
drivers/staging/media/imx/imx-media-dev.c
drivers/staging/media/imx/imx-media-of.c
fs/compat_ioctl.c

diff --cc MAINTAINERS
Simple merge
Simple merge
index 3f48f5ceb6ea97c184a06be1a025b444a6d8edbc,481840195071027c43a372080f18e52d257dec73..026b9cbe581d49e7bcef260ae875eb63f5eb2915
@@@ -80,52 -47,34 +47,43 @@@ int imx_media_add_async_subdev(struct i
        struct imx_media_async_subdev *imxasd;
        struct v4l2_async_subdev *asd;
        const char *devname = NULL;
-       int ret = 0;
-       mutex_lock(&imxmd->mutex);
+       int ret;
  
-       if (pdev)
+       if (fwnode) {
+               asd = v4l2_async_notifier_add_fwnode_subdev(
+                       &imxmd->notifier, fwnode, sizeof(*imxasd));
+       } else {
                devname = dev_name(&pdev->dev);
-       /* return -EEXIST if this asd already added */
-       if (find_async_subdev(imxmd, fwnode, devname)) {
-               if (np)
-                       dev_dbg(imxmd->md.dev, "%s: already added %pOFn\n",
-                       __func__, np);
-               else
-                       dev_dbg(imxmd->md.dev, "%s: already added %s\n",
-                       __func__, devname);
-               ret = -EEXIST;
-               goto out;
+               asd = v4l2_async_notifier_add_devname_subdev(
+                       &imxmd->notifier, devname, sizeof(*imxasd));
        }
  
-       imxasd = devm_kzalloc(imxmd->md.dev, sizeof(*imxasd), GFP_KERNEL);
-       if (!imxasd) {
-               ret = -ENOMEM;
-               goto out;
+       if (IS_ERR(asd)) {
+               ret = PTR_ERR(asd);
 -              if (ret == -EEXIST)
 -                      dev_dbg(imxmd->md.dev, "%s: already added %s\n",
 -                              __func__, np ? np->name : devname);
++              if (ret == -EEXIST) {
++                      if (np)
++                              dev_dbg(imxmd->md.dev, "%s: already added %pOFn\n",
++                                      __func__, np);
++                      else
++                              dev_dbg(imxmd->md.dev, "%s: already added %s\n",
++                                      __func__, devname);
++              }
+               return ret;
        }
-       asd = &imxasd->asd;
  
-       if (fwnode) {
-               asd->match_type = V4L2_ASYNC_MATCH_FWNODE;
-               asd->match.fwnode = fwnode;
+       imxasd = to_imx_media_asd(asd);
+       if (devname)
+               imxasd->pdev = pdev;
 -      dev_dbg(imxmd->md.dev, "%s: added %s, match type %s\n",
 -              __func__, np ? np->name : devname, np ? "FWNODE" : "DEVNAME");
++      if (np)
 +              dev_dbg(imxmd->md.dev, "%s: added %pOFn, match type FWNODE\n",
 +                      __func__, np);
-       } else {
-               asd->match_type = V4L2_ASYNC_MATCH_DEVNAME;
-               asd->match.device_name = devname;
-               imxasd->pdev = pdev;
++      else
 +              dev_dbg(imxmd->md.dev, "%s: added %s, match type DEVNAME\n",
 +                      __func__, devname);
-       }
-       list_add_tail(&imxasd->list, &imxmd->asd_list);
-       imxmd->subdev_notifier.num_subdevs++;
  
- out:
-       mutex_unlock(&imxmd->mutex);
-       return ret;
+       return 0;
  }
  
  /*
index 163437e421c5e5c32a3682a916c912d70526fe4f,1c9175433ba638ba9fae288c15768a49454a315c..b2e840f96c50d159e5dc0ade4ffb7b595b4c240e
  #include <video/imx-ipu-v3.h>
  #include "imx-media.h"
  
- static int of_get_port_count(const struct device_node *np)
+ static int of_add_csi(struct imx_media_dev *imxmd, struct device_node *csi_np)
  {
-       struct device_node *ports, *child;
-       int num = 0;
+       int ret;
  
-       /* check if this node has a ports subnode */
-       ports = of_get_child_by_name(np, "ports");
-       if (ports)
-               np = ports;
-       for_each_child_of_node(np, child)
-               if (of_node_cmp(child->name, "port") == 0)
-                       num++;
-       of_node_put(ports);
-       return num;
- }
- /*
-  * find the remote device node given local endpoint node
-  */
- static bool of_get_remote(struct device_node *epnode,
-                         struct device_node **remote_node)
- {
-       struct device_node *rp, *rpp;
-       struct device_node *remote;
-       bool is_csi_port;
-       rp = of_graph_get_remote_port(epnode);
-       rpp = of_graph_get_remote_port_parent(epnode);
-       if (of_device_is_compatible(rpp, "fsl,imx6q-ipu")) {
-               /* the remote is one of the CSI ports */
-               remote = rp;
-               of_node_put(rpp);
-               is_csi_port = true;
-       } else {
-               remote = rpp;
-               of_node_put(rp);
-               is_csi_port = false;
-       }
-       if (!of_device_is_available(remote)) {
-               of_node_put(remote);
-               *remote_node = NULL;
-       } else {
-               *remote_node = remote;
-       }
-       return is_csi_port;
- }
- static int
- of_parse_subdev(struct imx_media_dev *imxmd, struct device_node *sd_np,
-               bool is_csi_port)
- {
-       int i, num_ports, ret;
-       if (!of_device_is_available(sd_np)) {
+       if (!of_device_is_available(csi_np)) {
 -              dev_dbg(imxmd->md.dev, "%s: %s not enabled\n", __func__,
 -                      csi_np->name);
 +              dev_dbg(imxmd->md.dev, "%s: %pOFn not enabled\n", __func__,
-                       sd_np);
++                      csi_np);
                /* unavailable is not an error */
                return 0;
        }
Simple merge