]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
imx9: soc: Reuse and export low_drive_freq_update()
authorPrimoz Fiser <primoz.fiser@norik.com>
Thu, 7 Aug 2025 13:13:53 +0000 (15:13 +0200)
committerFabio Estevam <festevam@gmail.com>
Fri, 8 Aug 2025 11:28:06 +0000 (08:28 -0300)
Reuse and export low_drive_freq_update() function. This way global imx9
board_fix_fdt() doesn't duplicate code. While low_drive_freq_update()
can be reused on boards such as phyCORE-i.MX93 (TARGET_PHYCORE_IMX93)
which is not using the global imx9 board_fix_fdt() implementation.

While at it, make printout logic less verbose by only outputting on the
error condition and not on each successful clock fixup. Also drop now
invalid comment (low_drive_freq_update() now does fixup for internal and
kernel device-tree).

Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
arch/arm/include/asm/arch-imx9/sys_proto.h
arch/arm/mach-imx/imx9/soc.c

index df2148a53c7e43fcacad0798090df23e24347dbe..455aa95339e90a621afbb5386c5945ef16ab3495 100644 (file)
@@ -18,6 +18,7 @@ enum imx9_soc_voltage_mode {
 void soc_power_init(void);
 bool m33_is_rom_kicked(void);
 int m33_prepare(void);
+int low_drive_freq_update(void *blob);
 
 enum imx9_soc_voltage_mode soc_target_voltage_mode(void);
 
index 02db7cc97bad72fe299a51298e3d4b9582312cfc..9fb82644f126b8717b2f2ba1c9e77fb75d2e7757 100644 (file)
@@ -641,12 +641,10 @@ static int low_drive_fdt_fix_clock(void *fdt, int node_off, u32 clk_index, u32 n
        return -ENOENT;
 }
 
-static int low_drive_freq_update(void *blob)
+int low_drive_freq_update(void *blob)
 {
-       int nodeoff, ret;
-       int i;
+       int nodeoff, ret, i;
 
-       /* Update kernel dtb clocks for low drive mode */
        struct low_drive_freq_entry table[] = {
                {"/soc@0/bus@42800000/mmc@42850000", 0, 266666667},
                {"/soc@0/bus@42800000/mmc@42860000", 0, 266666667},
@@ -658,8 +656,8 @@ static int low_drive_freq_update(void *blob)
                if (nodeoff >= 0) {
                        ret = low_drive_fdt_fix_clock(blob, nodeoff, table[i].clk,
                                                      table[i].new_rate);
-                       if (!ret)
-                               printf("%s freq updated\n", table[i].node_path);
+                       if (ret)
+                               printf("freq update failed for %s\n", table[i].node_path);
                }
        }
 
@@ -671,23 +669,8 @@ static int low_drive_freq_update(void *blob)
 int board_fix_fdt(void *fdt)
 {
        /* Update dtb clocks for low drive mode */
-       if (is_voltage_mode(VOLT_LOW_DRIVE)) {
-               int nodeoff;
-               int i;
-
-               struct low_drive_freq_entry table[] = {
-                       {"/soc@0/bus@42800000/mmc@42850000", 0, 266666667},
-                       {"/soc@0/bus@42800000/mmc@42860000", 0, 266666667},
-                       {"/soc@0/bus@42800000/mmc@428b0000", 0, 266666667},
-               };
-
-               for (i = 0; i < ARRAY_SIZE(table); i++) {
-                       nodeoff = fdt_path_offset(fdt, table[i].node_path);
-                       if (nodeoff >= 0)
-                               low_drive_fdt_fix_clock(fdt, nodeoff, table[i].clk,
-                                                       table[i].new_rate);
-               }
-       }
+       if (is_voltage_mode(VOLT_LOW_DRIVE))
+               low_drive_freq_update(fdt);
 
        return 0;
 }