summaryrefslogtreecommitdiff
path: root/board/nokia
diff options
context:
space:
mode:
authorPali Rohár <pali@kernel.org>2022-03-09 22:46:01 +0300
committerAnatolij Gustschin <agust@denx.de>2022-03-09 23:28:53 +0300
commitd6213e206c441a3b2b83c0588954c851c3610d97 (patch)
treefb8c183b6d178e87ed76a74d5a590a1c53e6cc61 /board/nokia
parentbd0df8236987df03e6131f923e31c3d9f943d086 (diff)
downloadu-boot-d6213e206c441a3b2b83c0588954c851c3610d97.tar.xz
Nokia RX-51: Convert to CONFIG_DM_VIDEO
Mechanically convert video_hw_init() function to UCLASS_VIDEO probe callback and replace CONFIG_CFB_CONSOLE by CONFIG_DM_VIDEO. As framebuffer base address is setup by the bootloader which loads U-Boot, set plat->base to that fixed framebuffer address. This change was tested in qemu n900 machine and is working fine. What does not work is CONFIG_VIDEO_LOGO, seems to be buggy. Signed-off-by: Pali Rohár <pali@kernel.org>
Diffstat (limited to 'board/nokia')
-rw-r--r--board/nokia/rx51/rx51.c40
1 files changed, 24 insertions, 16 deletions
diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c
index a52691509d..621cff0956 100644
--- a/board/nokia/rx51/rx51.c
+++ b/board/nokia/rx51/rx51.c
@@ -30,7 +30,7 @@
#include <malloc.h>
#include <twl4030.h>
#include <i2c.h>
-#include <video_fb.h>
+#include <video.h>
#include <keyboard.h>
#include <asm/global_data.h>
#include <asm/io.h>
@@ -62,8 +62,6 @@ struct emu_hal_params_rx51 {
DECLARE_GLOBAL_DATA_PTR;
-GraphicDevice gdev;
-
const omap3_sysinfo sysinfo = {
DDR_STACKED,
"Nokia RX-51",
@@ -342,22 +340,28 @@ void setup_board_tags(struct tag **in_params)
*in_params = params;
}
-/*
- * Routine: video_hw_init
- * Description: Set up the GraphicDevice depending on sys_boot.
- */
-void *video_hw_init(void)
+static int rx51_video_probe(struct udevice *dev)
{
- /* fill in Graphic Device */
- gdev.frameAdrs = 0x8f9c0000;
- gdev.winSizeX = 800;
- gdev.winSizeY = 480;
- gdev.gdfBytesPP = 2;
- gdev.gdfIndex = GDF_16BIT_565RGB;
- memset((void *)gdev.frameAdrs, 0, 0xbb800);
- return (void *) &gdev;
+ struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
+ struct video_priv *uc_priv = dev_get_uclass_priv(dev);
+
+ uc_plat->base = 0x8f9c0000;
+ uc_plat->size = 800 * 480 * sizeof(u16);
+ uc_priv->xsize = 800;
+ uc_priv->ysize = 480;
+ uc_priv->bpix = VIDEO_BPP16;
+
+ video_set_flush_dcache(dev, true);
+
+ return 0;
}
+U_BOOT_DRIVER(rx51_video) = {
+ .name = "rx51_video",
+ .id = UCLASS_VIDEO,
+ .probe = rx51_video_probe,
+};
+
/*
* Routine: twl4030_regulator_set_mode
* Description: Set twl4030 regulator mode over i2c powerbus.
@@ -777,6 +781,10 @@ U_BOOT_DRVINFOS(rx51_watchdog) = {
{ "rx51_watchdog" },
};
+U_BOOT_DRVINFOS(rx51_video) = {
+ { "rx51_video" },
+};
+
U_BOOT_DRVINFOS(rx51_kp) = {
{ "rx51_kp" },
};