On Wed, 3 Apr, 2019, 9:08 PM Himadri Pandya, <himadri18.07@gmail.com> wrote:
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

Please let me know if the patch needs any further improvements.

Thank you.

- Himadri