|
@@ -63,6 +63,7 @@ static struct keyb {
|
|
struct kbc_tegra *kbc; /* tegra keyboard controller */
|
|
struct kbc_tegra *kbc; /* tegra keyboard controller */
|
|
unsigned char inited; /* 1 if keyboard has been inited */
|
|
unsigned char inited; /* 1 if keyboard has been inited */
|
|
unsigned char first_scan; /* 1 if this is our first key scan */
|
|
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.
|
|
* 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)
|
|
static int init_tegra_keyboard(void)
|
|
{
|
|
{
|
|
|
|
+ /* check if already created */
|
|
|
|
+ if (config.created)
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
#ifdef CONFIG_OF_CONTROL
|
|
#ifdef CONFIG_OF_CONTROL
|
|
int node;
|
|
int node;
|
|
|
|
|
|
@@ -349,6 +354,7 @@ static int init_tegra_keyboard(void)
|
|
config_kbc_gpio(config.kbc);
|
|
config_kbc_gpio(config.kbc);
|
|
|
|
|
|
tegra_kbc_open();
|
|
tegra_kbc_open();
|
|
|
|
+ config.created = 1;
|
|
debug("%s: Tegra keyboard ready\n", __func__);
|
|
debug("%s: Tegra keyboard ready\n", __func__);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -357,6 +363,8 @@ static int init_tegra_keyboard(void)
|
|
int drv_keyboard_init(void)
|
|
int drv_keyboard_init(void)
|
|
{
|
|
{
|
|
struct stdio_dev dev;
|
|
struct stdio_dev dev;
|
|
|
|
+ char *stdinname = getenv("stdin");
|
|
|
|
+ int error;
|
|
|
|
|
|
if (input_init(&config.input, 0)) {
|
|
if (input_init(&config.input, 0)) {
|
|
debug("%s: Cannot set up input\n", __func__);
|
|
debug("%s: Cannot set up input\n", __func__);
|
|
@@ -372,5 +380,13 @@ int drv_keyboard_init(void)
|
|
dev.start = init_tegra_keyboard;
|
|
dev.start = init_tegra_keyboard;
|
|
|
|
|
|
/* Register the device. init_tegra_keyboard() will be called soon */
|
|
/* 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;
|
|
}
|
|
}
|