tools/power/x86/intel-speed-select: Add option to delay mbox commands
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Wed, 1 Jul 2020 21:27:18 +0000 (14:27 -0700)
committerSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Thu, 16 Jul 2020 17:17:42 +0000 (10:17 -0700)
Add option "p|--pause" to introduce delay between two mail box commands
for test purpose. This delay can be specified in milliseconds. By default
there is no delay between two mailbox commands.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
tools/power/x86/intel-speed-select/isst-config.c

index 0a5c1744db9501c481032c971fe8e7d1f638399c..c7b2e6afc7e8474af5b02a94933abf6485f2a880 100644 (file)
@@ -44,6 +44,8 @@ static int force_online_offline;
 static int auto_mode;
 static int fact_enable_fail;
 
+static int mbox_delay;
+
 /* clos related */
 static int current_clos = -1;
 static int clos_epp = -1;
@@ -788,6 +790,9 @@ int isst_send_mbox_command(unsigned int cpu, unsigned char command,
        mbox_cmds.mbox_cmd[0].parameter = parameter;
        mbox_cmds.mbox_cmd[0].req_data = req_data;
 
+       if (mbox_delay)
+               usleep(mbox_delay * 1000);
+
        fd = open(pathname, O_RDWR);
        if (fd < 0)
                err(-1, "%s open failed", pathname);
@@ -2599,6 +2604,7 @@ static void usage(void)
        printf("\t[-i|--info] : Print platform information\n");
        printf("\t[-o|--out] : Output file\n");
        printf("\t\t\tDefault : stderr\n");
+       printf("\t[-p|--pause] : Delay between two mail box commands in milliseconds\n");
        printf("\t[-v|--version] : Print version\n");
 
        printf("\nResult format\n");
@@ -2630,6 +2636,7 @@ static void print_version(void)
 static void cmdline(int argc, char **argv)
 {
        const char *pathname = "/dev/isst_interface";
+       char *ptr;
        FILE *fp;
        int opt;
        int option_index = 0;
@@ -2641,6 +2648,7 @@ static void cmdline(int argc, char **argv)
                { "format", required_argument, 0, 'f' },
                { "help", no_argument, 0, 'h' },
                { "info", no_argument, 0, 'i' },
+               { "pause", required_argument, 0, 'p' },
                { "out", required_argument, 0, 'o' },
                { "version", no_argument, 0, 'v' },
                { 0, 0, 0, 0 }
@@ -2694,6 +2702,13 @@ static void cmdline(int argc, char **argv)
                                fclose(outf);
                        outf = fopen_or_exit(optarg, "w");
                        break;
+               case 'p':
+                       ret = strtol(optarg, &ptr, 10);
+                       if (!ret)
+                               fprintf(stderr, "Invalid pause interval, ignore\n");
+                       else
+                               mbox_delay = ret;
+                       break;
                case 'v':
                        print_version();
                        break;