From: Lokesh Vutla Date: Fri, 23 Aug 2019 11:09:37 +0000 (+0530) Subject: cmd: enable: Add support for enable command X-Git-Tag: v0.1~5 X-Git-Url: https://git.ti.com/gitweb?p=k3conf%2Fk3conf.git;a=commitdiff_plain;h=b3ec98befbe0e6128f147f9317b41f327272799f;ds=sidebyside cmd: enable: Add support for enable command Adds support for enable commads that allows for enabling a device or a clock. Signed-off-by: Lokesh Vutla --- diff --git a/Makefile b/Makefile index 8ba6875..91c5ba2 100644 --- a/Makefile +++ b/Makefile @@ -67,7 +67,8 @@ COMMONSOURCES=\ common/tisci/tisci_clock.c \ common/autoadjust_table.c \ common/cmd_show.c \ - common/cmd_dump.c + common/cmd_dump.c \ + common/cmd_enable.c AM65XSOURCES =\ soc/am65x/am65x_host_info.c \ diff --git a/common/cmd_enable.c b/common/cmd_enable.c new file mode 100644 index 0000000..c5c1689 --- /dev/null +++ b/common/cmd_enable.c @@ -0,0 +1,118 @@ +/* + * K3CONF Command Enable + * + * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/ + * Lokesh Vutla + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include + +static int enable_device(int argc, char *argv[]) +{ + uint32_t dev_id, ret; + + if (argc < 1) + return -1; + + ret = sscanf(argv[0], "%u", &dev_id); + if (ret != 1) + return -1; + + ret = ti_sci_cmd_enable_device(dev_id); + if (ret) + return ret; + + return dump_devices_info(argc, argv); +} + +static int enable_clock(int argc, char *argv[]) +{ + uint32_t dev_id, clk_id, ret; + + if (argc < 2) + return -1; + + ret = sscanf(argv[0], "%u", &dev_id); + if (ret != 1) + return -1; + + ret = sscanf(argv[1], "%u", &clk_id); + if (ret != 1) + return -1; + + ret = ti_sci_cmd_get_clk(dev_id, clk_id); + if (ret) + return ret; + + return dump_clocks_info(argc, argv); +} + +int process_enable_command(int argc, char *argv[]) +{ + int ret; + + if (argc < 1) { + help(HELP_ENABLE); + return -1; + } + + if (!strncmp(argv[0], "device", 6)) { + argc--; + argv++; + ret = enable_device(argc, argv); + if (ret) { + fprintf(stderr, "Invalid device arguments\n"); + help(HELP_ENABLE_DEVICE); + } + } else if (!strncmp(argv[0], "clock", 5)) { + argc--; + argv++; + ret = enable_clock(argc, argv); + if (ret) { + fprintf(stderr, "Invalid clock arguments\n"); + help(HELP_ENABLE_CLOCK); + } + } else if (!strcmp(argv[0], "--help")) { + help(HELP_ENABLE); + return 0; + } else { + fprintf(stderr, "Invalid argument %s\n", argv[1]); + help(HELP_ENABLE); + return -1; + } + return ret; +} diff --git a/common/help.c b/common/help.c index e1bbfed..a78cf37 100644 --- a/common/help.c +++ b/common/help.c @@ -131,4 +131,14 @@ void help(help_category cat) printf("\n\tk3conf dump processor \n"); printf("\t Prints status of the given TISCI processors\n"); } + if ((cat == HELP_ALL) || (cat == HELP_ENABLE) || + (cat == HELP_ENABLE_DEVICE)) { + printf("\n\tk3conf enable device \n"); + printf("\t Enables the TISCI device and prints the status\n"); + } + if ((cat == HELP_ALL) || (cat == HELP_ENABLE) || + (cat == HELP_ENABLE_CLOCK)) { + printf("\n\tk3conf enable clock \n"); + printf("\t Enables the TISCI clock and prints the status\n"); + } } diff --git a/common/k3conf.c b/common/k3conf.c index af57dfb..b20c029 100644 --- a/common/k3conf.c +++ b/common/k3conf.c @@ -120,6 +120,11 @@ int main(int argc, char *argv[]) argv++; k3conf_print_version(stdout); return process_dump_command(argc, argv); + } else if (!strcmp(argv[0], "enable")) { + argc--; + argv++; + k3conf_print_version(stdout); + return process_enable_command(argc, argv); } else { fprintf(stderr, "Invalid argument %s", argv[0]); help(HELP_USAGE); diff --git a/include/help.h b/include/help.h index 9af9541..018c5f7 100644 --- a/include/help.h +++ b/include/help.h @@ -48,6 +48,9 @@ typedef enum { HELP_DUMP_DEVICE, HELP_DUMP_CLOCK, HELP_DUMP_PROCESSOR, + HELP_ENABLE, + HELP_ENABLE_DEVICE, + HELP_ENABLE_CLOCK, HELP_ALL, HELP_CATEGORY_MAX, } help_category; diff --git a/include/k3conf.h b/include/k3conf.h index 03c66cf..f81dcfe 100644 --- a/include/k3conf.h +++ b/include/k3conf.h @@ -48,4 +48,5 @@ int process_dump_command(int argc, char *argv[]); int dump_clocks_info(int argc, char *argv[]); int dump_devices_info(int argc, char *argv[]); int dump_cpu_info(void); +int process_enable_command(int argc, char *argv[]); #endif