Currently macro to_iss_buffer converts vb2_v4l2_buffer into iss_buffer.
But the applications needs the conversion from vb2_buffer to iss_bufffer.
So they need to convert vb2_buffer into vb2_v4l2_buffer first and then
vb2_v4l2_buffer into iss_buffer. Redefining to_iss_buffer to convert
from vb2_buffer into iss_buffer directly helps the situation.
This patch redefines the former to_iss_buffer macro into an inline
function to perform above task and uses it in corresponding function.
Signed-off-by: Himadri Pandya <himadri18.07@gmail.com>
---
Changes in V2:
- Merge two patches into one
- Optimise the new definition of to_iss_buffer
---
drivers/staging/media/omap4iss/iss_video.c | 3 +--
drivers/staging/media/omap4iss/iss_video.h | 5 ++++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/media/omap4iss/iss_video.c b/drivers/staging/media/omap4iss/iss_video.c
index c2c5a9cd8642..c99611deed6b 100644
--- a/drivers/staging/media/omap4iss/iss_video.c
+++ b/drivers/staging/media/omap4iss/iss_video.c
@@ -318,8 +318,7 @@ static int iss_video_queue_setup(struct vb2_queue *vq,
static void iss_video_buf_cleanup(struct vb2_buffer *vb)
{
- struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
- struct iss_buffer *buffer = container_of(vbuf, struct iss_buffer, vb);
+ struct iss_buffer *buffer = to_iss_buffer(vb);
if (buffer->iss_addr)
buffer->iss_addr = 0;
diff --git a/drivers/staging/media/omap4iss/iss_video.h b/drivers/staging/media/omap4iss/iss_video.h
index f22489edb562..f5018f4742fc 100644
--- a/drivers/staging/media/omap4iss/iss_video.h
+++ b/drivers/staging/media/omap4iss/iss_video.h
@@ -118,7 +118,10 @@ struct iss_buffer {
dma_addr_t iss_addr;
};
-#define to_iss_buffer(buf) container_of(buf, struct iss_buffer, vb)
+static inline struct iss_buffer *to_iss_buffer(struct vb2_buffer *vb)
+{
+ return container_of(vb, struct iss_buffer, vb.vb2_buf);
+}
enum iss_video_dmaqueue_flags {
/* Set if DMA queue becomes empty when ISS_PIPELINE_STREAM_CONTINUOUS */
--
2.17.1