Hi Simon, On Wed, Sep 9, 2015 at 12:32 PM, Simon Glass <s...@chromium.org> wrote: > 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> > --- >
Reviewed-by: Bin Meng <bmeng...@gmail.com> Please see one question below. > 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) Should we remove this non-dm driver call completely? > drv_keyboard_init (); > #endif > #ifdef CONFIG_LOGBUFFER > -- Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot