
Hi Rob,
On Fri, Aug 4, 2017 at 7:52 PM, Rob Clark robdclark@gmail.com wrote:
stdin might not be set, which would cause iomux_doenv() to fail therefore causing probe_usb_keyboard() to fail. Furthermore if we do have iomux enabled, the sensible thing (in terms of user experience) would be to simply add ourselves to the list of stdin devices.
This fixes an issue with usbkbd on dragonboard410c with distro- bootcmd, where stdin is not set (so stdinname is null).
Signed-off-by: Rob Clark robdclark@gmail.com
v2: address Bin's review comments v3: fix fail with free()ing if usbkbd is already in stdin env variable pointed out by Simon
Can you please indicate the version number in the email title next time? It's really hard to track which version the patch is.
common/usb_kbd.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/common/usb_kbd.c b/common/usb_kbd.c index d2d29cc98f..703dd748f5 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -517,7 +517,22 @@ static int probe_usb_keyboard(struct usb_device *dev)
stdinname = getenv("stdin");
#if CONFIG_IS_ENABLED(CONSOLE_MUX)
char *devname = DEVNAME;
/*
* stdin might not be set yet.. either way, with console-mux the
* sensible thing to do is add ourselves to the list of stdio
* devices:
*/
if (stdinname && !strstr(stdinname, DEVNAME)) {
char *newstdin = malloc(strlen(stdinname) + strlen(","DEVNAME) + 1);
sprintf(newstdin, "%s,"DEVNAME, stdinname);
stdinname = newstdin;
} else if (!stdinname) {
stdinname = devname;
} error = iomux_doenv(stdin, stdinname);
if (stdinname != devname)
free(stdinname); if (error) return error;
#else
And what's the difference between this "v3" and previous "v2"?
Previous v2 is here: http://patchwork.ozlabs.org/patch/797418/
Regards, Bin