[U-Boot] [PATCH 06/28] dm: stdio: Plumb in the new keyboard uclass
Simon Glass
sjg at chromium.org
Mon Oct 19 01:17:16 CEST 2015
Hi Bin,
On 15 September 2015 at 00:11, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Simon,
>
> On Wed, Sep 9, 2015 at 12:32 PM, Simon Glass <sjg at 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 <sjg at chromium.org>
>> ---
>>
>
> Reviewed-by: Bin Meng <bmeng.cn at 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(sjg at 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?
We can once 'novena' is converted over.
>
>> drv_keyboard_init ();
>> #endif
>> #ifdef CONFIG_LOGBUFFER
>> --
Regards,
Simon
More information about the U-Boot
mailing list