This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: atomisp: Add ia_css_frame_pad_width() helper function
Author:  Hans de Goede <[email protected]>
Date:    Mon May 29 11:37:33 2023 +0100

Factor the code to go from width to a properly aligned pitch out of
ia_css_frame_info_set_width().

This is a preparation patch to fix try_fmt() calls returning a bogus
bytesperline value.

Link: https://lore.kernel.org/r/[email protected]

Signed-off-by: Hans de Goede <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 .../pci/runtime/frame/interface/ia_css_frame.h     |  2 +
 .../media/atomisp/pci/runtime/frame/src/frame.c    | 49 +++++++++++++---------
 2 files changed, 32 insertions(+), 19 deletions(-)

---

diff --git 
a/drivers/staging/media/atomisp/pci/runtime/frame/interface/ia_css_frame.h 
b/drivers/staging/media/atomisp/pci/runtime/frame/interface/ia_css_frame.h
index 700070c58eda..90c17884968b 100644
--- a/drivers/staging/media/atomisp/pci/runtime/frame/interface/ia_css_frame.h
+++ b/drivers/staging/media/atomisp/pci/runtime/frame/interface/ia_css_frame.h
@@ -138,4 +138,6 @@ bool ia_css_frame_is_same_type(
 int ia_css_dma_configure_from_info(struct dma_port_config *config,
                                   const struct ia_css_frame_info *info);
 
+unsigned int ia_css_frame_pad_width(unsigned int width, enum 
ia_css_frame_format format);
+
 #endif /* __IA_CSS_FRAME_H__ */
diff --git a/drivers/staging/media/atomisp/pci/runtime/frame/src/frame.c 
b/drivers/staging/media/atomisp/pci/runtime/frame/src/frame.c
index 1e374ae848e3..2d7fddb114f6 100644
--- a/drivers/staging/media/atomisp/pci/runtime/frame/src/frame.c
+++ b/drivers/staging/media/atomisp/pci/runtime/frame/src/frame.c
@@ -269,6 +269,34 @@ int ia_css_frame_init_planes(struct ia_css_frame *frame)
        return 0;
 }
 
+unsigned int ia_css_frame_pad_width(unsigned int width, enum 
ia_css_frame_format format)
+{
+       switch (format) {
+       /*
+        * Frames with a U and V plane of 8 bits per pixel need to have
+        * all planes aligned, this means double the alignment for the
+        * Y plane if the horizontal decimation is 2.
+        */
+       case IA_CSS_FRAME_FORMAT_YUV420:
+       case IA_CSS_FRAME_FORMAT_YV12:
+       case IA_CSS_FRAME_FORMAT_NV12:
+       case IA_CSS_FRAME_FORMAT_NV21:
+       case IA_CSS_FRAME_FORMAT_BINARY_8:
+       case IA_CSS_FRAME_FORMAT_YUV_LINE:
+               return CEIL_MUL(width, 2 * HIVE_ISP_DDR_WORD_BYTES);
+
+       case IA_CSS_FRAME_FORMAT_NV12_TILEY:
+               return CEIL_MUL(width, NV12_TILEY_TILE_WIDTH);
+
+       case IA_CSS_FRAME_FORMAT_RAW:
+       case IA_CSS_FRAME_FORMAT_RAW_PACKED:
+               return CEIL_MUL(width, 2 * ISP_VEC_NELEMS);
+
+       default:
+               return CEIL_MUL(width, HIVE_ISP_DDR_WORD_BYTES);
+       }
+}
+
 void ia_css_frame_info_set_width(struct ia_css_frame_info *info,
                                 unsigned int width,
                                 unsigned int min_padded_width)
@@ -285,25 +313,8 @@ void ia_css_frame_info_set_width(struct ia_css_frame_info 
*info,
        align = max(min_padded_width, width);
 
        info->res.width = width;
-       /* frames with a U and V plane of 8 bits per pixel need to have
-          all planes aligned, this means double the alignment for the
-          Y plane if the horizontal decimation is 2. */
-       if (info->format == IA_CSS_FRAME_FORMAT_YUV420 ||
-           info->format == IA_CSS_FRAME_FORMAT_YV12 ||
-           info->format == IA_CSS_FRAME_FORMAT_NV12 ||
-           info->format == IA_CSS_FRAME_FORMAT_NV21 ||
-           info->format == IA_CSS_FRAME_FORMAT_BINARY_8 ||
-           info->format == IA_CSS_FRAME_FORMAT_YUV_LINE)
-               info->padded_width =
-                   CEIL_MUL(align, 2 * HIVE_ISP_DDR_WORD_BYTES);
-       else if (info->format == IA_CSS_FRAME_FORMAT_NV12_TILEY)
-               info->padded_width = CEIL_MUL(align, NV12_TILEY_TILE_WIDTH);
-       else if (info->format == IA_CSS_FRAME_FORMAT_RAW ||
-                info->format == IA_CSS_FRAME_FORMAT_RAW_PACKED)
-               info->padded_width = CEIL_MUL(align, 2 * ISP_VEC_NELEMS);
-       else {
-               info->padded_width = CEIL_MUL(align, HIVE_ISP_DDR_WORD_BYTES);
-       }
+       info->padded_width = ia_css_frame_pad_width(align, info->format);
+
        IA_CSS_LEAVE_PRIVATE("");
 }
 

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to