diff mbox

[U-Boot,v2,09/11] sunxi: video: Add support for video-mode environment variable

Message ID 1419009041-31057-10-git-send-email-hdegoede@redhat.com
State Accepted
Delegated to: Ian Campbell
Headers show

Commit Message

Hans de Goede Dec. 19, 2014, 5:10 p.m. UTC
Add support for the standard video-mode environment variable using the
videomodes.c video_get_ctfb_res_modes() helper function.

This will allow users to specify the resolution e.g. :

setenv video-mode sunxi:video-mode=1280x1024-24@60
saveenv

Also make the reserved fb mem slightly larger to allow 1920x1200 to work.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/video/sunxi_display.c  | 16 +++++++++++++---
 include/configs/sunxi-common.h |  2 +-
 2 files changed, 14 insertions(+), 4 deletions(-)

Comments

Ian Campbell Dec. 22, 2014, 12:37 p.m. UTC | #1
On Fri, 2014-12-19 at 18:10 +0100, Hans de Goede wrote:
> Add support for the standard video-mode environment variable using the
> videomodes.c video_get_ctfb_res_modes() helper function.
> 
> This will allow users to specify the resolution e.g. :
> 
> setenv video-mode sunxi:video-mode=1280x1024-24@60
> saveenv
> 
> Also make the reserved fb mem slightly larger to allow 1920x1200 to work.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Acked-by: Ian Campbell <ijc@hellion.org.uk>
Anatolij Gustschin Jan. 8, 2015, 4:08 p.m. UTC | #2
On Fri, 19 Dec 2014 18:10:39 +0100
Hans de Goede <hdegoede@redhat.com> wrote:

> Add support for the standard video-mode environment variable using the
> videomodes.c video_get_ctfb_res_modes() helper function.
> 
> This will allow users to specify the resolution e.g. :
> 
> setenv video-mode sunxi:video-mode=1280x1024-24@60
> saveenv
> 
> Also make the reserved fb mem slightly larger to allow 1920x1200 to work.
> 
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Acked-by: Anatolij Gustschin <agust@denx.de>
diff mbox

Patch

diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
index cedb56e..cf81e45 100644
--- a/drivers/video/sunxi_display.c
+++ b/drivers/video/sunxi_display.c
@@ -358,7 +358,9 @@  retry:
 void *video_hw_init(void)
 {
 	static GraphicDevice *graphic_device = &sunxi_display.graphic_device;
-	const struct ctfb_res_modes *mode = &res_mode_init[RES_MODE_1024x768];
+	const struct ctfb_res_modes *mode;
+	const char *options;
+	unsigned int depth;
 	int ret;
 
 	memset(&sunxi_display, 0, sizeof(struct sunxi_display));
@@ -367,14 +369,22 @@  void *video_hw_init(void)
 	       CONFIG_SUNXI_FB_SIZE >> 10);
 	gd->fb_base = gd->ram_top;
 
+	video_get_ctfb_res_modes(RES_MODE_1024x768, 24, &mode, &depth, &options);
+
 	ret = sunxi_hdmi_hpd_detect();
 	if (!ret)
 		return NULL;
 
 	printf("HDMI connected.\n");
-	sunxi_display.enabled = true;
 
-	printf("Setting up a %dx%d console.\n", mode->xres, mode->yres);
+	if (mode->vmode != FB_VMODE_NONINTERLACED) {
+		printf("Only non-interlaced modes supported, falling back to 1024x768\n");
+		mode = &res_mode_init[RES_MODE_1024x768];
+	} else {
+		printf("Setting up a %dx%d console\n", mode->xres, mode->yres);
+	}
+
+	sunxi_display.enabled = true;
 	sunxi_engines_init();
 	sunxi_mode_set(mode, gd->fb_base - CONFIG_SYS_SDRAM_BASE);
 
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index 727f446..77965f7 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -202,7 +202,7 @@ 
  * The amount of RAM that is reserved for the FB. This will not show up as
  * RAM to the kernel, but will be reclaimed by a KMS driver in future.
  */
-#define CONFIG_SUNXI_FB_SIZE (8 << 20)
+#define CONFIG_SUNXI_FB_SIZE (9 << 20)
 
 /* Do we want to initialize a simple FB? */
 #define CONFIG_VIDEO_DT_SIMPLEFB