fpga: zynqpl: Add zynq aes load & loadp commands
authorT Karthik Reddy <t.karthik.reddy@xilinx.com>
Tue, 12 Mar 2019 14:50:22 +0000 (20:20 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 24 Jun 2020 11:07:58 +0000 (13:07 +0200)
Added support for zynq aes load & loadp commands.

Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
Signed-off-by: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
board/xilinx/zynq/cmds.c

index d5e7d70bdf584b96005707d91842bd0700dd4061..73e2b0eac7e5a77e6195b4743af9f77171732cbb 100644 (file)
@@ -444,18 +444,37 @@ static int zynq_decrypt_image(struct cmd_tbl *cmdtp, int flag, int argc,
        if (argc < 5 && argc > cmdtp->maxargs)
                return CMD_RET_USAGE;
 
-       srcaddr = simple_strtoul(argv[2], &endp, 16);
-       if (*argv[2] == 0 || *endp != 0)
-               return CMD_RET_USAGE;
-       srclen = simple_strtoul(argv[3], &endp, 16);
-       if (*argv[3] == 0 || *endp != 0)
-               return CMD_RET_USAGE;
-       dstaddr = simple_strtoul(argv[4], &endp, 16);
-       if (*argv[4] == 0 || *endp != 0)
-               return CMD_RET_USAGE;
-       dstlen = simple_strtoul(argv[5], &endp, 16);
-       if (*argv[5] == 0 || *endp != 0)
-               return CMD_RET_USAGE;
+       if (argc == 5) {
+               if (!strcmp("load", argv[2]))
+                       imgtype = BIT_FULL;
+               else if (!strcmp("loadp", argv[2]))
+                       imgtype = BIT_PARTIAL;
+               else
+                       return CMD_RET_USAGE;
+
+               srcaddr = simple_strtoul(argv[3], &endp, 16);
+               if (*argv[3] == 0 || *endp != 0)
+                       return CMD_RET_USAGE;
+               srclen = simple_strtoul(argv[4], &endp, 16);
+               if (*argv[4] == 0 || *endp != 0)
+                       return CMD_RET_USAGE;
+
+               dstaddr = 0xFFFFFFFF;
+               dstlen = srclen;
+       } else {
+               srcaddr = simple_strtoul(argv[2], &endp, 16);
+               if (*argv[2] == 0 || *endp != 0)
+                       return CMD_RET_USAGE;
+               srclen = simple_strtoul(argv[3], &endp, 16);
+               if (*argv[3] == 0 || *endp != 0)
+                       return CMD_RET_USAGE;
+               dstaddr = simple_strtoul(argv[4], &endp, 16);
+               if (*argv[4] == 0 || *endp != 0)
+                       return CMD_RET_USAGE;
+               dstlen = simple_strtoul(argv[5], &endp, 16);
+               if (*argv[5] == 0 || *endp != 0)
+                       return CMD_RET_USAGE;
+       }
 
        /*
         * Roundup source and destination lengths to
@@ -520,6 +539,10 @@ static char zynq_help_text[] =
        "                - Decrypts the encrypted image present in source\n"
        "                  address and places the decrypted image at\n"
        "                  destination address\n"
+       "aes load <srcaddr> <srclen>\n"
+       "aes loadp <srcaddr> <srclen>\n"
+       "       if operation type is load or loadp, it loads the encrypted\n"
+       "       full or partial bitstream on to PL respectively.\n"
 #endif
        ;
 #endif