Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7409b713 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'v4l_for_linus' of git://linuxtv.org/mchehab/for_linus

* 'v4l_for_linus' of git://linuxtv.org/mchehab/for_linus:
  [media] omap3isp: Fix build error in ispccdc.c
  [media] uvcvideo: Fix crash when linking entities
  [media] v4l: Make sure we hold a reference to the v4l2_device before using it
  [media] v4l: Fix use-after-free case in v4l2_device_release
  [media] uvcvideo: Set alternate setting 0 on resume if the bus has been reset
  [media] OMAP_VOUT: Fix build break caused by update_mode removal in DSS2
parents 0ecdb12a e74d83aa
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -2194,19 +2194,6 @@ static int __init omap_vout_probe(struct platform_device *pdev)
					"'%s' Display already enabled\n",
					def_display->name);
			}
			/* set the update mode */
			if (def_display->caps &
					OMAP_DSS_DISPLAY_CAP_MANUAL_UPDATE) {
				if (dssdrv->enable_te)
					dssdrv->enable_te(def_display, 0);
				if (dssdrv->set_update_mode)
					dssdrv->set_update_mode(def_display,
							OMAP_DSS_UPDATE_MANUAL);
			} else {
				if (dssdrv->set_update_mode)
					dssdrv->set_update_mode(def_display,
							OMAP_DSS_UPDATE_AUTO);
			}
		}
	}

+1 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include <linux/dma-mapping.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <media/v4l2-event.h>

#include "isp.h"
+1 −1
Original line number Diff line number Diff line
@@ -1961,7 +1961,7 @@ static int __uvc_resume(struct usb_interface *intf, int reset)

	list_for_each_entry(stream, &dev->streams, list) {
		if (stream->intf == intf)
			return uvc_video_resume(stream);
			return uvc_video_resume(stream, reset);
	}

	uvc_trace(UVC_TRACE_SUSPEND, "Resume: video streaming USB interface "
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ static int uvc_mc_register_entity(struct uvc_video_chain *chain,
		if (remote == NULL)
			return -EINVAL;

		source = (UVC_ENTITY_TYPE(remote) != UVC_TT_STREAMING)
		source = (UVC_ENTITY_TYPE(remote) == UVC_TT_STREAMING)
		       ? (remote->vdev ? &remote->vdev->entity : NULL)
		       : &remote->subdev.entity;
		if (source == NULL)
+9 −1
Original line number Diff line number Diff line
@@ -1104,10 +1104,18 @@ int uvc_video_suspend(struct uvc_streaming *stream)
 * buffers, making sure userspace applications are notified of the problem
 * instead of waiting forever.
 */
int uvc_video_resume(struct uvc_streaming *stream)
int uvc_video_resume(struct uvc_streaming *stream, int reset)
{
	int ret;

	/* If the bus has been reset on resume, set the alternate setting to 0.
	 * This should be the default value, but some devices crash or otherwise
	 * misbehave if they don't receive a SET_INTERFACE request before any
	 * other video control request.
	 */
	if (reset)
		usb_set_interface(stream->dev->udev, stream->intfnum, 0);

	stream->frozen = 0;

	ret = uvc_commit_video(stream, &stream->ctrl);
Loading