]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
imx: imx8: ahab: refactor do_ahab_close command
authorIgor Opaniuk <igor.opaniuk@foundries.io>
Mon, 21 Aug 2023 19:33:41 +0000 (22:33 +0300)
committerFabio Estevam <festevam@gmail.com>
Wed, 13 Dec 2023 12:42:14 +0000 (09:42 -0300)
Move an OEM closing logic to ahab_close() function to be able to use
it directly without calling a u-boot command.

Signed-off-by: Igor Opaniuk <igor.opaniuk@foundries.io>
Co-developed-by: Oleksandr Suvorov <oleksandr.suvorov@foundries.io>
Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@foundries.io>
arch/arm/include/asm/arch-imx8/sys_proto.h
arch/arm/mach-imx/imx8/ahab.c

index e7625c42985714eb6af9e3a54f80eb31171a44b1..405e9bd3d81390bae71e4a830540146b9deafcf3 100644 (file)
@@ -23,6 +23,7 @@ struct pass_over_info_t {
 
 extern unsigned long boot_pointer[];
 void build_info(void);
+int ahab_close(void);
 int print_bootinfo(void);
 int sc_pm_setup_uart(sc_rsrc_t uart_rsrc, sc_pm_clock_rate_t clk_rate);
 int imx8_power_domain_lookup_name(const char *name,
index 994becccefded7fddf3f02c5fc5e91fcb9cbb490..1c072f6af11d41a8df8a732545e2e24322bd8cc4 100644 (file)
@@ -340,6 +340,32 @@ static int do_ahab_status(struct cmd_tbl *cmdtp, int flag, int argc,
        return 0;
 }
 
+int ahab_close(void)
+{
+       int err;
+       u16 lc;
+
+       err = sc_seco_chip_info(-1, &lc, NULL, NULL, NULL);
+       if (err != SC_ERR_NONE) {
+               printf("Error in get lifecycle\n");
+               return -EIO;
+       }
+
+       if (lc != 0x20) {
+               puts("Current lifecycle is NOT NXP closed, can't move to OEM closed\n");
+               display_life_cycle(lc);
+               return -EPERM;
+       }
+
+       err = sc_seco_forward_lifecycle(-1, 16);
+       if (err != SC_ERR_NONE) {
+               printf("Error in forward lifecycle to OEM closed\n");
+               return -EIO;
+       }
+
+       return 0;
+}
+
 static int confirm_close(void)
 {
        puts("Warning: Please ensure your sample is in NXP closed state, "
@@ -361,27 +387,14 @@ static int do_ahab_close(struct cmd_tbl *cmdtp, int flag, int argc,
 {
        int confirmed = argc >= 2 && !strcmp(argv[1], "-y");
        int err;
-       u16 lc;
 
        if (!confirmed && !confirm_close())
                return -EACCES;
 
-       err = sc_seco_chip_info(-1, &lc, NULL, NULL, NULL);
+       err = ahab_close();
        if (err) {
-               printf("Error in get lifecycle\n");
-               return -EIO;
-       }
-
-       if (lc != 0x20) {
-               puts("Current lifecycle is NOT NXP closed, can't move to OEM closed\n");
-               display_life_cycle(lc);
-               return -EPERM;
-       }
-
-       err = sc_seco_forward_lifecycle(-1, 16);
-       if (err) {
-               printf("Error in forward lifecycle to OEM closed\n");
-               return -EIO;
+               printf("Change to OEM closed failed\n");
+               return err;
        }
 
        printf("Change to OEM closed successfully\n");