1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * The 'conitrace' command prints the codes received from the console input as 4 * hexadecimal numbers. 5 * 6 * Copyright (c) 2018, Heinrich Schuchardt <xypron.glpk@gmx.de> 7 */ 8#include <common.h> 9#include <command.h> 10#include <linux/delay.h> 11 12static int do_conitrace(struct cmd_tbl *cmdtp, int flag, int argc, 13 char *const argv[]) 14{ 15 bool first = true; 16 17 printf("Waiting for your input\n"); 18 printf("To terminate type 'x'\n"); 19 20 /* Empty input buffer */ 21 while (tstc()) 22 getchar(); 23 24 for (;;) { 25 int c = getchar(); 26 27 if (first && (c == 'x' || c == 'X')) 28 break; 29 30 printf("%02x ", c); 31 first = false; 32 33 /* 10 ms delay - serves to detect separate keystrokes */ 34 udelay(10000); 35 if (!tstc()) { 36 printf("\n"); 37 first = true; 38 } 39 } 40 41 return CMD_RET_SUCCESS; 42} 43 44U_BOOT_LONGHELP(conitrace, ""); 45 46U_BOOT_CMD_COMPLETE( 47 conitrace, 2, 0, do_conitrace, 48 "trace console input", 49 conitrace_help_text, NULL 50); 51