Re: [PATCH v2 18/22] media: rockchip: rga: move rga_fmt to rga-hw.h

From: Sven Püschel

Date: Wed Jan 07 2026 - 09:52:22 EST


Hi,

On 12/24/25 4:59 PM, Nicolas Dufresne wrote:
Le mercredi 03 décembre 2025 à 16:52 +0100, Sven Püschel a écrit :
Move rga_fmt to rga-hw in preparation of the RGA3 addition, as the struct
contains many RGA2 specific values. They are used to write the correct
register values quickly based on the chosen format. Therefore the
pointer to the rga_fmt struct is kept but changed to an opaque void
pointer outside of the rga-hw.h.
[...]
diff --git a/drivers/media/platform/rockchip/rga/rga-hw.h b/drivers/media/platform/rockchip/rga/rga-hw.h
index fffcab0131225..3bc4b1f5acba2 100644
--- a/drivers/media/platform/rockchip/rga/rga-hw.h
+++ b/drivers/media/platform/rockchip/rga/rga-hw.h
@@ -6,6 +6,8 @@
 #ifndef __RGA_HW_H__
 #define __RGA_HW_H__
+#include <linux/types.h>
+
 #define RGA_CMDBUF_SIZE 0x20
 /* Hardware limits */
@@ -431,4 +433,14 @@ union rga_pat_con {
  } data;
 };
+struct rga_fmt {
+ u32 fourcc;
+ int depth;
+ u8 uv_factor;
+ u8 y_div;
+ u8 x_div;
+ u8 color_swap;
+ u8 hw_format;
+};

[...]

-struct rga_fmt {
- u32 fourcc;
- int depth;
- u8 uv_factor;
- u8 y_div;
- u8 x_div;
- u8 color_swap;
- u8 hw_format;
-};
Ah! here's the removal of the unused variable. Not review friendly, but at last
removed.

I've just moved it, so your review comments are still right. x_div/y_div is still used at one place in rga_hw.c, but I'll remove it too in my v3 (and have these removals in the other commits to keep this reviewed-by).

Sincerely
    Sven


Reviewed-by: Nicolas Dufresne <nicolas.dufresne@xxxxxxxxxxxxx>

-
 struct rga_frame {
  /* Crop */
  struct v4l2_rect crop;
  /* Image format */
- struct rga_fmt *fmt;
+ void *fmt;
  struct v4l2_pix_format_mplane pix;
 };
@@ -145,8 +135,6 @@ static inline void rga_mod(struct rockchip_rga *rga, u32 reg, u32 val, u32 mask)
 struct rga_hw {
  const char *card_type;
  bool has_internal_iommu;
- struct rga_fmt *formats;
- u32 num_formats;
  size_t cmdbuf_size;
  u32 min_width, min_height;
  u32 max_width, max_height;
@@ -158,6 +146,9 @@ struct rga_hw {
        struct rga_vb_buffer *src, struct rga_vb_buffer *dst);
  bool (*handle_irq)(struct rockchip_rga *rga);
  void (*get_version)(struct rockchip_rga *rga);
+ void *(*adjust_and_map_format)(struct v4l2_pix_format_mplane *format,
+        bool is_output);
+ int (*enum_format)(struct v4l2_fmtdesc *f);
 };
 static inline bool rga_has_internal_iommu(const struct rockchip_rga *rga)