]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: stm32: csi: use ARRAY_SIZE to search D-PHY table
authorAlain Volmat <alain.volmat@foss.st.com>
Mon, 13 Jan 2025 08:57:55 +0000 (09:57 +0100)
committerHans Verkuil <hverkuil@xs4all.nl>
Sat, 15 Feb 2025 14:22:48 +0000 (15:22 +0100)
Within stm32_csi_start, use ARRAY_SIZE loop in order to search
for the right setting.
Avoid useless init of lanes_ie / lanes_en.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/platform/st/stm32/stm32-csi.c

index 89fcd7d0790461a09726f779446e959cc442b4ef..3654f9895dbc4619cf6c4236ab1283f6a903ff8b 100644 (file)
@@ -325,7 +325,6 @@ static const struct stm32_csi_mbps_phy_reg snps_stm32mp25[] = {
        { .mbps = 2400, .hsfreqrange = 0x47,    .osc_freq_target = 442 },
        { .mbps = 2450, .hsfreqrange = 0x48,    .osc_freq_target = 451 },
        { .mbps = 2500, .hsfreqrange = 0x49,    .osc_freq_target = 460 },
-       { /* sentinel */ }
 };
 
 static const struct v4l2_mbus_framefmt fmt_default = {
@@ -444,13 +443,13 @@ static void stm32_csi_phy_reg_write(struct stm32_csi_dev *csidev,
 static int stm32_csi_start(struct stm32_csi_dev *csidev,
                           struct v4l2_subdev_state *state)
 {
-       const struct stm32_csi_mbps_phy_reg *phy_regs;
+       const struct stm32_csi_mbps_phy_reg *phy_regs = NULL;
        struct v4l2_mbus_framefmt *sink_fmt;
        const struct stm32_csi_fmts *fmt;
        unsigned long phy_clk_frate;
+       u32 lanes_ie, lanes_en;
        unsigned int mbps;
-       u32 lanes_ie = 0;
-       u32 lanes_en = 0;
+       unsigned int i;
        s64 link_freq;
        int ret;
        u32 ccfr;
@@ -474,11 +473,14 @@ static int stm32_csi_start(struct stm32_csi_dev *csidev,
        mbps = div_s64(link_freq, 500000);
        dev_dbg(csidev->dev, "Computed Mbps: %u\n", mbps);
 
-       for (phy_regs = snps_stm32mp25; phy_regs->mbps != 0; phy_regs++)
-               if (phy_regs->mbps >= mbps)
+       for (i = 0; i < ARRAY_SIZE(snps_stm32mp25); i++) {
+               if (snps_stm32mp25[i].mbps >= mbps) {
+                       phy_regs = &snps_stm32mp25[i];
                        break;
+               }
+       }
 
-       if (!phy_regs->mbps) {
+       if (!phy_regs) {
                dev_err(csidev->dev, "Unsupported PHY speed (%u Mbps)", mbps);
                return -ERANGE;
        }
@@ -488,8 +490,8 @@ static int stm32_csi_start(struct stm32_csi_dev *csidev,
                phy_regs->osc_freq_target);
 
        /* Prepare lanes related configuration bits */
-       lanes_ie |= STM32_CSI_SR1_DL0_ERRORS;
-       lanes_en |= STM32_CSI_PCR_DL0EN;
+       lanes_ie = STM32_CSI_SR1_DL0_ERRORS;
+       lanes_en = STM32_CSI_PCR_DL0EN;
        if (csidev->num_lanes == 2) {
                lanes_ie |= STM32_CSI_SR1_DL1_ERRORS;
                lanes_en |= STM32_CSI_PCR_DL1EN;