x86: video: Allow keyboard presence to be controlled by device tree
At present a VGA console assumes a keyboard unless a CONFIG option is set. This difference can be dealt with by a device tree option, allowing boards that are otherwise the same to use the same configuration. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -171,6 +171,22 @@ After board configuration is done, fdt supported u-boot can be build in two ways
|
|||||||
$ make DEVICE_TREE=<dts-file-name>
|
$ make DEVICE_TREE=<dts-file-name>
|
||||||
|
|
||||||
|
|
||||||
|
Configuration Options
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
A number of run-time configuration options are provided in the /config node
|
||||||
|
of the control device tree. You can access these using fdtdec_get_config_int(),
|
||||||
|
fdtdec_get_config_bool() and fdtdec_get_config_string().
|
||||||
|
|
||||||
|
Available options are:
|
||||||
|
|
||||||
|
silent-console
|
||||||
|
If present and non-zero, the console is silenced by default on boot.
|
||||||
|
|
||||||
|
no-keyboard
|
||||||
|
Tells U-Boot not to expect an attached keyboard with a VGA console
|
||||||
|
|
||||||
|
|
||||||
Limitations
|
Limitations
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
|||||||
@@ -87,6 +87,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <fdtdec.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
@@ -2251,6 +2252,7 @@ int drv_video_init(void)
|
|||||||
{
|
{
|
||||||
int skip_dev_init;
|
int skip_dev_init;
|
||||||
struct stdio_dev console_dev;
|
struct stdio_dev console_dev;
|
||||||
|
bool have_keyboard;
|
||||||
|
|
||||||
/* Check if video initialization should be skipped */
|
/* Check if video initialization should be skipped */
|
||||||
if (board_video_skip())
|
if (board_video_skip())
|
||||||
@@ -2262,11 +2264,20 @@ int drv_video_init(void)
|
|||||||
if (board_cfb_skip())
|
if (board_cfb_skip())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#if !defined(CONFIG_VGA_AS_SINGLE_DEVICE)
|
#if defined(CONFIG_VGA_AS_SINGLE_DEVICE)
|
||||||
debug("KBD: Keyboard init ...\n");
|
have_keyboard = false;
|
||||||
skip_dev_init |= (VIDEO_KBD_INIT_FCT == -1);
|
#elif defined(CONFIG_OF_CONTROL)
|
||||||
|
have_keyboard = !fdtdec_get_config_bool(gd->fdt_blob,
|
||||||
|
"u-boot,no-keyboard");
|
||||||
|
#else
|
||||||
|
have_keyboard = true;
|
||||||
#endif
|
#endif
|
||||||
|
if (have_keyboard) {
|
||||||
|
debug("KBD: Keyboard init ...\n");
|
||||||
|
#if !defined(CONFIG_VGA_AS_SINGLE_DEVICE)
|
||||||
|
skip_dev_init |= (VIDEO_KBD_INIT_FCT == -1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
if (skip_dev_init)
|
if (skip_dev_init)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -2279,11 +2290,13 @@ int drv_video_init(void)
|
|||||||
console_dev.puts = video_puts; /* 'puts' function */
|
console_dev.puts = video_puts; /* 'puts' function */
|
||||||
|
|
||||||
#if !defined(CONFIG_VGA_AS_SINGLE_DEVICE)
|
#if !defined(CONFIG_VGA_AS_SINGLE_DEVICE)
|
||||||
/* Also init console device */
|
if (have_keyboard) {
|
||||||
console_dev.flags |= DEV_FLAGS_INPUT;
|
/* Also init console device */
|
||||||
console_dev.tstc = VIDEO_TSTC_FCT; /* 'tstc' function */
|
console_dev.flags |= DEV_FLAGS_INPUT;
|
||||||
console_dev.getc = VIDEO_GETC_FCT; /* 'getc' function */
|
console_dev.tstc = VIDEO_TSTC_FCT; /* 'tstc' function */
|
||||||
#endif /* CONFIG_VGA_AS_SINGLE_DEVICE */
|
console_dev.getc = VIDEO_GETC_FCT; /* 'getc' function */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (stdio_register(&console_dev) != 0)
|
if (stdio_register(&console_dev) != 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user