All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] media: i.MX27 camera: Clean up series.
@ 2012-02-13 13:51 Javier Martin
  2012-02-13 13:51 ` [PATCH 1/6] media: i.MX27 camera: Remove goto from mx2_videobuf_queue() Javier Martin
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Javier Martin @ 2012-02-13 13:51 UTC (permalink / raw)
  To: linux-media; +Cc: g.liakhovetski, mchehab, s.hauer

Hi Guennadi,
This is the clean up series I promised to send this week. This has to be
applied on top of my previous patches.

These are already discussed issues so I don't think you have any concerns
with them.

While I wait for your confirmation, I'm going to prepare a new patch in order
to provide video resizing support.

[PATCH 1/6] media: i.MX27 camera: Remove goto from mx2_videobuf_queue().
[PATCH 2/6] media: i.MX27 camera: Use list_first_entry() whenever possible.
[PATCH 3/6] media: i.MX27 camera: Use spin_lock() inside the IRQ handler.
[PATCH 4/6] media: i.MX27 camera: return IRQ_NONE if no IRQ status bit is set.
[PATCH 5/6] media: i.MX27 camera: fix compilation warning.
[PATCH 6/6] media: i.MX27 camera:  more efficient discard buffer handling.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/6] media: i.MX27 camera: Remove goto from mx2_videobuf_queue().
  2012-02-13 13:51 [PATCH 0/6] media: i.MX27 camera: Clean up series Javier Martin
@ 2012-02-13 13:51 ` Javier Martin
  2012-02-13 13:51 ` [PATCH 2/6] media: i.MX27 camera: Use list_first_entry() whenever possible Javier Martin
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Javier Martin @ 2012-02-13 13:51 UTC (permalink / raw)
  To: linux-media; +Cc: g.liakhovetski, mchehab, s.hauer, Javier Martin


Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
---
 drivers/media/video/mx2_camera.c |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c
index e70d26f..1f046a3 100644
--- a/drivers/media/video/mx2_camera.c
+++ b/drivers/media/video/mx2_camera.c
@@ -580,9 +580,7 @@ static void mx2_videobuf_queue(struct vb2_buffer *vb)
 	buf->state = MX2_STATE_QUEUED;
 	list_add_tail(&buf->queue, &pcdev->capture);
 
-	if (mx27_camera_emma(pcdev)) {
-		goto out;
-	} else { /* cpu_is_mx25() */
+	if (cpu_is_mx25()) {
 		u32 csicr3, dma_inten = 0;
 
 		if (pcdev->fb1_active == NULL) {
@@ -618,7 +616,6 @@ static void mx2_videobuf_queue(struct vb2_buffer *vb)
 		}
 	}
 
-out:
 	spin_unlock_irqrestore(&pcdev->lock, flags);
 }
 
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/6] media: i.MX27 camera: Use list_first_entry() whenever possible.
  2012-02-13 13:51 [PATCH 0/6] media: i.MX27 camera: Clean up series Javier Martin
  2012-02-13 13:51 ` [PATCH 1/6] media: i.MX27 camera: Remove goto from mx2_videobuf_queue() Javier Martin
@ 2012-02-13 13:51 ` Javier Martin
  2012-02-13 13:51 ` [PATCH 3/6] media: i.MX27 camera: Use spin_lock() inside the IRQ handler Javier Martin
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Javier Martin @ 2012-02-13 13:51 UTC (permalink / raw)
  To: linux-media; +Cc: g.liakhovetski, mchehab, s.hauer, Javier Martin


Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
---
 drivers/media/video/mx2_camera.c |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c
index 1f046a3..13be305 100644
--- a/drivers/media/video/mx2_camera.c
+++ b/drivers/media/video/mx2_camera.c
@@ -458,7 +458,7 @@ static void mx25_camera_frame_done(struct mx2_camera_dev *pcdev, int fb,
 		buf = NULL;
 		writel(0, pcdev->base_csi + fb_reg);
 	} else {
-		buf = list_entry(pcdev->capture.next, struct mx2_buffer,
+		buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
 				queue);
 		vb = &buf->vb;
 		list_del(&buf->queue);
@@ -718,8 +718,8 @@ static int mx2_start_streaming(struct vb2_queue *q, unsigned int count)
 
 		spin_lock_irqsave(&pcdev->lock, flags);
 
-		buf = list_entry(pcdev->capture.next,
-				 struct mx2_buffer, queue);
+		buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
+				       queue);
 		buf->bufnum = 0;
 		vb = &buf->vb;
 		buf->state = MX2_STATE_ACTIVE;
@@ -728,8 +728,8 @@ static int mx2_start_streaming(struct vb2_queue *q, unsigned int count)
 		mx27_update_emma_buf(pcdev, phys, buf->bufnum);
 		list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
 
-		buf = list_entry(pcdev->capture.next,
-				 struct mx2_buffer, queue);
+		buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
+				       queue);
 		buf->bufnum = 1;
 		vb = &buf->vb;
 		buf->state = MX2_STATE_ACTIVE;
@@ -1215,8 +1215,7 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
 	struct vb2_buffer *vb;
 	unsigned long phys;
 
-	buf = list_entry(pcdev->active_bufs.next,
-			 struct mx2_buffer, queue);
+	buf = list_first_entry(&pcdev->active_bufs, struct mx2_buffer, queue);
 
 	BUG_ON(buf->bufnum != bufnum);
 
@@ -1270,8 +1269,8 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
 			return;
 		}
 
-		buf = list_entry(pcdev->discard.next,
-			struct mx2_buffer, queue);
+		buf = list_first_entry(&pcdev->discard, struct mx2_buffer,
+				       queue);
 		buf->bufnum = bufnum;
 
 		list_move_tail(pcdev->discard.next, &pcdev->active_bufs);
@@ -1279,8 +1278,7 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
 		return;
 	}
 
-	buf = list_entry(pcdev->capture.next,
-			struct mx2_buffer, queue);
+	buf = list_first_entry(&pcdev->capture, struct mx2_buffer, queue);
 
 	buf->bufnum = bufnum;
 
@@ -1309,8 +1307,8 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 	}
 
 	if (status & (1 << 7)) { /* overflow */
-		buf = list_entry(pcdev->active_bufs.next,
-			struct mx2_buffer, queue);
+		buf = list_first_entry(&pcdev->active_bufs, struct mx2_buffer,
+				       queue);
 		mx27_camera_frame_done_emma(pcdev,
 					buf->bufnum, true);
 		status &= ~(1 << 7);
@@ -1320,8 +1318,8 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 		 * Both buffers have triggered, process the one we're expecting
 		 * to first
 		 */
-		buf = list_entry(pcdev->active_bufs.next,
-			struct mx2_buffer, queue);
+		buf = list_first_entry(&pcdev->active_bufs, struct mx2_buffer,
+				       queue);
 		mx27_camera_frame_done_emma(pcdev, buf->bufnum, false);
 		status &= ~(1 << (6 - buf->bufnum)); /* mark processed */
 	} else if ((status & (1 << 6)) || (status & (1 << 4))) {
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/6] media: i.MX27 camera: Use spin_lock() inside the IRQ handler.
  2012-02-13 13:51 [PATCH 0/6] media: i.MX27 camera: Clean up series Javier Martin
  2012-02-13 13:51 ` [PATCH 1/6] media: i.MX27 camera: Remove goto from mx2_videobuf_queue() Javier Martin
  2012-02-13 13:51 ` [PATCH 2/6] media: i.MX27 camera: Use list_first_entry() whenever possible Javier Martin
@ 2012-02-13 13:51 ` Javier Martin
  2012-02-13 13:51 ` [PATCH 4/6] media: i.MX27 camera: return IRQ_NONE if no IRQ status bit is set Javier Martin
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Javier Martin @ 2012-02-13 13:51 UTC (permalink / raw)
  To: linux-media; +Cc: g.liakhovetski, mchehab, s.hauer, Javier Martin

We don't need to use spin_lock_irqsave() since there are not
any other IRQs that can race with this ISR.

Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
---
 drivers/media/video/mx2_camera.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c
index 13be305..34b43a4 100644
--- a/drivers/media/video/mx2_camera.c
+++ b/drivers/media/video/mx2_camera.c
@@ -1296,9 +1296,8 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 	struct mx2_camera_dev *pcdev = data;
 	unsigned int status = readl(pcdev->base_emma + PRP_INTRSTATUS);
 	struct mx2_buffer *buf;
-	unsigned long flags;
 
