Message ID | 1351813276-20499-1-git-send-email-amartin@nvidia.com |
---|---|
State | Accepted |
Delegated to: | Tom Warren |
Headers | show |
Dear Allen Martin, > 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. Thanks ;-) I'll soon be tearing iomux apart btw., it looks like a bucket of crap :-( Best regards, Marek Vasut
Hi Allen, On Thu, Nov 1, 2012 at 4:41 PM, Allen Martin <amartin@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@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
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; + #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; }
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@nvidia.com> --- drivers/input/tegra-kbc.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)