Unverified Commit ac0b92a9 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!15662 media: stk1160: If start stream fails, return buffers with VB2_BUF_STATE_QUEUED

parents 5b068206 01d444ff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -413,7 +413,7 @@ static void stk1160_disconnect(struct usb_interface *interface)
	/* Here is the only place where isoc get released */
	stk1160_uninit_isoc(dev);

	stk1160_clear_queue(dev);
	stk1160_clear_queue(dev, VB2_BUF_STATE_ERROR);

	video_unregister_device(&dev->vdev);
	v4l2_device_disconnect(&dev->v4l2_dev);
+5 −5
Original line number Diff line number Diff line
@@ -269,7 +269,7 @@ static int stk1160_start_streaming(struct stk1160 *dev)
	stk1160_uninit_isoc(dev);
out_stop_hw:
	usb_set_interface(dev->udev, 0, 0);
	stk1160_clear_queue(dev);
	stk1160_clear_queue(dev, VB2_BUF_STATE_QUEUED);

	mutex_unlock(&dev->v4l_lock);

@@ -317,7 +317,7 @@ static int stk1160_stop_streaming(struct stk1160 *dev)

	stk1160_stop_hw(dev);

	stk1160_clear_queue(dev);
	stk1160_clear_queue(dev, VB2_BUF_STATE_ERROR);

	stk1160_dbg("streaming stopped\n");

@@ -762,7 +762,7 @@ static const struct video_device v4l_template = {
/********************************************************************/

/* Must be called with both v4l_lock and vb_queue_lock hold */
void stk1160_clear_queue(struct stk1160 *dev)
void stk1160_clear_queue(struct stk1160 *dev, enum vb2_buffer_state vb2_state)
{
	struct stk1160_buffer *buf;
	unsigned long flags;
@@ -773,7 +773,7 @@ void stk1160_clear_queue(struct stk1160 *dev)
		buf = list_first_entry(&dev->avail_bufs,
			struct stk1160_buffer, list);
		list_del(&buf->list);
		vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
		vb2_buffer_done(&buf->vb.vb2_buf, vb2_state);
		stk1160_dbg("buffer [%p/%d] aborted\n",
			    buf, buf->vb.vb2_buf.index);
	}
@@ -783,7 +783,7 @@ void stk1160_clear_queue(struct stk1160 *dev)
		buf = dev->isoc_ctl.buf;
		dev->isoc_ctl.buf = NULL;

		vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
		vb2_buffer_done(&buf->vb.vb2_buf, vb2_state);
		stk1160_dbg("buffer [%p/%d] aborted\n",
			    buf, buf->vb.vb2_buf.index);
	}
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ struct regval {
int stk1160_vb2_setup(struct stk1160 *dev);
int stk1160_video_register(struct stk1160 *dev);
void stk1160_video_unregister(struct stk1160 *dev);
void stk1160_clear_queue(struct stk1160 *dev);
void stk1160_clear_queue(struct stk1160 *dev, enum vb2_buffer_state vb2_state);

/* Provided by stk1160-video.c */
int stk1160_alloc_isoc(struct stk1160 *dev);