-	spin_lock_irqsave(&pcdev->lock, flags);
+	spin_lock(&pcdev->lock);
 
 	if (list_empty(&pcdev->active_bufs)) {
 		dev_warn(pcdev->dev, "%s: called while active list is empty\n",
@@ -1329,7 +1328,7 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 	}
 
 irq_ok:
-	spin_unlock_irqrestore(&pcdev->lock, flags);
+	spin_unlock(&pcdev->lock);
 	writel(status, pcdev->base_emma + PRP_INTRSTATUS);
 
 	return IRQ_HANDLED;
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/6] media: i.MX27 camera: return IRQ_NONE if no IRQ status bit is set.
  2012-02-13 13:51 [PATCH 0/6] media: i.MX27 camera: Clean up series Javier Martin
                   ` (2 preceding siblings ...)
  2012-02-13 13:51 ` [PATCH 3/6] media: i.MX27 camera: Use spin_lock() inside the IRQ handler Javier Martin
@ 2012-02-13 13:51 ` Javier Martin
  2012-02-13 13:51 ` [PATCH 5/6] media: i.MX27 camera: fix compilation warning Javier Martin
  2012-02-13 13:51 ` [PATCH 6/6] media: i.MX27 camera: more efficient discard buffer handling Javier Martin
  5 siblings, 0 replies; 9+ messages in thread
From: Javier Martin @ 2012-02-13 13:51 UTC (permalink / raw)
  To: linux-media; +Cc: g.liakhovetski, mchehab, s.hauer, Javier Martin

If active_bufs() list is empty and no IRQ status bit is set
we are probably dealing with a share IRQ. Return IRQ_NONE in
this case.

Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
---
 drivers/media/video/mx2_camera.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c
index 34b43a4..d9028f1 100644
--- a/drivers/media/video/mx2_camera.c
+++ b/drivers/media/video/mx2_camera.c
@@ -1302,7 +1302,11 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 	if (list_empty(&pcdev->active_bufs)) {
 		dev_warn(pcdev->dev, "%s: called while active list is empty\n",
 			__func__);
-		goto irq_ok;
+
+		if (!status) {
+			spin_unlock(&pcdev->lock);
+			return IRQ_NONE;
+		}
 	}
 
 	if (status & (1 << 7)) { /* overflow */
@@ -1327,7 +1331,6 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 		mx27_camera_frame_done_emma(pcdev, 1, false);
 	}
 
-irq_ok:
 	spin_unlock(&pcdev->lock);
 	writel(status, pcdev->base_emma + PRP_INTRSTATUS);
 
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 5/6] media: i.MX27 camera: fix compilation warning.
  2012-02-13 13:51 [PATCH 0/6] media: i.MX27 camera: Clean up series Javier Martin
                   ` (3 preceding siblings ...)
  2012-02-13 13:51 ` [PATCH 4/6] media: i.MX27 camera: return IRQ_NONE if no IRQ status bit is set Javier Martin
@ 2012-02-13 13:51 ` Javier Martin
  2012-02-13 14:10   ` Guennadi Liakhovetski
  2012-02-13 13:51 ` [PATCH 6/6] media: i.MX27 camera: more efficient discard buffer handling Javier Martin
  5 siblings, 1 reply; 9+ messages in thread
From: Javier Martin @ 2012-02-13 13:51 UTC (permalink / raw)
  To: linux-media; +Cc: g.liakhovetski, mchehab, s.hauer, Javier Martin


Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
---
 drivers/media/video/mx2_camera.c |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c
