When driver model is used for keyboards we must scan the available keyboards and register them with stdio. Add code to do this.
At some point (once LCD/video is converted) we should be able to convert stdio to driver model and avoid these dual data structures. Signed-off-by: Simon Glass <s...@chromium.org> --- common/stdio.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/common/stdio.c b/common/stdio.c index adbfc89..71cc32e 100644 --- a/common/stdio.c +++ b/common/stdio.c @@ -11,6 +11,7 @@ #include <config.h> #include <common.h> +#include <dm.h> #include <errno.h> #include <stdarg.h> #include <malloc.h> @@ -24,6 +25,8 @@ #include <i2c.h> #endif +#include <dm/device-internal.h> + DECLARE_GLOBAL_DATA_PTR; static struct stdio_dev devs; @@ -245,6 +248,32 @@ int stdio_init_tables(void) int stdio_add_devices(void) { +#ifdef CONFIG_DM_KEYBOARD + struct udevice *dev; + struct uclass *uc; + int ret; + + /* + * For now we probe all the devices here. At some point this should be + * done only when the devices are required - e.g. we have a list of + * input devices to start up in the stdin environment variable. That + * work probably makes more sense when stdio itself is converted to + * driver model. + * + * TODO(s...@chromium.org): Convert changing uclass_first_device() etc. + * to return the device even on error. Then we could use that here. + */ + ret = uclass_get(UCLASS_KEYBOARD, &uc); + if (ret) + return ret; + + /* Don't report errors to the caller - assume that they are non-fatal */ + uclass_foreach_dev(dev, uc) { + ret = device_probe(dev); + if (ret) + printf("Failed to probe keyboard '%s'\n", dev->name); + } +#endif #ifdef CONFIG_SYS_I2C i2c_init_all(); #else @@ -258,7 +287,7 @@ int stdio_add_devices(void) #if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) drv_video_init (); #endif -#ifdef CONFIG_KEYBOARD +#if defined(CONFIG_KEYBOARD) && !defined(CONFIG_DM_KEYBOARD) drv_keyboard_init (); #endif #ifdef CONFIG_LOGBUFFER -- 2.6.0.rc0.131.gf624c3d _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot