[U-Boot] [PATCH] tegra: add CONSOLE_MUX support to tegra-kbc

Simon Glass sjg at chromium.org
Wed Nov 7 22:31:06 CET 2012


Hi Allen,

On Thu, Nov 1, 2012 at 4:41 PM, Allen Martin <amartin at nvidia.com> wrote:
> Add support for CONSOLE_MUX to tegra-kbc driver.  This requires
> adding a flag to struct keyb to know the driver has already been
> initialized so if we try to initialize it again we can just return
> success.  Also call into iomux_doenv() from drv_keyboard_init to
> re-evaluate the stdin string.
>
> Signed-off-by: Allen Martin <amartin at nvidia.com>
> ---
>  drivers/input/tegra-kbc.c |   18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/input/tegra-kbc.c b/drivers/input/tegra-kbc.c
> index ab7a9e3..88471d3 100644
> --- a/drivers/input/tegra-kbc.c
> +++ b/drivers/input/tegra-kbc.c
> @@ -63,6 +63,7 @@ static struct keyb {
>         struct kbc_tegra *kbc;          /* tegra keyboard controller */
>         unsigned char inited;           /* 1 if keyboard has been inited */
>         unsigned char first_scan;       /* 1 if this is our first key scan */
> +       unsigned char created;          /* 1 if driver has been created */
>
>         /*
>          * After init we must wait a short time before polling the keyboard.
> @@ -306,6 +307,10 @@ static void tegra_kbc_open(void)
>   */
>  static int init_tegra_keyboard(void)
>  {
> +       /* check if already created */
> +       if (config.created)
> +               return 0;
> +

I think this code should go after the 'int node' declaration, shouldn't it?

>  #ifdef CONFIG_OF_CONTROL
>         int     node;
>
> @@ -349,6 +354,7 @@ static int init_tegra_keyboard(void)
>         config_kbc_gpio(config.kbc);
>
>         tegra_kbc_open();
> +       config.created = 1;
>         debug("%s: Tegra keyboard ready\n", __func__);
>
>         return 0;
> @@ -357,6 +363,8 @@ static int init_tegra_keyboard(void)
>  int drv_keyboard_init(void)
>  {
>         struct stdio_dev dev;
> +       char *stdinname = getenv("stdin");
> +       int error;
>
>         if (input_init(&config.input, 0)) {
>                 debug("%s: Cannot set up input\n", __func__);
> @@ -372,5 +380,13 @@ int drv_keyboard_init(void)
>         dev.start = init_tegra_keyboard;
>
>         /* Register the device. init_tegra_keyboard() will be called soon */
> -       return input_stdio_register(&dev);
> +       error = input_stdio_register(&dev);
> +       if (error)
> +               return error;
> +#ifdef CONFIG_CONSOLE_MUX
> +       error = iomux_doenv(stdin, stdinname);
> +       if (error)
> +               return error;
> +#endif
> +       return 0;
>  }
> --
> 1.7.10.4
>

Regards,
Simon


More information about the U-Boot mailing list