index d9028f1..8ccdb4a 100644
--- a/drivers/media/video/mx2_camera.c
+++ b/drivers/media/video/mx2_camera.c
@@ -1210,7 +1210,9 @@ static struct soc_camera_host_ops mx2_soc_camera_host_ops = {
 static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
 		int bufnum, bool err)
 {
+#ifdef DEBUG
 	struct mx2_fmt_cfg *prp = pcdev->emma_prp;
+#endif
 	struct mx2_buffer *buf;
 	struct vb2_buffer *vb;
 	unsigned long phys;
@@ -1232,18 +1234,16 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
 		if (prp->cfg.channel == 1) {
 			if (readl(pcdev->base_emma + PRP_DEST_RGB1_PTR +
 				4 * bufnum) != phys) {
-				dev_err(pcdev->dev, "%p != %p\n", phys,
-						readl(pcdev->base_emma +
-							PRP_DEST_RGB1_PTR +
-							4 * bufnum));
+				dev_err(pcdev->dev, "%p != %p\n", (void *)phys,
+					(void *)readl(pcdev->base_emma +
+					PRP_DEST_RGB1_PTR + 4 * bufnum));
 			}
 		} else {
 			if (readl(pcdev->base_emma + PRP_DEST_Y_PTR -
 				0x14 * bufnum) != phys) {
-				dev_err(pcdev->dev, "%p != %p\n", phys,
-						readl(pcdev->base_emma +
-							PRP_DEST_Y_PTR -
-							0x14 * bufnum));
+				dev_err(pcdev->dev, "%p != %p\n", (void *)phys,
+					(void *)readl(pcdev->base_emma +
+					PRP_DEST_Y_PTR - 0x14 * bufnum));
 			}
 		}
 #endif
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 6/6] media: i.MX27 camera:  more efficient discard buffer handling.
  2012-02-13 13:51 [PATCH 0/6] media: i.MX27 camera: Clean up series Javier Martin
                   ` (4 preceding siblings ...)
  2012-02-13 13:51 ` [PATCH 5/6] media: i.MX27 camera: fix compilation warning Javier Martin
@ 2012-02-13 13:51 ` Javier Martin
  5 siblings, 0 replies; 9+ messages in thread
From: Javier Martin @ 2012-02-13 13:51 UTC (permalink / raw)
  To: linux-media; +Cc: g.liakhovetski, mchehab, s.hauer, Javier Martin

Some elements of 'mx2_buffer' are grouped together in another
auxiliary structure. This way we don't need to have unused
'vb2_buffer' structures for both discard buffers.

Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
---
 drivers/media/video/mx2_camera.c |   77 ++++++++++++++++++++++----------------
 1 files changed, 45 insertions(+), 32 deletions(-)

diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c
index 8ccdb4a..de0a19c 100644
--- a/drivers/media/video/mx2_camera.c
+++ b/drivers/media/video/mx2_camera.c
@@ -230,15 +230,18 @@ enum mx2_buffer_state {
 	MX2_STATE_DONE,
 };
 
+struct mx2_buf_internal {
+	struct list_head	queue;
+	int			bufnum;
+	bool			discard;
+};
+
 /* buffer for one video frame */
 struct mx2_buffer {
 	/* common v4l buffer stuff -- must be first */
 	struct vb2_buffer		vb;
-	struct list_head		queue;
 	enum mx2_buffer_state		state;
-
-	int				bufnum;
-	bool				discard;
+	struct mx2_buf_internal		internal;
 };
 
 struct mx2_camera_dev {
@@ -270,7 +273,7 @@ struct mx2_camera_dev {
 
 	u32			csicr1;
 
-	struct mx2_buffer	buf_discard[2];
+	struct mx2_buf_internal buf_discard[2];
 	void			*discard_buffer;
 	dma_addr_t		discard_buffer_dma;
 	size_t			discard_size;
@@ -279,6 +282,11 @@ struct mx2_camera_dev {
 	struct vb2_alloc_ctx	*alloc_ctx;
 };
 
+static struct mx2_buffer *mx2_ibuf_to_buf(struct mx2_buf_internal *int_buf)
+{
+	return container_of(int_buf, struct mx2_buffer, internal);
+}
+
 static struct mx2_fmt_cfg mx27_emma_prp_table[] = {
 	/*
 	 * This is a generic configuration which is valid for most
@@ -459,9 +467,9 @@ static void mx25_camera_frame_done(struct mx2_camera_dev *pcdev, int fb,
 		writel(0, pcdev->base_csi + fb_reg);
 	} else {
 		buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
-				queue);
+				internal.queue);
 		vb = &buf->vb;
-		list_del(&buf->queue);
+		list_del(&buf->internal.queue);
 		buf->state = MX2_STATE_ACTIVE;
 		writel(vb2_dma_contig_plane_dma_addr(vb, 0),
 		       pcdev->base_csi + fb_reg);
@@ -578,7 +586,7 @@ static void mx2_videobuf_queue(struct vb2_buffer *vb)
 	spin_lock_irqsave(&pcdev->lock, flags);
 
 	buf->state = MX2_STATE_QUEUED;
-	list_add_tail(&buf->queue, &pcdev->capture);
+	list_add_tail(&buf->internal.queue, &pcdev->capture);
 
 	if (cpu_is_mx25()) {
 		u32 csicr3, dma_inten = 0;
@@ -596,7 +604,7 @@ static void mx2_videobuf_queue(struct vb2_buffer *vb)
 		}
 
 		if (dma_inten) {
-			list_del(&buf->queue);
+			list_del(&buf->internal.queue);
 			buf->state = MX2_STATE_ACTIVE;
 
 			csicr3 = readl(pcdev->base_csi + CSICR3);
@@ -719,23 +727,23 @@ static int mx2_start_streaming(struct vb2_queue *q, unsigned int count)
 		spin_lock_irqsave(&pcdev->lock, flags);
 
 		buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
-				       queue);
-		buf->bufnum = 0;
+				       internal.queue);
+		buf->internal.bufnum = 0;
 		vb = &buf->vb;
 		buf->state = MX2_STATE_ACTIVE;
 
 		phys = vb2_dma_contig_plane_dma_addr(vb, 0);
-		mx27_update_emma_buf(pcdev, phys, buf->bufnum);
+		mx27_update_emma_buf(pcdev, phys, buf->internal.bufnum);
 		list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
 
 		buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
-				       queue);
-		buf->bufnum = 1;
+				       internal.queue);
+		buf->internal.bufnum = 1;
 		vb = &buf->vb;
 		buf->state = MX2_STATE_ACTIVE;
 
 		phys = vb2_dma_contig_plane_dma_addr(vb, 0);
-		mx27_update_emma_buf(pcdev, phys, buf->bufnum);
+		mx27_update_emma_buf(pcdev, phys, buf->internal.bufnum);
 		list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
 
 		bytesperline = soc_mbus_bytes_per_line(icd->user_width,
@@ -1213,21 +1221,25 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
 #ifdef DEBUG
 	struct mx2_fmt_cfg *prp = pcdev->emma_prp;
 #endif
+	struct mx2_buf_internal *ibuf;
 	struct mx2_buffer *buf;
 	struct vb2_buffer *vb;
 	unsigned long phys;
 
-	buf = list_first_entry(&pcdev->active_bufs, struct mx2_buffer, queue);
+	ibuf = list_first_entry(&pcdev->active_bufs, struct mx2_buf_internal,
+			       queue);
 
-	BUG_ON(buf->bufnum != bufnum);
+	BUG_ON(ibuf->bufnum != bufnum);
 
-	if (buf->discard) {
+	if (ibuf->discard) {
 		/*
 		 * Discard buffer must not be returned to user space.
 		 * Just return it to the discard queue.
 		 */
 		list_move_tail(pcdev->active_bufs.next, &pcdev->discard);
 	} else {
+		buf = mx2_ibuf_to_buf(ibuf);
+
 		vb = &buf->vb;
 #ifdef DEBUG
 		phys = vb2_dma_contig_plane_dma_addr(vb, 0);
@@ -1251,7 +1263,7 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
 				vb2_plane_vaddr(vb, 0),
 				vb2_get_plane_payload(vb, 0));
 
-		list_del_init(&buf->queue);
+		list_del_init(&buf->internal.queue);
 		do_gettimeofday(&vb->v4l2_buf.timestamp);
 		vb->v4l2_buf.sequence = pcdev->frame_count;
 		if (err)
@@ -1269,18 +1281,19 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
 			return;
 		}
 
-		buf = list_first_entry(&pcdev->discard, struct mx2_buffer,
-				       queue);
-		buf->bufnum = bufnum;
+		ibuf = list_first_entry(&pcdev->discard,
+					struct mx2_buf_internal, queue);
+		ibuf->bufnum = bufnum;
 
 		list_move_tail(pcdev->discard.next, &pcdev->active_bufs);
 		mx27_update_emma_buf(pcdev, pcdev->discard_buffer_dma, bufnum);
 		return;
 	}
 
-	buf = list_first_entry(&pcdev->capture, struct mx2_buffer, queue);
+	buf = list_first_entry(&pcdev->capture, struct mx2_buffer,
+			       internal.queue);
 
-	buf->bufnum = bufnum;
+	buf->internal.bufnum = bufnum;
 
 	list_move_tail(pcdev->capture.next, &pcdev->active_bufs);
 
@@ -1295,7 +1308,7 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 {
 	struct mx2_camera_dev *pcdev = data;
 	unsigned int status = readl(pcdev->base_emma + PRP_INTRSTATUS);
-	struct mx2_buffer *buf;
+	struct mx2_buf_internal *ibuf;
 
 	spin_lock(&pcdev->lock);
 
@@ -1310,10 +1323,10 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 	}
 
 	if (status & (1 << 7)) { /* overflow */
-		buf = list_first_entry(&pcdev->active_bufs, struct mx2_buffer,
-				       queue);
+		ibuf = list_first_entry(&pcdev->active_bufs,
+					struct mx2_buf_internal, queue);
 		mx27_camera_frame_done_emma(pcdev,
-					buf->bufnum, true);
+					ibuf->bufnum, true);
 		status &= ~(1 << 7);
 	} else if (((status & (3 << 5)) == (3 << 5)) ||
 		((status & (3 << 3)) == (3 << 3))) {
@@ -1321,10 +1334,10 @@ static irqreturn_t mx27_camera_emma_irq(int irq_emma, void *data)
 		 * Both buffers have triggered, process the one we're expecting
 		 * to first
 		 */
-		buf = list_first_entry(&pcdev->active_bufs, struct mx2_buffer,
-				       queue);
-		mx27_camera_frame_done_emma(pcdev, buf->bufnum, false);
-		status &= ~(1 << (6 - buf->bufnum)); /* mark processed */
+		ibuf = list_first_entry(&pcdev->active_bufs,
+					struct mx2_buf_internal, queue);
+		mx27_camera_frame_done_emma(pcdev, ibuf->bufnum, false);
+		status &= ~(1 << (6 - ibuf->bufnum)); /* mark processed */
 	} else if ((status & (1 << 6)) || (status & (1 << 4))) {
 		mx27_camera_frame_done_emma(pcdev, 0, false);
 	} else if ((status & (1 << 5)) || (status & (1 << 3))) {
-- 
1.7.0.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 5/6] media: i.MX27 camera: fix compilation warning.
  2012-02-13 13:51 ` [PATCH 5/6] media: i.MX27 camera: fix compilation warning Javier Martin
