summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2016-01-21 11:49:49 -0500
committerTom Rini <trini@konsulko.com>2016-01-21 11:49:49 -0500
commit6905f4d3c7be46fed4859f51f0a8f9a1107c22e7 (patch)
treedd2fb0d12e56b3d69560b26a11ee0f0130ea0a5a /include
parent45fe3809b9923b92f221d70eb45ae071059fd5e0 (diff)
parent747440d0fa95f2205a8fcef49b6c7845700b6246 (diff)
downloadu-boot-imx-6905f4d3c7be46fed4859f51f0a8f9a1107c22e7.zip
u-boot-imx-6905f4d3c7be46fed4859f51f0a8f9a1107c22e7.tar.gz
u-boot-imx-6905f4d3c7be46fed4859f51f0a8f9a1107c22e7.tar.bz2
Merge git://git.denx.de/u-boot-dm
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/global_data.h4
-rw-r--r--include/bzlib.h3
-rw-r--r--include/clk.h42
-rw-r--r--include/configs/am335x_evm.h1
-rw-r--r--include/configs/am43xx_evm.h1
-rw-r--r--include/configs/colibri_vf.h1
-rw-r--r--include/configs/ls1021aqds.h1
-rw-r--r--include/configs/ls1021atwr.h3
-rw-r--r--include/configs/pcm052.h1
-rw-r--r--include/configs/sandbox.h13
-rw-r--r--include/configs/ti_omap5_common.h1
-rw-r--r--include/configs/vf610twr.h1
-rw-r--r--include/dm/test.h8
-rw-r--r--include/dm/uclass-id.h2
-rw-r--r--include/fdtdec.h1
-rw-r--r--include/lcd.h12
-rw-r--r--include/timer.h9
-rw-r--r--include/video.h168
-rw-r--r--include/video_console.h136
19 files changed, 375 insertions, 33 deletions
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
index 5d8b043..a587d3c 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -122,6 +122,10 @@ typedef struct global_data {
struct membuff console_out; /* console output */
struct membuff console_in; /* console input */
#endif
+#ifdef CONFIG_DM_VIDEO
+ ulong video_top; /* Top of video frame buffer area */
+ ulong video_bottom; /* Bottom of video frame buffer area */
+#endif
} gd_t;
#endif
diff --git a/include/bzlib.h b/include/bzlib.h
index 2d864d5..19314f8 100644
--- a/include/bzlib.h
+++ b/include/bzlib.h
@@ -68,7 +68,10 @@
/* Configure for U-Boot environment */
#define BZ_NO_STDIO
+
+#ifndef CONFIG_SANDBOX
#define BZ_NO_COMPRESS
+#endif
/* End of configuration for U-Boot environment */
#ifdef __cplusplus
diff --git a/include/clk.h b/include/clk.h
index 254ad2b..941808a 100644
--- a/include/clk.h
+++ b/include/clk.h
@@ -8,6 +8,10 @@
#ifndef _CLK_H_
#define _CLK_H_
+#include <linux/types.h>
+
+struct udevice;
+
int soc_clk_dump(void);
struct clk_ops {
@@ -29,19 +33,28 @@ struct clk_ops {
ulong (*set_rate)(struct udevice *dev, ulong rate);
/**
- * clk_set_periph_rate() - Set clock rate for a peripheral
- *
- * @dev: Device to adjust (UCLASS_CLK)
- * @rate: New clock rate in Hz
- * @return new clock rate in Hz, or -ve error code
- */
+ * enable() - Enable the clock for a peripheral
+ *
+ * @dev: clock provider
+ * @periph: Peripheral ID to enable
+ * @return zero on success, or -ve error code
+ */
+ int (*enable)(struct udevice *dev, int periph);
+
+ /**
+ * get_periph_rate() - Get clock rate for a peripheral
+ *
+ * @dev: Device to check (UCLASS_CLK)
+ * @periph: Peripheral ID to check
+ * @return clock rate in Hz, or -ve error code
+ */
ulong (*get_periph_rate)(struct udevice *dev, int periph);
/**
- * clk_set_periph_rate() - Set current clock rate for a peripheral
+ * set_periph_rate() - Set current clock rate for a peripheral
*
* @dev: Device to update (UCLASS_CLK)
- * @periph: Peripheral ID to cupdate
+ * @periph: Peripheral ID to update
* @return new clock rate in Hz, or -ve error code
*/
ulong (*set_periph_rate)(struct udevice *dev, int periph, ulong rate);
@@ -58,7 +71,7 @@ struct clk_ops {
ulong clk_get_rate(struct udevice *dev);
/**
- * set_rate() - Set current clock rate
+ * clk_set_rate() - Set current clock rate
*
* @dev: Device to adjust
* @rate: New clock rate in Hz
@@ -67,6 +80,15 @@ ulong clk_get_rate(struct udevice *dev);
ulong clk_set_rate(struct udevice *dev, ulong rate);
/**
+ * clk_enable() - Enable the clock for a peripheral
+ *
+ * @dev: clock provider
+ * @periph: Peripheral ID to enable
+ * @return zero on success, or -ve error code
+ */
+int clk_enable(struct udevice *dev, int periph);
+
+/**
* clk_get_periph_rate() - Get current clock rate for a peripheral
*
* @dev: Device to check (UCLASS_CLK)
@@ -78,7 +100,7 @@ ulong clk_get_periph_rate(struct udevice *dev, int periph);
* clk_set_periph_rate() - Set current clock rate for a peripheral
*
* @dev: Device to update (UCLASS_CLK)
- * @periph: Peripheral ID to cupdate
+ * @periph: Peripheral ID to update
* @return new clock rate in Hz, or -ve error code
*/
ulong clk_set_periph_rate(struct udevice *dev, int periph, ulong rate);
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index cf6a606..6ebe0b3 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -357,6 +357,7 @@
*/
#ifdef CONFIG_SPL_BUILD
#undef CONFIG_DM_MMC
+#undef CONFIG_TIMER
#endif
#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_USBETH_SUPPORT)
diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h
index de7538f..c3867ef 100644
--- a/include/configs/am43xx_evm.h
+++ b/include/configs/am43xx_evm.h
@@ -144,6 +144,7 @@
#undef CONFIG_DM_MMC
#undef CONFIG_DM_SPI
#undef CONFIG_DM_SPI_FLASH
+#undef CONFIG_TIMER
#endif
#ifndef CONFIG_SPL_BUILD
diff --git a/include/configs/colibri_vf.h b/include/configs/colibri_vf.h
index 708c79a..5aed3a5 100644
--- a/include/configs/colibri_vf.h
+++ b/include/configs/colibri_vf.h
@@ -36,7 +36,6 @@
#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_FSL_LPUART
#define LPUART_BASE UART0_BASE
/* Allow to overwrite serial and ethaddr */
diff --git a/include/configs/ls1021aqds.h b/include/configs/ls1021aqds.h
index 2e8dbc7..e8b1eca 100644
--- a/include/configs/ls1021aqds.h
+++ b/include/configs/ls1021aqds.h
@@ -371,7 +371,6 @@ unsigned long get_board_ddr_clk(void);
* Serial Port
*/
#ifdef CONFIG_LPUART
-#define CONFIG_FSL_LPUART
#define CONFIG_LPUART_32B_REG
#else
#define CONFIG_CONS_INDEX 1
diff --git a/include/configs/ls1021atwr.h b/include/configs/ls1021atwr.h
index c12ba3a..317ba62 100644
--- a/include/configs/ls1021atwr.h
+++ b/include/configs/ls1021atwr.h
@@ -266,12 +266,13 @@
* Serial Port
*/
#ifdef CONFIG_LPUART
-#define CONFIG_FSL_LPUART
#define CONFIG_LPUART_32B_REG
#else
#define CONFIG_CONS_INDEX 1
#define CONFIG_SYS_NS16550_SERIAL
+#ifndef CONFIG_DM_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE 1
+#endif
#define CONFIG_SYS_NS16550_CLK get_serial_clock()
#endif
diff --git a/include/configs/pcm052.h b/include/configs/pcm052.h
index b851bba..891bdb0 100644
--- a/include/configs/pcm052.h
+++ b/include/configs/pcm052.h
@@ -27,7 +27,6 @@
#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_FSL_LPUART
#define LPUART_BASE UART1_BASE
/* Allow to overwrite serial and ethaddr */
diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h
index d3112e1..6498981 100644
--- a/include/configs/sandbox.h
+++ b/include/configs/sandbox.h
@@ -158,24 +158,23 @@
/* LCD and keyboard require SDL support */
#ifdef CONFIG_SANDBOX_SDL
-#define CONFIG_LCD
-#define CONFIG_VIDEO_SANDBOX_SDL
#define CONFIG_CMD_BMP
-#define CONFIG_BOARD_EARLY_INIT_F
#define CONFIG_CONSOLE_MUX
#define CONFIG_SYS_CONSOLE_IS_IN_ENV
#define LCD_BPP LCD_COLOR16
#define CONFIG_LCD_BMP_RLE8
+#define CONFIG_VIDEO_BMP_RLE8
+#define CONFIG_SPLASH_SCREEN_ALIGN
#define CONFIG_KEYBOARD
#define SANDBOX_SERIAL_SETTINGS "stdin=serial,cros-ec-keyb,usbkbd\0" \
- "stdout=serial,lcd\0" \
- "stderr=serial,lcd\0"
+ "stdout=serial,lcd.vidconsole\0" \
+ "stderr=serial,lcd.vidconsole\0"
#else
#define SANDBOX_SERIAL_SETTINGS "stdin=serial\0" \
- "stdout=serial,lcd\0" \
- "stderr=serial,lcd\0"
+ "stdout=serial,lcd.vidconsole\0" \
+ "stderr=serial,lcd.vidconsole\0"
#endif
#define SANDBOX_ETH_SETTINGS "ethaddr=00:00:11:22:33:44\0" \
diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h
index 2d492f8..d164e6a 100644
--- a/include/configs/ti_omap5_common.h
+++ b/include/configs/ti_omap5_common.h
@@ -164,6 +164,7 @@
*/
#ifdef CONFIG_SPL_BUILD
#undef CONFIG_DM_MMC
+#undef CONFIG_TIMER
#endif
#endif /* __CONFIG_TI_OMAP5_COMMON_H */
diff --git a/include/configs/vf610twr.h b/include/configs/vf610twr.h
index 34df6f0..dcfafaf 100644
--- a/include/configs/vf610twr.h
+++ b/include/configs/vf610twr.h
@@ -34,7 +34,6 @@
#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_FSL_LPUART
#define LPUART_BASE UART1_BASE
/* Allow to overwrite serial and ethaddr */
diff --git a/include/dm/test.h b/include/dm/test.h
index a4bc5c8..ca924d9 100644
--- a/include/dm/test.h
+++ b/include/dm/test.h
@@ -155,6 +155,14 @@ enum {
/* Declare a new driver model test */
#define DM_TEST(_name, _flags) UNIT_TEST(_name, _flags, dm_test)
+/* This platform data is needed in tests, so declare it here */
+struct sandbox_sdl_plat {
+ int xres;
+ int yres;
+ int bpix;
+ int rot;
+};
+
/* Declare ping methods for the drivers */
int test_ping(struct udevice *dev, int pingval, int *pingret);
int testfdt_ping(struct udevice *dev, int pingval, int *pingret);
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index 27fa0b6..a0a3a79 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -66,7 +66,9 @@ enum uclass_id {
UCLASS_USB, /* USB bus */
UCLASS_USB_DEV_GENERIC, /* USB generic device */
UCLASS_USB_HUB, /* USB hub */
+ UCLASS_VIDEO, /* Video or LCD device */
UCLASS_VIDEO_BRIDGE, /* Video bridge, e.g. DisplayPort to LVDS */
+ UCLASS_VIDEO_CONSOLE, /* Text console driver for video device */
UCLASS_COUNT,
UCLASS_INVALID = -1,
diff --git a/include/fdtdec.h b/include/fdtdec.h
index 27b350e..25e98c9 100644
--- a/include/fdtdec.h
+++ b/include/fdtdec.h
@@ -151,7 +151,6 @@ enum fdt_compat_id {
COMPAT_GENERIC_SPI_FLASH, /* Generic SPI Flash chip */
COMPAT_MAXIM_98095_CODEC, /* MAX98095 Codec */
COMPAT_SAMSUNG_EXYNOS5_I2C, /* Exynos5 High Speed I2C Controller */
- COMPAT_SANDBOX_LCD_SDL, /* Sandbox LCD emulation with SDL */
COMPAT_SAMSUNG_EXYNOS_SYSMMU, /* Exynos sysmmu */
COMPAT_INTEL_MICROCODE, /* Intel microcode update */
COMPAT_MEMORY_SPD, /* Memory SPD information */
diff --git a/include/lcd.h b/include/lcd.h
index 59202b7..d7651a8 100644
--- a/include/lcd.h
+++ b/include/lcd.h
@@ -18,6 +18,12 @@
#include <asm/byteorder.h>
#endif
+int bmp_display(ulong addr, int x, int y);
+struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp,
+ void **alloc_addr);
+
+#ifndef CONFIG_DM_VIDEO
+
extern char lcd_is_enabled;
extern int lcd_line_length;
extern struct vidinfo panel_info;
@@ -26,10 +32,6 @@ void lcd_ctrl_init(void *lcdbase);
void lcd_enable(void);
void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue);
-struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp,
- void **alloc_addr);
-int bmp_display(ulong addr, int x, int y);
-
/**
* Set whether we need to flush the dcache when changing the LCD image. This
* defaults to off.
@@ -209,4 +211,6 @@ void lcd_sync(void);
#define PAGE_SIZE 4096
#endif
+#endif /* !CONFIG_DM_VIDEO */
+
#endif /* _LCD_H_ */
diff --git a/include/timer.h b/include/timer.h
index 7fee17e..f14725c 100644
--- a/include/timer.h
+++ b/include/timer.h
@@ -8,6 +8,15 @@
#define _TIMER_H_
/*
+ * dm_timer_init - initialize a timer for time keeping. On success
+ * initializes gd->timer so that lib/timer can use it for future
+ * referrence.
+ *
+ * @return - 0 on success or error number
+ */
+int dm_timer_init(void);
+
+/*
* timer_conv_64 - convert 32-bit counter value to 64-bit
*
* @count: 32-bit counter value
diff --git a/include/video.h b/include/video.h
index 65e4ec1..b20f06f 100644
--- a/include/video.h
+++ b/include/video.h
@@ -1,14 +1,167 @@
/*
-** MPC823 Video Controller
-** =======================
-** (C) 2000 by Paolo Scaffardi (arsenio@tin.it)
-** AIRVENT SAM s.p.a - RIMINI(ITALY)
-**
-*/
+ * Video uclass and legacy implementation
+ *
+ * Copyright (c) 2015 Google, Inc
+ *
+ * MPC823 Video Controller
+ * =======================
+ * (C) 2000 by Paolo Scaffardi (arsenio@tin.it)
+ * AIRVENT SAM s.p.a - RIMINI(ITALY)
+ *
+ */
#ifndef _VIDEO_H_
#define _VIDEO_H_
+#ifdef CONFIG_DM_VIDEO
+
+#include <stdio_dev.h>
+
+struct video_uc_platdata {
+ uint align;
+ uint size;
+ ulong base;
+};
+
+/*
+ * Bits per pixel selector. Each value n is such that the bits-per-pixel is
+ * 2 ^ n
+ */
+enum video_log2_bpp {
+ VIDEO_BPP1 = 0,
+ VIDEO_BPP2,
+ VIDEO_BPP4,
+ VIDEO_BPP8,
+ VIDEO_BPP16,
+ VIDEO_BPP32,
+};
+
+/*
+ * Convert enum video_log2_bpp to bytes and bits. Note we omit the outer
+ * brackets to allow multiplication by fractional pixels.
+ */
+#define VNBYTES(bpix) (1 << (bpix)) / 8
+
+#define VNBITS(bpix) (1 << (bpix))
+
+/**
+ * struct video_priv - Device information used by the video uclass
+ *
+ * @xsize: Number of pixel columns (e.g. 1366)
+ * @ysize: Number of pixels rows (e.g.. 768)
+ * @tor: Display rotation (0=none, 1=90 degrees clockwise, etc.)
+ * @bpix: Encoded bits per pixel
+ * @fb: Frame buffer
+ * @fb_size: Frame buffer size
+ * @line_length: Length of each frame buffer line, in bytes
+ * @colour_fg: Foreground colour (pixel value)
+ * @colour_bg: Background colour (pixel value)
+ * @flush_dcache: true to enable flushing of the data cache after
+ * the LCD is updated
+ * @cmap: Colour map for 8-bit-per-pixel displays
+ */
+struct video_priv {
+ /* Things set up by the driver: */
+ ushort xsize;
+ ushort ysize;
+ ushort rot;
+ enum video_log2_bpp bpix;
+
+ /*
+ * Things that are private to the uclass: don't use these in the
+ * driver
+ */
+ void *fb;
+ int fb_size;
+ int line_length;
+ int colour_fg;
+ int colour_bg;
+ bool flush_dcache;
+ ushort *cmap;
+};
+
+/* Placeholder - there are no video operations at present */
+struct video_ops {
+};
+
+#define video_get_ops(dev) ((struct video_ops *)(dev)->driver->ops)
+
+/**
+ * video_reserve() - Reserve frame-buffer memory for video devices
+ *
+ * Note: This function is for internal use.
+ *
+ * This uses the uclass platdata's @size and @align members to figure out
+ * a size and position for each frame buffer as part of the pre-relocation
+ * process of determining the post-relocation memory layout.
+ *
+ * gd->video_top is set to the initial value of *@addrp and gd->video_bottom
+ * is set to the final value.
+ *
+ * @addrp: On entry, the top of available memory. On exit, the new top,
+ * after allocating the required memory.
+ * @return 0
+ */
+int video_reserve(ulong *addrp);
+
+/**
+ * video_sync() - Sync a device's frame buffer with its hardware
+ *
+ * Some frame buffers are cached or have a secondary frame buffer. This
+ * function syncs these up so that the current contents of the U-Boot frame
+ * buffer are displayed to the user.
+ *
+ * @dev: Device to sync
+ */
+void video_sync(struct udevice *vid);
+
+/**
+ * video_sync_all() - Sync all devices' frame buffers with there hardware
+ *
+ * This calls video_sync() on all active video devices.
+ */
+void video_sync_all(void);
+
+/**
+ * video_bmp_display() - Display a BMP file
+ *
+ * @dev: Device to display the bitmap on
+ * @bmp_image: Address of bitmap image to display
+ * @x: X position in pixels from the left
+ * @y: Y position in pixels from the top
+ * @align: true to adjust the coordinates to centre the image. If false
+ * the coordinates are used as is. If true:
+ *
+ * - if a coordinate is 0x7fff then the image will be centred in
+ * that direction
+ * - if a coordinate is -ve then it will be offset to the
+ * left/top of the centre by that many pixels
+ * - if a coordinate is positive it will be used unchnaged.
+ * @return 0 if OK, -ve on error
+ */
+int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
+ bool align);
+
+/**
+ * video_get_xsize() - Get the width of the display in pixels
+ *
+ * @dev: Device to check
+ * @return device frame buffer width in pixels
+ */
+int video_get_xsize(struct udevice *dev);
+
+/**
+ * video_get_ysize() - Get the height of the display in pixels
+ *
+ * @dev: Device to check
+ * @return device frame buffer height in pixels
+ */
+int video_get_ysize(struct udevice *dev);
+
+#endif /* CONFIG_DM_VIDEO */
+
+#ifndef CONFIG_DM_VIDEO
+
/* Video functions */
struct stdio_dev;
@@ -73,4 +226,7 @@ int kwh043st20_f01_spi_startup(unsigned int bus, unsigned int cs,
int lg4573_spi_startup(unsigned int bus, unsigned int cs,
unsigned int max_hz, unsigned int spi_mode);
#endif
+
+#endif /* CONFIG_DM_VIDEO */
+
#endif
diff --git a/include/video_console.h b/include/video_console.h
new file mode 100644
index 0000000..c0fc792
--- /dev/null
+++ b/include/video_console.h
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __video_console_h
+#define __video_console_h
+
+/**
+ * struct vidconsole_priv - uclass-private data about a console device
+ *
+ * @sdev: stdio device, acting as an output sink
+ * @curr_col: Current text column (0=left)
+ * @curr_row: Current row (0=top)
+ * @rows: Number of text rows
+ * @cols: Number of text columns
+ */
+struct vidconsole_priv {
+ struct stdio_dev sdev;
+ int curr_col;
+ int curr_row;
+ int rows;
+ int cols;
+};
+
+/**
+ * struct vidconsole_ops - Video console operations
+ *
+ * These operations work on either an absolute console position (measured
+ * in pixels) or a text row number (measured in rows, where each row consists
+ * of an entire line of text - typically 16 pixels).
+ */
+struct vidconsole_ops {
+ /**
+ * putc_xy() - write a single character to a position
+ *
+ * @dev: Device to write to
+ * @x: Pixel X position (0=left-most pixel)
+ * @y: Pixel Y position (0=top-most pixel)
+ * @ch: Character to write
+ * @return 0 if OK, -ve on error
+ */
+ int (*putc_xy)(struct udevice *dev, uint x, uint y, char ch);
+
+ /**
+ * move_rows() - Move text rows from one place to another
+ *
+ * @dev: Device to adjust
+ * @rowdst: Destination text row (0=top)
+ * @rowsrc: Source start text row
+ * @count: Number of text rows to move
+ * @return 0 if OK, -ve on error
+ */
+ int (*move_rows)(struct udevice *dev, uint rowdst, uint rowsrc,
+ uint count);
+
+ /**
+ * set_row() - Set the colour of a text row
+ *
+ * Every pixel contained within the text row is adjusted
+ *
+ * @dev: Device to adjust
+ * @row: Text row to adjust (0=top)
+ * @clr: Raw colour (pixel value) to write to each pixel
+ * @return 0 if OK, -ve on error
+ */
+ int (*set_row)(struct udevice *dev, uint row, int clr);
+};
+
+/* Get a pointer to the driver operations for a video console device */
+#define vidconsole_get_ops(dev) ((struct vidconsole_ops *)(dev)->driver->ops)
+
+/**
+ * vidconsole_putc_xy() - write a single character to a position
+ *
+ * @dev: Device to write to
+ * @x: Pixel X position (0=left-most pixel)
+ * @y: Pixel Y position (0=top-most pixel)
+ * @ch: Character to write
+ * @return 0 if OK, -ve on error
+ */
+int vidconsole_putc_xy(struct udevice *dev, uint x, uint y, char ch);
+
+/**
+ * vidconsole_move_rows() - Move text rows from one place to another
+ *
+ * @dev: Device to adjust
+ * @rowdst: Destination text row (0=top)
+ * @rowsrc: Source start text row
+ * @count: Number of text rows to move
+ * @return 0 if OK, -ve on error
+ */
+int vidconsole_move_rows(struct udevice *dev, uint rowdst, uint rowsrc,
+ uint count);
+
+/**
+ * vidconsole_set_row() - Set the colour of a text row
+ *
+ * Every pixel contained within the text row is adjusted
+ *
+ * @dev: Device to adjust
+ * @row: Text row to adjust (0=top)
+ * @clr: Raw colour (pixel value) to write to each pixel
+ * @return 0 if OK, -ve on error
+ */
+int vidconsole_set_row(struct udevice *dev, uint row, int clr);
+
+/**
+ * vidconsole_put_char() - Output a character to the current console position
+ *
+ * Outputs a character to the console and advances the cursor. This function
+ * handles wrapping to new lines and scrolling the console. Special
+ * characters are handled also: \n, \r, \b and \t.
+ *
+ * The device always starts with the cursor at position 0,0 (top left). It
+ * can be adjusted manually using vidconsole_position_cursor().
+ *
+ * @dev: Device to adjust
+ * @ch: Character to write
+ * @return 0 if OK, -ve on error
+ */
+int vidconsole_put_char(struct udevice *dev, char ch);
+
+/**
+ * vidconsole_position_cursor() - Move the text cursor
+ *
+ * @dev: Device to adjust
+ * @col: New cursor text column
+ * @row: New cursor text row
+ * @return 0 if OK, -ve on error
+ */
+void vidconsole_position_cursor(struct udevice *dev, unsigned col,
+ unsigned row);
+
+#endif