dm: usb: Deal with USB keyboard persisting across tests

Clear any USB-keyboard devices before running a unit test, to avoid
using a stale udevice pointer in stdio. Add a long comment to explain
this situation and why this solution seems best, at least for now.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2024-09-01 16:26:20 -06:00 committed by Tom Rini
parent 010c449263
commit bc624321dc
5 changed files with 97 additions and 0 deletions

View file

@ -1243,3 +1243,37 @@ int console_init_r(void)
}
#endif /* CONFIG_IS_ENABLED(SYS_CONSOLE_IS_IN_ENV) */
int console_remove_by_name(const char *name)
{
int err = 0;
#if CONFIG_IS_ENABLED(CONSOLE_MUX)
int fnum;
log_debug("removing console device %s\n", name);
for (fnum = 0; fnum < MAX_FILES; fnum++) {
struct stdio_dev **src, **dest;
int i;
log_debug("file %d: %d devices: ", fnum, cd_count[fnum]);
src = console_devices[fnum];
dest = src;
for (i = 0; i < cd_count[fnum]; i++, src++) {
struct stdio_dev *sdev = *src;
int ret = 0;
if (!strcmp(sdev->name, name))
ret = stdio_deregister_dev(sdev, true);
else
*dest++ = *src;
if (ret && !err)
err = ret;
}
cd_count[fnum] = dest - console_devices[fnum];
log_debug("now %d\n", cd_count[fnum]);
}
#endif /* CONSOLE_MUX */
return err;
}