@ 2012-02-13 14:10   ` Guennadi Liakhovetski
  2012-02-13 14:41     ` javier Martin
  0 siblings, 1 reply; 9+ messages in thread
From: Guennadi Liakhovetski @ 2012-02-13 14:10 UTC (permalink / raw)
  To: Javier Martin; +Cc: linux-media, mchehab, s.hauer

Hi Javier

On Mon, 13 Feb 2012, Javier Martin wrote:

> 
> Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
> ---
>  drivers/media/video/mx2_camera.c |   16 ++++++++--------
>  1 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c
> index d9028f1..8ccdb4a 100644
> --- a/drivers/media/video/mx2_camera.c
> +++ b/drivers/media/video/mx2_camera.c
> @@ -1210,7 +1210,9 @@ static struct soc_camera_host_ops mx2_soc_camera_host_ops = {
>  static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
>  		int bufnum, bool err)
>  {
> +#ifdef DEBUG
>  	struct mx2_fmt_cfg *prp = pcdev->emma_prp;
> +#endif
>  	struct mx2_buffer *buf;
>  	struct vb2_buffer *vb;
>  	unsigned long phys;
> @@ -1232,18 +1234,16 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
>  		if (prp->cfg.channel == 1) {
>  			if (readl(pcdev->base_emma + PRP_DEST_RGB1_PTR +
>  				4 * bufnum) != phys) {
> -				dev_err(pcdev->dev, "%p != %p\n", phys,
> -						readl(pcdev->base_emma +
> -							PRP_DEST_RGB1_PTR +
> -							4 * bufnum));
> +				dev_err(pcdev->dev, "%p != %p\n", (void *)phys,
> +					(void *)readl(pcdev->base_emma +
> +					PRP_DEST_RGB1_PTR + 4 * bufnum));
>  			}
>  		} else {
>  			if (readl(pcdev->base_emma + PRP_DEST_Y_PTR -
>  				0x14 * bufnum) != phys) {
> -				dev_err(pcdev->dev, "%p != %p\n", phys,
> -						readl(pcdev->base_emma +
> -							PRP_DEST_Y_PTR -
> -							0x14 * bufnum));
> +				dev_err(pcdev->dev, "%p != %p\n", (void *)phys,
> +					(void *)readl(pcdev->base_emma +
> +					PRP_DEST_Y_PTR - 0x14 * bufnum));

I think, just using %lx would be better.

>  			}
>  		}
>  #endif
> -- 
> 1.7.0.4

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 5/6] media: i.MX27 camera: fix compilation warning.
  2012-02-13 14:10   ` Guennadi Liakhovetski
@ 2012-02-13 14:41     ` javier Martin
  0 siblings, 0 replies; 9+ messages in thread
