media: atomisp: Add ia_css_frame_init_from_info() function
authorHans de Goede <hdegoede@redhat.com>
Mon, 26 Sep 2022 19:43:54 +0000 (20:43 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 25 Nov 2022 08:12:17 +0000 (08:12 +0000)
Add a function to initialize (rather then alloc/create) a
ia_css_frame struct based on an ia_css_frame_info struct.

This is a preparation patch for adding videobuf2 support.

Reviewed-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/atomisp/pci/ia_css_frame_public.h
drivers/staging/media/atomisp/pci/runtime/frame/src/frame.c

index 514d933f934df422a552dff94fab10a3377c9085..5727bd1753307d901ba961e3e63ac9c60979529e 100644 (file)
@@ -220,6 +220,17 @@ ia_css_frame_allocate(struct ia_css_frame **frame,
                      unsigned int stride,
                      unsigned int raw_bit_depth);
 
+/* @brief Initialize a CSS frame structure using a frame info structure.
+ *
+ * @param      frame   The allocated frame.
+ * @param[in]  info    The frame info structure.
+ * @return             The error code.
+ *
+ * Initialize a frame using the resolution and format from a frame info struct.
+ */
+int ia_css_frame_init_from_info(struct ia_css_frame *frame,
+                               const struct ia_css_frame_info *info);
+
 /* @brief Allocate a CSS frame structure using a frame info structure.
  *
  * @param      frame   The allocated frame.
index 5a7058320ee6322adf552af8ba296962eb7ef5ac..c20a4527c842dc54539492153412263d2ba7ac14 100644 (file)
@@ -847,3 +847,19 @@ void ia_css_resolution_to_sp_resolution(
        to->width  = (uint16_t)from->width;
        to->height = (uint16_t)from->height;
 }
+
+int ia_css_frame_init_from_info(struct ia_css_frame *frame,
+                               const struct ia_css_frame_info *frame_info)
+{
+       frame->info.res.width = frame_info->res.width;
+       frame->info.res.height = frame_info->res.height;
+       frame->info.format = frame_info->format;
+       frame->info.padded_width = frame_info->padded_width;
+       frame->info.raw_bit_depth = frame_info->raw_bit_depth;
+       frame->valid = true;
+       /* To indicate it is not valid frame. */
+       frame->dynamic_queue_id = SH_CSS_INVALID_QUEUE_ID;
+       frame->buf_type = IA_CSS_BUFFER_TYPE_INVALID;
+
+       return ia_css_frame_init_planes(frame);
+}