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

Commit f653da34 authored by Josh Wu's avatar Josh Wu Committed by Mauro Carvalho Chehab
Browse files

[media] atmel-isi: move configure_geometry() to start_streaming()



As in set_fmt() function we only need to know which format is been set,
we don't need to access the ISI hardware in this moment.

So move the configure_geometry(), which access the ISI hardware, to
start_streaming() will make code more consistent and simpler.

Signed-off-by: default avatarJosh Wu <josh.wu@atmel.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent ad5f9d19
Loading
Loading
Loading
Loading
+5 −12
Original line number Diff line number Diff line
@@ -390,6 +390,11 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
	/* Disable all interrupts */
	isi_writel(isi, ISI_INTDIS, (u32)~0UL);

	ret = configure_geometry(isi, icd->user_width, icd->user_height,
				icd->current_fmt->code);
	if (ret < 0)
		return ret;

	spin_lock_irq(&isi->lock);
	/* Clear any pending interrupt */
	isi_readl(isi, ISI_STATUS);
@@ -477,8 +482,6 @@ static int isi_camera_init_videobuf(struct vb2_queue *q,
static int isi_camera_set_fmt(struct soc_camera_device *icd,
			      struct v4l2_format *f)
{
	struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
	struct atmel_isi *isi = ici->priv;
	struct v4l2_subdev *sd = soc_camera_to_subdev(icd);
	const struct soc_camera_format_xlate *xlate;
	struct v4l2_pix_format *pix = &f->fmt.pix;
@@ -511,16 +514,6 @@ static int isi_camera_set_fmt(struct soc_camera_device *icd,
	if (mf->code != xlate->code)
		return -EINVAL;

	/* Enable PM and peripheral clock before operate isi registers */
	pm_runtime_get_sync(ici->v4l2_dev.dev);

	ret = configure_geometry(isi, pix->width, pix->height, xlate->code);

	pm_runtime_put(ici->v4l2_dev.dev);

	if (ret < 0)
		return ret;

	pix->width		= mf->width;
	pix->height		= mf->height;
	pix->field		= mf->field;