diff options
Diffstat (limited to 'util/ectool.c')
-rw-r--r-- | util/ectool.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/util/ectool.c b/util/ectool.c index 28a141d65c..028828ebd5 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -1302,8 +1302,13 @@ static void cmd_rgbkbd_help(char *cmd) "\n" " Usage3: %s demo <num>\n" " Run demo-<num>. 0: Off, 1: Flow, 2: Dot.\n" + "\n" + " Usage4: %s scale <key> <val>\n" + " Set the scale parameter of key_<key> to <val>.\n" + " <val> is a 24-bit integer where scale values are encoded\n" + " as R=23:16, G=15:8, B=7:0.\n" "\n", - cmd, cmd, cmd); + cmd, cmd, cmd, cmd); } static int cmd_rgbkbd_parse_rgb_text(const char *text, struct rgb_s *color) @@ -1395,6 +1400,22 @@ static int cmd_rgbkbd(int argc, char *argv[]) p.subcmd = EC_RGBKBD_SUBCMD_DEMO; p.demo = val; rv = ec_command(EC_CMD_RGBKBD, 0, &p, sizeof(p), NULL, 0); + } else if (argc == 4 && !strcasecmp(argv[1], "scale")) { + /* Usage 4 */ + struct ec_params_rgbkbd p; + + val = strtol(argv[2], &e, 0); + if ((e && *e) || val > EC_RGBKBD_MAX_KEY_COUNT) { + fprintf(stderr, "Invalid key number: %s\n", argv[2]); + return -1; + } + p.set_scale.key = val; + if (cmd_rgbkbd_parse_rgb_text(argv[3], &p.set_scale.scale)) { + fprintf(stderr, "Invalid scale value: %s\n", argv[3]); + return -1; + } + p.subcmd = EC_RGBKBD_SUBCMD_SET_SCALE; + rv = ec_command(EC_CMD_RGBKBD, 0, &p, sizeof(p), NULL, 0); } else { /* Usage 1 */ rv = cmd_rgbkbd_set_color(argc, argv); |