command: Add constants for cmd_get_data_size string / error
authorSimon Glass <sjg@chromium.org>
Sun, 1 Nov 2020 21:15:36 +0000 (14:15 -0700)
committerTom Rini <trini@konsulko.com>
Tue, 1 Dec 2020 15:33:38 +0000 (10:33 -0500)
At present these values are open-coded in a few places. Add constants so
the meaning is clear.

Also add a comment to cmd_get_data_size()

Signed-off-by: Simon Glass <sjg@chromium.org>
cmd/itest.c
cmd/mem.c
common/command.c
include/command.h

index a0cf4be..9a441ce 100644 (file)
@@ -197,10 +197,10 @@ static int do_itest(struct cmd_tbl *cmdtp, int flag, int argc,
 #endif
                value = binary_test (argv[2], argv[1], argv[3], w);
                break;
-       case -2:
+       case CMD_DATA_SIZE_STR:
                value = binary_test (argv[2], argv[1], argv[3], 0);
                break;
-       case -1:
+       case CMD_DATA_SIZE_ERR:
        default:
                puts("Invalid data width specifier\n");
                value = 0;
index 56e1d07..1d4f2ba 100644 (file)
--- a/cmd/mem.c
+++ b/cmd/mem.c
@@ -393,7 +393,7 @@ static int do_mem_search(struct cmd_tbl *cmdtp, int flag, int argc,
                 * Defaults to long if no or incorrect specification.
                 */
                size = cmd_get_data_size(argv[0], 4);
-               if (size < 0 && size != -2 /* string */)
+               if (size < 0 && size != CMD_DATA_SIZE_STR)
                        return 1;
 
                argc--;
index 2c491e2..068cb55 100644 (file)
@@ -475,13 +475,13 @@ int cmd_get_data_size(char* arg, int default_size)
                case 'l':
                        return 4;
                case 's':
-                       return -2;
+                       return CMD_DATA_SIZE_STR;
                case 'q':
                        if (MEM_SUPPORT_64BIT_DATA)
                                return 8;
                        /* no break */
                default:
-                       return -1;
+                       return CMD_DATA_SIZE_ERR;
                }
        }
        return default_size;
index b9b5ec1..e900f97 100644 (file)
@@ -117,7 +117,31 @@ int cmd_process_error(struct cmd_tbl *cmdtp, int err);
        defined(CONFIG_CMD_PCI) || \
        defined(CONFIG_CMD_SETEXPR)
 #define CMD_DATA_SIZE
-extern int cmd_get_data_size(char* arg, int default_size);
+#define CMD_DATA_SIZE_ERR      (-1)
+#define CMD_DATA_SIZE_STR      (-2)
+
+/**
+ * cmd_get_data_size() - Get the data-size specifier from a command
+ *
+ * This reads a '.x' size specifier appended to a command. For example 'md.b'
+ * is the 'md' command with a '.b' specifier, meaning that the command should
+ * use bytes.
+ *
+ * Valid characters are:
+ *
+ *     b - byte
+ *     w - word (16 bits)
+ *     l - long (32 bits)
+ *     q - quad (64 bits)
+ *     s - string
+ *
+ * @arg: Pointers to the command to check. If a valid specifier is present it
+ *     will be the last character of the string, following a '.'
+ * @default_size: Default size to return if there is no specifier
+ * @return data size in bytes (1, 2, 4, 8) or CMD_DATA_SIZE_ERR for an invalid
+ *     character, or CMD_DATA_SIZE_STR for a string
+ */
+int cmd_get_data_size(char *arg, int default_size);
 #endif
 
 #ifdef CONFIG_CMD_BOOTD