]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: rzg2l-cru: Drop function pointer to configure CSI
authorBiju Das <biju.das.jz@bp.renesas.com>
Fri, 1 Aug 2025 05:34:22 +0000 (06:34 +0100)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Mon, 25 Aug 2025 13:40:38 +0000 (15:40 +0200)
Drop function pointer to configure CSI to avoid code duplication
by checking the presence of vc select register in rzg2l_cru_info.
After this change, limit the scope of the rzg2l_cru_csi2_setup()
to static.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Tested-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c
drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h
drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c

index 806acc8f9728f7733397dd1b52cb408a14770b36..3c5fbd857371c39f900aa97521e1ad6f404b4b0b 100644 (file)
@@ -367,7 +367,6 @@ static const struct rzg2l_cru_info rzg3e_cru_info = {
        .enable_interrupts = rzg3e_cru_enable_interrupts,
        .disable_interrupts = rzg3e_cru_disable_interrupts,
        .fifo_empty = rzg3e_fifo_empty,
-       .csi_setup = rzg3e_cru_csi2_setup,
 };
 
 static const u16 rzg2l_cru_regs[] = {
@@ -412,7 +411,6 @@ static const struct rzg2l_cru_info rzg2l_cru_info = {
        .enable_interrupts = rzg2l_cru_enable_interrupts,
        .disable_interrupts = rzg2l_cru_disable_interrupts,
        .fifo_empty = rzg2l_fifo_empty,
-       .csi_setup = rzg2l_cru_csi2_setup,
 };
 
 static const struct of_device_id rzg2l_cru_of_id_table[] = {
index be95b41c37dfdbe80722557fafb5c844e5abc165..3a200db1573088777aa16d6bba6cce4c3b8cc067 100644 (file)
@@ -92,9 +92,6 @@ struct rzg2l_cru_info {
        void (*enable_interrupts)(struct rzg2l_cru_dev *cru);
        void (*disable_interrupts)(struct rzg2l_cru_dev *cru);
        bool (*fifo_empty)(struct rzg2l_cru_dev *cru);
-       void (*csi_setup)(struct rzg2l_cru_dev *cru,
-                         const struct rzg2l_cru_ip_format *ip_fmt,
-                         u8 csi_vc);
 };
 
 /**
@@ -204,11 +201,5 @@ void rzg3e_cru_disable_interrupts(struct rzg2l_cru_dev *cru);
 
 bool rzg2l_fifo_empty(struct rzg2l_cru_dev *cru);
 bool rzg3e_fifo_empty(struct rzg2l_cru_dev *cru);
-void rzg2l_cru_csi2_setup(struct rzg2l_cru_dev *cru,
-                         const struct rzg2l_cru_ip_format *ip_fmt,
-                         u8 csi_vc);
-void rzg3e_cru_csi2_setup(struct rzg2l_cru_dev *cru,
-                         const struct rzg2l_cru_ip_format *ip_fmt,
-                         u8 csi_vc);
 
 #endif
index 941badc90ff55c5225644f88de1d70239eb3a247..162e2ace6931840ee052e1565587d021fc87307f 100644 (file)
@@ -257,30 +257,18 @@ static void rzg2l_cru_initialize_axi(struct rzg2l_cru_dev *cru)
        rzg2l_cru_write(cru, AMnAXIATTR, amnaxiattr);
 }
 
-void rzg3e_cru_csi2_setup(struct rzg2l_cru_dev *cru,
-                         const struct rzg2l_cru_ip_format *ip_fmt,
-                         u8 csi_vc)
+static void rzg2l_cru_csi2_setup(struct rzg2l_cru_dev *cru,
+                                const struct rzg2l_cru_ip_format *ip_fmt,
+                                u8 csi_vc)
 {
        const struct rzg2l_cru_info *info = cru->info;
        u32 icnmc = ICnMC_INF(ip_fmt->datatype);
 
-       icnmc |= rzg2l_cru_read(cru, info->image_conv) & ~ICnMC_INF_MASK;
-
-       /* Set virtual channel CSI2 */
-       icnmc |= ICnMC_VCSEL(csi_vc);
-
-       rzg2l_cru_write(cru, ICnSVCNUM, csi_vc);
-       rzg2l_cru_write(cru, ICnSVC, ICnSVC_SVC0(0) | ICnSVC_SVC1(1) |
-                       ICnSVC_SVC2(2) | ICnSVC_SVC3(3));
-       rzg2l_cru_write(cru, info->image_conv, icnmc);
-}
-
-void rzg2l_cru_csi2_setup(struct rzg2l_cru_dev *cru,
-                         const struct rzg2l_cru_ip_format *ip_fmt,
-                         u8 csi_vc)
-{
-       const struct rzg2l_cru_info *info = cru->info;
-       u32 icnmc = ICnMC_INF(ip_fmt->datatype);
+       if (cru->info->regs[ICnSVC]) {
+               rzg2l_cru_write(cru, ICnSVCNUM, csi_vc);
+               rzg2l_cru_write(cru, ICnSVC, ICnSVC_SVC0(0) | ICnSVC_SVC1(1) |
+                               ICnSVC_SVC2(2) | ICnSVC_SVC3(3));
+       }
 
        icnmc |= rzg2l_cru_read(cru, info->image_conv) & ~ICnMC_INF_MASK;
 
@@ -299,7 +287,7 @@ static int rzg2l_cru_initialize_image_conv(struct rzg2l_cru_dev *cru,
        const struct rzg2l_cru_ip_format *cru_ip_fmt;
 
        cru_ip_fmt = rzg2l_cru_ip_code_to_fmt(ip_sd_fmt->code);
-       info->csi_setup(cru, cru_ip_fmt, csi_vc);
+       rzg2l_cru_csi2_setup(cru, cru_ip_fmt, csi_vc);
 
        /* Output format */
        cru_video_fmt = rzg2l_cru_ip_format_to_fmt(cru->format.pixelformat);