video: Provide an option to enable the cursor

The video cursor is always enabled at present, but it is only used for
expo. Put it behind an option, to reduce code size for platforms which
do use video but don't want a cursor.

Move the existing set_cursor_visible() method behind this option, for
the normal console. For the truetype console, the fonts and extra
rendering dwarf the code-size saving, so include the cursor there
always.

Once the cursor is enabled for the CLI, this will produce code-size
savings.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2025-09-18 14:04:26 -06:00
parent 1ecfbbcbad
commit 2986bf7bcb
4 changed files with 24 additions and 2 deletions

View File

@@ -68,6 +68,14 @@ config BACKLIGHT
This provides backlight uclass driver that enables basic panel
backlight support.
config CURSOR
bool "Show a cursor on the console"
default y
help
Show a cursor on the video console when entering commands. This is
a simple vertical bar drawn before the character at the current
position. The cursor makes it easy to see the current input position.
config VIDEO_PCI_DEFAULT_FB_SIZE
hex "Default framebuffer size to use if no drivers request it"
default 0x1000000 if X86

View File

@@ -105,8 +105,9 @@ static int console_putc_xy(struct udevice *dev, uint x_frac, uint y, int cp)
return VID_TO_POS(fontdata->width);
}
static int console_set_cursor_visible(struct udevice *dev, bool visible,
uint x, uint y, uint index)
static int __maybe_unused console_set_cursor_visible(struct udevice *dev,
bool visible, uint x,
uint y, uint index)
{
struct vidconsole_priv *vc_priv = dev_get_uclass_priv(dev);
struct udevice *vid = dev->parent;
@@ -140,7 +141,9 @@ struct vidconsole_ops console_ops = {
.get_font_size = console_simple_get_font_size,
.get_font = console_simple_get_font,
.select_font = console_simple_select_font,
#ifdef CONFIG_CURSOR
.set_cursor_visible = console_set_cursor_visible,
#endif
};
U_BOOT_DRIVER(vidconsole_normal) = {

View File

@@ -701,6 +701,7 @@ int vidconsole_entry_restore(struct udevice *dev, struct abuf *buf)
return 0;
}
#ifdef CONFIG_CURSOR
int vidconsole_set_cursor_visible(struct udevice *dev, bool visible,
uint x, uint y, uint index)
{
@@ -715,6 +716,7 @@ int vidconsole_set_cursor_visible(struct udevice *dev, bool visible,
return 0;
}
#endif
void vidconsole_push_colour(struct udevice *dev, enum colour_idx fg,
enum colour_idx bg, struct vidconsole_colour *old)

View File

@@ -404,6 +404,7 @@ int vidconsole_entry_save(struct udevice *dev, struct abuf *buf);
*/
int vidconsole_entry_restore(struct udevice *dev, struct abuf *buf);
#ifdef CONFIG_CURSOR
/**
* vidconsole_set_cursor_visible() - Show or hide the cursor
*
@@ -418,6 +419,14 @@ int vidconsole_entry_restore(struct udevice *dev, struct abuf *buf);
*/
int vidconsole_set_cursor_visible(struct udevice *dev, bool visible,
uint x, uint y, uint index);
#else
static inline int vidconsole_set_cursor_visible(struct udevice *dev,
bool visible, uint x, uint y,
uint index)
{
return 0;
}
#endif /* CONFIG_CURSOR */
/**
* vidconsole_push_colour() - Temporarily change the font colour