From: javier Martin @ 2012-02-13 14:41 UTC (permalink / raw)
  To: Guennadi Liakhovetski; +Cc: linux-media, mchehab, s.hauer

On 13 February 2012 15:10, Guennadi Liakhovetski <g.liakhovetski@gmx.de> wrote:
> Hi Javier
>
> On Mon, 13 Feb 2012, Javier Martin wrote:
>
>>
>> Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
>> ---
>>  drivers/media/video/mx2_camera.c |   16 ++++++++--------
>>  1 files changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/media/video/mx2_camera.c b/drivers/media/video/mx2_camera.c
>> index d9028f1..8ccdb4a 100644
>> --- a/drivers/media/video/mx2_camera.c
>> +++ b/drivers/media/video/mx2_camera.c
>> @@ -1210,7 +1210,9 @@ static struct soc_camera_host_ops mx2_soc_camera_host_ops = {
>>  static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
>>               int bufnum, bool err)
>>  {
>> +#ifdef DEBUG
>>       struct mx2_fmt_cfg *prp = pcdev->emma_prp;
>> +#endif
>>       struct mx2_buffer *buf;
>>       struct vb2_buffer *vb;
>>       unsigned long phys;
>> @@ -1232,18 +1234,16 @@ static void mx27_camera_frame_done_emma(struct mx2_camera_dev *pcdev,
>>               if (prp->cfg.channel == 1) {
>>                       if (readl(pcdev->base_emma + PRP_DEST_RGB1_PTR +
>>                               4 * bufnum) != phys) {
>> -                             dev_err(pcdev->dev, "%p != %p\n", phys,
>> -                                             readl(pcdev->base_emma +
>> -                                                     PRP_DEST_RGB1_PTR +
>> -                                                     4 * bufnum));
>> +                             dev_err(pcdev->dev, "%p != %p\n", (void *)phys,
>> +                                     (void *)readl(pcdev->base_emma +
>> +                                     PRP_DEST_RGB1_PTR + 4 * bufnum));
>>                       }
>>               } else {
>>                       if (readl(pcdev->base_emma + PRP_DEST_Y_PTR -
>>                               0x14 * bufnum) != phys) {
>> -                             dev_err(pcdev->dev, "%p != %p\n", phys,
>> -                                             readl(pcdev->base_emma +
>> -                                                     PRP_DEST_Y_PTR -
>> -                                                     0x14 * bufnum));
>> +                             dev_err(pcdev->dev, "%p != %p\n", (void *)phys,
>> +                                     (void *)readl(pcdev->base_emma +
>> +                                     PRP_DEST_Y_PTR - 0x14 * bufnum));
>
> I think, just using %lx would be better.

Fixed.
Please, see v2.

-- 
Javier Martin
Vista Silicon S.L.
CDTUC - FASE C - Oficina S-345
Avda de los Castros s/n
39005- Santander. Cantabria. Spain
+34 942 25 32 60
www.vista-silicon.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-02-13 14:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-13 13:51 [PATCH 0/6] media: i.MX27 camera: Clean up series Javier Martin
2012-02-13 13:51 ` [PATCH 1/6] media: i.MX27 camera: Remove goto from mx2_videobuf_queue() Javier Martin
2012-02-13 13:51 ` [PATCH 2/6] media: i.MX27 camera: Use list_first_entry() whenever possible Javier Martin
2012-02-13 13:51 ` [PATCH 3/6] media: i.MX27 camera: Use spin_lock() inside the IRQ handler Javier Martin
2012-02-13 13:51 ` [PATCH 4/6] media: i.MX27 camera: return IRQ_NONE if no IRQ status bit is set Javier Martin
2012-02-13 13:51 ` [PATCH 5/6] media: i.MX27 camera: fix compilation warning Javier Martin
2012-02-13 14:10   ` Guennadi Liakhovetski
2012-02-13 14:41     ` javier Martin
2012-02-13 13:51 ` [PATCH 6/6] media: i.MX27 camera: more efficient discard buffer handling Javier Martin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.