summaryrefslogtreecommitdiff
path: root/common/board_f.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/board_f.c')
-rw-r--r--common/board_f.c71
1 files changed, 47 insertions, 24 deletions
diff --git a/common/board_f.c b/common/board_f.c
index 8094ac4..c470b59 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -46,6 +46,7 @@
#include <spi.h>
#include <status_led.h>
#include <trace.h>
+#include <video.h>
#include <watchdog.h>
#include <asm/errno.h>
#include <asm/io.h>
@@ -437,36 +438,41 @@ static int reserve_mmu(void)
}
#endif
-#ifdef CONFIG_LCD
+#ifdef CONFIG_DM_VIDEO
+static int reserve_video(void)
+{
+ ulong addr;
+ int ret;
+
+ addr = gd->relocaddr;
+ ret = video_reserve(&addr);
+ if (ret)
+ return ret;
+ gd->relocaddr = addr;
+
+ return 0;
+}
+#else
+
+# ifdef CONFIG_LCD
static int reserve_lcd(void)
{
-#ifdef CONFIG_FB_ADDR
+# ifdef CONFIG_FB_ADDR
gd->fb_base = CONFIG_FB_ADDR;
-#else
+# else
/* reserve memory for LCD display (always full pages) */
gd->relocaddr = lcd_setmem(gd->relocaddr);
gd->fb_base = gd->relocaddr;
-#endif /* CONFIG_FB_ADDR */
- return 0;
-}
-#endif /* CONFIG_LCD */
-
-static int reserve_trace(void)
-{
-#ifdef CONFIG_TRACE
- gd->relocaddr -= CONFIG_TRACE_BUFFER_SIZE;
- gd->trace_buff = map_sysmem(gd->relocaddr, CONFIG_TRACE_BUFFER_SIZE);
- debug("Reserving %dk for trace data at: %08lx\n",
- CONFIG_TRACE_BUFFER_SIZE >> 10, gd->relocaddr);
-#endif
+# endif /* CONFIG_FB_ADDR */
return 0;
}
+# endif /* CONFIG_LCD */
-#if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) || defined(CONFIG_8xx)) && \
+# if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) || defined(CONFIG_8xx)) && \
!defined(CONFIG_ARM) && !defined(CONFIG_X86) && \
!defined(CONFIG_BLACKFIN) && !defined(CONFIG_M68K)
-static int reserve_video(void)
+static int reserve_legacy_video(void)
{
/* reserve memory for video display (always full pages) */
gd->relocaddr = video_setmem(gd->relocaddr);
@@ -474,8 +480,21 @@ static int reserve_video(void)
return 0;
}
+# endif
+#endif /* !CONFIG_DM_VIDEO */
+
+static int reserve_trace(void)
+{
+#ifdef CONFIG_TRACE
+ gd->relocaddr -= CONFIG_TRACE_BUFFER_SIZE;
+ gd->trace_buff = map_sysmem(gd->relocaddr, CONFIG_TRACE_BUFFER_SIZE);
+ debug("Reserving %dk for trace data at: %08lx\n",
+ CONFIG_TRACE_BUFFER_SIZE >> 10, gd->relocaddr);
#endif
+ return 0;
+}
+
static int reserve_uboot(void)
{
/*
@@ -957,16 +976,20 @@ static init_fnc_t init_sequence_f[] = {
defined(CONFIG_ARM)
reserve_mmu,
#endif
-#ifdef CONFIG_LCD
+#ifdef CONFIG_DM_VIDEO
+ reserve_video,
+#else
+# ifdef CONFIG_LCD
reserve_lcd,
-#endif
- reserve_trace,
+# endif
/* TODO: Why the dependency on CONFIG_8xx? */
-#if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) || defined(CONFIG_8xx)) && \
+# if defined(CONFIG_VIDEO) && (!defined(CONFIG_PPC) || defined(CONFIG_8xx)) && \
!defined(CONFIG_ARM) && !defined(CONFIG_X86) && \
!defined(CONFIG_BLACKFIN) && !defined(CONFIG_M68K)
- reserve_video,
-#endif
+ reserve_legacy_video,
+# endif
+#endif /* CONFIG_DM_VIDEO */
+ reserve_trace,
#if !defined(CONFIG_BLACKFIN)
reserve_uboot,
#endif