Parcourir la source

video: lcd: Add CONFIG_SPLASH_SCREEN_PREPARE support to CONFIG_VIDEO

Create splash.c/h to put the function and any future common splash
screen code in.

Signed-off-by: Robert Winkler <robert.winkler@boundarydevices.com>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
Robert Winkler il y a 12 ans
Parent
commit
dd4425e852
6 fichiers modifiés avec 72 ajouts et 16 suppressions
  1. 1 0
      common/Makefile
  2. 3 13
      common/lcd.c
  3. 36 0
      common/splash.c
  4. 3 2
      drivers/video/cfb_console.c
  5. 0 1
      include/lcd.h
  6. 29 0
      include/splash.h

+ 1 - 0
common/Makefile

@@ -196,6 +196,7 @@ COBJS-y += flash.o
 COBJS-$(CONFIG_CMD_KGDB) += kgdb.o kgdb_stubs.o
 COBJS-$(CONFIG_CMD_KGDB) += kgdb.o kgdb_stubs.o
 COBJS-$(CONFIG_I2C_EDID) += edid.o
 COBJS-$(CONFIG_I2C_EDID) += edid.o
 COBJS-$(CONFIG_KALLSYMS) += kallsyms.o
 COBJS-$(CONFIG_KALLSYMS) += kallsyms.o
+COBJS-y += splash.o
 COBJS-$(CONFIG_LCD) += lcd.o
 COBJS-$(CONFIG_LCD) += lcd.o
 COBJS-$(CONFIG_LYNXKDI) += lynxkdi.o
 COBJS-$(CONFIG_LYNXKDI) += lynxkdi.o
 COBJS-$(CONFIG_MENU) += menu.o
 COBJS-$(CONFIG_MENU) += menu.o

+ 3 - 13
common/lcd.c

@@ -43,6 +43,8 @@
 #include <lcd.h>
 #include <lcd.h>
 #include <watchdog.h>
 #include <watchdog.h>
 
 
+#include <splash.h>
+
 #if defined(CONFIG_CPU_PXA25X) || defined(CONFIG_CPU_PXA27X) || \
 #if defined(CONFIG_CPU_PXA25X) || defined(CONFIG_CPU_PXA27X) || \
 	defined(CONFIG_CPU_MONAHANS)
 	defined(CONFIG_CPU_MONAHANS)
 #define CONFIG_CPU_PXA
 #define CONFIG_CPU_PXA
@@ -1072,18 +1074,6 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
 }
 }
 #endif
 #endif
 
 
-#ifdef CONFIG_SPLASH_SCREEN_PREPARE
-static inline int splash_screen_prepare(void)
-{
-	return board_splash_screen_prepare();
-}
-#else
-static inline int splash_screen_prepare(void)
-{
-	return 0;
-}
-#endif
-
 static void *lcd_logo(void)
 static void *lcd_logo(void)
 {
 {
 #ifdef CONFIG_SPLASH_SCREEN
 #ifdef CONFIG_SPLASH_SCREEN
@@ -1096,7 +1086,7 @@ static void *lcd_logo(void)
 		do_splash = 0;
 		do_splash = 0;
 
 
 		if (splash_screen_prepare())
 		if (splash_screen_prepare())
-			return (void *)gd->fb_base;
+			return (void *)lcd_base;
 
 
 		addr = simple_strtoul (s, NULL, 16);
 		addr = simple_strtoul (s, NULL, 16);
 #ifdef CONFIG_SPLASH_SCREEN_ALIGN
 #ifdef CONFIG_SPLASH_SCREEN_ALIGN

+ 36 - 0
common/splash.c

@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013, Boundary Devices <info@boundarydevices.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., http://www.fsf.org/about/contact/
+ *
+ */
+
+#include <splash.h>
+#include <config.h>
+
+#ifdef CONFIG_SPLASH_SCREEN_PREPARE
+int splash_screen_prepare(void)
+{
+	return board_splash_screen_prepare();
+}
+#else
+int splash_screen_prepare(void)
+{
+	return 0;
+}
+#endif

+ 3 - 2
drivers/video/cfb_console.c

@@ -181,6 +181,8 @@
  */
  */
 #include <video_fb.h>
 #include <video_fb.h>
 
 
+#include <splash.h>
+
 /*
 /*
  * some Macros
  * some Macros
  */
  */
@@ -1995,10 +1997,9 @@ static void *video_logo(void)
 #ifdef CONFIG_SPLASH_SCREEN
 #ifdef CONFIG_SPLASH_SCREEN
 	s = getenv("splashimage");
 	s = getenv("splashimage");
 	if (s != NULL) {
 	if (s != NULL) {
-
+		splash_screen_prepare();
 		addr = simple_strtoul(s, NULL, 16);
 		addr = simple_strtoul(s, NULL, 16);
 
 
-
 		if (video_display_bitmap(addr,
 		if (video_display_bitmap(addr,
 					video_logo_xpos,
 					video_logo_xpos,
 					video_logo_ypos) == 0) {
 					video_logo_ypos) == 0) {

+ 0 - 1
include/lcd.h

@@ -37,7 +37,6 @@ extern struct vidinfo panel_info;
 
 
 void lcd_ctrl_init(void *lcdbase);
 void lcd_ctrl_init(void *lcdbase);
 void lcd_enable(void);
 void lcd_enable(void);
-int board_splash_screen_prepare(void);
 
 
 /* setcolreg used in 8bpp/16bpp; initcolregs used in monochrome */
 /* setcolreg used in 8bpp/16bpp; initcolregs used in monochrome */
 void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue);
 void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue);

+ 29 - 0
include/splash.h

@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2013, Boundary Devices <info@boundarydevices.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., http://www.fsf.org/about/contact/
+ */
+
+#ifndef _SPLASH_H_
+#define _SPLASH_H_
+
+
+int splash_screen_prepare(void);
+
+
+#endif