mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
video: Update video_set_default_colors() to support invert
It is useful to be able to invert the colours in some cases so that the text matches the background colour. Add a parameter to the function to support this. It is strange that function takes a private data structure from another driver as an argument. It seems better to pass the device and have the function internally work out how to find its required information. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
4b6dbaa307
commit
b9f210a35c
3 changed files with 23 additions and 11 deletions
|
@ -344,7 +344,7 @@ static void vidconsole_escape_char(struct udevice *dev, char ch)
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case 0:
|
case 0:
|
||||||
/* all attributes off */
|
/* all attributes off */
|
||||||
video_set_default_colors(vid_priv);
|
video_set_default_colors(dev->parent, false);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
/* bold */
|
/* bold */
|
||||||
|
|
|
@ -115,18 +115,29 @@ int video_clear(struct udevice *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void video_set_default_colors(struct video_priv *priv)
|
void video_set_default_colors(struct udevice *dev, bool invert)
|
||||||
{
|
{
|
||||||
|
struct video_priv *priv = dev_get_uclass_priv(dev);
|
||||||
|
int fore, back;
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_WHITE_ON_BLACK
|
#ifdef CONFIG_SYS_WHITE_ON_BLACK
|
||||||
/* White is used when switching to bold, use light gray here */
|
/* White is used when switching to bold, use light gray here */
|
||||||
priv->fg_col_idx = VID_LIGHT_GRAY;
|
fore = VID_LIGHT_GRAY;
|
||||||
priv->colour_fg = vid_console_color(priv, VID_LIGHT_GRAY);
|
back = VID_BLACK;
|
||||||
priv->colour_bg = vid_console_color(priv, VID_BLACK);
|
|
||||||
#else
|
#else
|
||||||
priv->fg_col_idx = VID_BLACK;
|
fore = VID_BLACK;
|
||||||
priv->colour_fg = vid_console_color(priv, VID_BLACK);
|
back = VID_WHITE;
|
||||||
priv->colour_bg = vid_console_color(priv, VID_WHITE);
|
|
||||||
#endif
|
#endif
|
||||||
|
if (invert) {
|
||||||
|
int temp;
|
||||||
|
|
||||||
|
temp = fore;
|
||||||
|
fore = back;
|
||||||
|
back = temp;
|
||||||
|
}
|
||||||
|
priv->fg_col_idx = fore;
|
||||||
|
priv->colour_fg = vid_console_color(priv, fore);
|
||||||
|
priv->colour_bg = vid_console_color(priv, back);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Flush video activity to the caches */
|
/* Flush video activity to the caches */
|
||||||
|
@ -219,7 +230,7 @@ static int video_post_probe(struct udevice *dev)
|
||||||
priv->fb_size = priv->line_length * priv->ysize;
|
priv->fb_size = priv->line_length * priv->ysize;
|
||||||
|
|
||||||
/* Set up colors */
|
/* Set up colors */
|
||||||
video_set_default_colors(priv);
|
video_set_default_colors(dev, false);
|
||||||
|
|
||||||
if (!CONFIG_IS_ENABLED(NO_FB_CLEAR))
|
if (!CONFIG_IS_ENABLED(NO_FB_CLEAR))
|
||||||
video_clear(dev);
|
video_clear(dev);
|
||||||
|
|
|
@ -191,9 +191,10 @@ void video_set_flush_dcache(struct udevice *dev, bool flush);
|
||||||
/**
|
/**
|
||||||
* Set default colors and attributes
|
* Set default colors and attributes
|
||||||
*
|
*
|
||||||
* @priv device information
|
* @dev: video device
|
||||||
|
* @invert true to invert colours
|
||||||
*/
|
*/
|
||||||
void video_set_default_colors(struct video_priv *priv);
|
void video_set_default_colors(struct udevice *dev, bool invert);
|
||||||
|
|
||||||
#endif /* CONFIG_DM_VIDEO */
|
#endif /* CONFIG_DM_VIDEO */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue