]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
imx93: Add Low performance parts 9302/9301 support
authorYe Li <ye.li@nxp.com>
Thu, 19 Sep 2024 04:01:33 +0000 (12:01 +0800)
committerFabio Estevam <festevam@gmail.com>
Thu, 19 Sep 2024 03:12:41 +0000 (00:12 -0300)
Add support for iMX93 low performance parts 9302 and 9301 which
restrict to low drive voltage only.
The parts run A55 max speed at 900Mhz and M33 at 133Mhz, have NPU
and A55 core1 (9301) disabled.

Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
arch/arm/include/asm/arch-imx/cpu.h
arch/arm/include/asm/mach-imx/sys_proto.h
arch/arm/mach-imx/imx9/Kconfig
arch/arm/mach-imx/imx9/soc.c
drivers/cpu/imx8_cpu.c

index cbd2717f97c5bc66a1a7a30331c8dfbd5efd4273..b0468a1a1364e13e1a7eb211979c5d3f280e0c16 100644 (file)
@@ -68,6 +68,8 @@
 #define MXC_CPU_IMX9321                0xC6 /* dummy ID */
 #define MXC_CPU_IMX9312                0xC7 /* dummy ID */
 #define MXC_CPU_IMX9311                0xC8 /* dummy ID */
+#define MXC_CPU_IMX9302                0xC9 /* dummy ID */
+#define MXC_CPU_IMX9301                0xCA /* dummy ID */
 
 #define MXC_SOC_MX6            0x60
 #define MXC_SOC_MX7            0x70
index d93e095e1918f9f8da5c6af4aba604f7b7bd91fa..c146a223b715452ed304c30a4c05697f25e71fbf 100644 (file)
@@ -85,7 +85,8 @@ struct bd_info;
 #define is_imx93() (is_cpu_type(MXC_CPU_IMX93) || is_cpu_type(MXC_CPU_IMX9331) || \
        is_cpu_type(MXC_CPU_IMX9332) || is_cpu_type(MXC_CPU_IMX9351) || \
        is_cpu_type(MXC_CPU_IMX9322) || is_cpu_type(MXC_CPU_IMX9321) || \
-       is_cpu_type(MXC_CPU_IMX9312) || is_cpu_type(MXC_CPU_IMX9311))
+       is_cpu_type(MXC_CPU_IMX9312) || is_cpu_type(MXC_CPU_IMX9311) || \
+       is_cpu_type(MXC_CPU_IMX9302) || is_cpu_type(MXC_CPU_IMX9301))
 #define is_imx9351() (is_cpu_type(MXC_CPU_IMX9351))
 #define is_imx9332() (is_cpu_type(MXC_CPU_IMX9332))
 #define is_imx9331() (is_cpu_type(MXC_CPU_IMX9331))
@@ -93,6 +94,8 @@ struct bd_info;
 #define is_imx9321() (is_cpu_type(MXC_CPU_IMX9321))
 #define is_imx9312() (is_cpu_type(MXC_CPU_IMX9312))
 #define is_imx9311() (is_cpu_type(MXC_CPU_IMX9311))
+#define is_imx9302() (is_cpu_type(MXC_CPU_IMX9302))
+#define is_imx9301() (is_cpu_type(MXC_CPU_IMX9301))
 
 #define is_imxrt1020() (is_cpu_type(MXC_CPU_IMXRT1020))
 #define is_imxrt1050() (is_cpu_type(MXC_CPU_IMXRT1050))
index e892da80fe839bfcfe95c0b252b3da171645b97a..63e75b6806e146d18bcfe6981de8e1dc5fa32c15 100644 (file)
@@ -30,6 +30,7 @@ choice
 
 config TARGET_IMX93_11X11_EVK
        bool "imx93_11x11_evk"
+       select OF_BOARD_FIXUP
        select IMX93
        imply OF_UPSTREAM
 
index e3bfc8d51c52ad6666d4fc0c841e54e952c5691d..6364709278234cb8446bc068247188bbbc81164d 100644 (file)
@@ -191,6 +191,10 @@ static u32 get_cpu_variant_type(u32 type)
        bool core1_disable = !!(val & BIT(15));
        u32 pack_9x9_fused = BIT(4) | BIT(17) | BIT(19) | BIT(24);
 
+       /* Low performance 93 part */
+       if (((val >> 6) & 0x3F) == 0xE && npu_disable)
+               return core1_disable ? MXC_CPU_IMX9301 : MXC_CPU_IMX9302;
+
        if ((val2 & pack_9x9_fused) == pack_9x9_fused)
                type = MXC_CPU_IMX9322;
 
@@ -704,7 +708,7 @@ int ft_system_setup(void *blob, struct bd_info *bd)
        if (fixup_thermal_trips(blob, "cpu-thermal"))
                printf("Failed to update cpu-thermal trip(s)");
 
-       if (is_imx9351() || is_imx9331() || is_imx9321() || is_imx9311())
+       if (is_imx9351() || is_imx9331() || is_imx9321() || is_imx9311() || is_imx9301())
                disable_cpu_nodes(blob, nodes_path, 1, 2);
 
        if (is_voltage_mode(VOLT_LOW_DRIVE))
index 60deca963a6733f4e9ad4404cc891619cab601dd..6c0a8c0cbe40af8e411599f21ac32d2f7e1fe9d8 100644 (file)
@@ -60,6 +60,10 @@ static const char *get_imx_type_str(u32 imxtype)
                return "93(12)";/* iMX93 9x9 Dual core without NPU */
        case MXC_CPU_IMX9311:
                return "93(11)";/* iMX93 9x9 Single core without NPU */
+       case MXC_CPU_IMX9302:
+               return "93(02)";/* iMX93 900Mhz Low performance Dual core without NPU */
+       case MXC_CPU_IMX9301:
+               return "93(01)";/* iMX93 900Mhz Low performance Single core without NPU */
        default:
                return "??";
        }