Commit d5048c9a authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mauro Carvalho Chehab
Browse files

[media] m5mols: Change the end of frame v4l2_subdev notification id



Change the v4l2_device notifications id to S5P_FIMC_TX_END_NOTIFY.

Moreover, when frame capture fails, send an 'end of frame' notification
with size set to 0 to let the host driver return a buffer back to the
user and prevent applications waiting forever on DQBUF.

The notification is needed only for the s5p-fimc driver.

Acked-by: default avatarHeungJun Kim <riverful.kim@samsung.com>
Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 92e93a1f
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line

/*
/*
 * The Capture code for Fujitsu M-5MOLS ISP
 * The Capture code for Fujitsu M-5MOLS ISP
 *
 *
@@ -25,6 +26,7 @@
#include <media/v4l2-device.h>
#include <media/v4l2-device.h>
#include <media/v4l2-subdev.h>
#include <media/v4l2-subdev.h>
#include <media/m5mols.h>
#include <media/m5mols.h>
#include <media/s5p_fimc.h>


#include "m5mols.h"
#include "m5mols.h"
#include "m5mols_reg.h"
#include "m5mols_reg.h"
@@ -138,13 +140,20 @@ int m5mols_start_capture(struct m5mols_info *info)
	if (!ret)
	if (!ret)
		ret = m5mols_write(sd, CAPC_START, REG_CAP_START_MAIN);
		ret = m5mols_write(sd, CAPC_START, REG_CAP_START_MAIN);
	if (!ret) {
	if (!ret) {
		bool captured = false;
		unsigned int size;

		/* Wait for the capture completion interrupt */
		/* Wait for the capture completion interrupt */
		ret = m5mols_wait_interrupt(sd, REG_INT_CAPTURE, 2000);
		ret = m5mols_wait_interrupt(sd, REG_INT_CAPTURE, 2000);
		if (!ret) {
		if (!ret) {
			captured = true;
			ret = m5mols_capture_info(info);
			ret = m5mols_capture_info(info);
			if (!ret)
				v4l2_subdev_notify(sd, 0, &info->cap.total);
		}
		}
		size = captured ? info->cap.main : 0;
		v4l2_dbg(1, m5mols_debug, sd, "%s: size: %d, thumb.: %d B\n",
			 __func__, size, info->cap.thumb);

		v4l2_subdev_notify(sd, S5P_FIMC_TX_END_NOTIFY, &size);
	}
	}


	return ret;
	return ret;