tegra: add CONSOLE_MUX support to tegra-kbc
Subsystems (2)
PATCH 1/1 tegra: add CONSOLE_MUX support to tegra-kbc
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.
--- drivers/input/tegra-kbc.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)
drivers/input/tegra-kbc.c +17 -1
@@ -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 ; }
Signature · 1 line
1.7.10.4
PATCH 1/1 tegra: add CONSOLE_MUX support to tegra-kbc
Dear Allen Martin,
Quoted 5 lines
Add support for
CONSOLE_MUXto 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 intoiomux_doenv()fromdrv_keyboard_initto 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
PATCH 1/1 tegra: add CONSOLE_MUX support to tegra-kbc
In reply to Allen MartinHi Allen,
Quoted 24 lines · Allen Martin
Add support for
CONSOLE_MUXto 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 intoiomux_doenv()fromdrv_keyboard_initto re-evaluate the stdin string.Signed-off-by Allen Martin <[email protected]>--- drivers/input/tegra-kbc.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)drivers/input/tegra-kbc.c +1
-0@@ -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.
drivers/input/tegra-kbc.c static void tegra_kbc_open(void) · line 313
Quoted 7 lines
drivers/input/tegra-kbc.c +4
-0@@ -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?
Quoted 36 lines
drivers/input/tegra-kbc.c +12
-2#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 ; } --
Quoted 2 lines
1.7.10.4
Regards,
Simon