[coreboot] [FILO] r115 - trunk/filo/i386
repository service
svn at coreboot.org
Fri Mar 26 12:59:16 CET 2010
Author: stepan
Date: Fri Mar 26 12:59:14 2010
New Revision: 115
URL: http://tracker.coreboot.org/trac/filo/changeset/115
Log:
linux loader support for fb only mode
(not fully functional, but does not break anything either)
Signed-off-by: Stefan Reinauer <stepan at coresystems.de>
Modified:
trunk/filo/i386/linux_load.c
Modified: trunk/filo/i386/linux_load.c
==============================================================================
--- trunk/filo/i386/linux_load.c Fri Mar 26 12:57:34 2010 (r114)
+++ trunk/filo/i386/linux_load.c Fri Mar 26 12:59:14 2010 (r115)
@@ -27,6 +27,7 @@
#include <libpayload.h>
#include <libpayload-config.h>
+#include <coreboot_tables.h>
#include <config.h>
#include <fs.h>
#include "context.h"
@@ -297,6 +298,33 @@
debug("ext_mem_k=%d, alt_mem_k=%d\n", params->ext_mem_k, params->alt_mem_k);
}
+/* Video mode */
+static void
+set_video_mode(struct linux_params *params)
+{
+#if CONFIG_COREBOOT_VIDEO_CONSOLE
+ /* Are we running on a framebuffer console? */
+ if (!lib_sysinfo.framebuffer)
+ return;
+
+ params->lfb_width = lib_sysinfo.framebuffer->x_resolution;
+ params->lfb_height = lib_sysinfo.framebuffer->y_resolution;
+ params->lfb_depth = lib_sysinfo.framebuffer->bits_per_pixel;
+ params->lfb_linelength = lib_sysinfo.framebuffer->bytes_per_line;
+ params->lfb_base = lib_sysinfo.framebuffer->physical_address;
+ // prolly not enough for the boot splash?!
+ params->lfb_size = (params->lfb_linelength * params->lfb_height + 65535 ) >> 16;
+ params->red_size = lib_sysinfo.framebuffer->red_mask_size;
+ params->red_pos = lib_sysinfo.framebuffer->red_mask_pos;
+ params->green_size = lib_sysinfo.framebuffer->green_mask_size;
+ params->green_pos = lib_sysinfo.framebuffer->green_mask_pos;
+ params->blue_size = lib_sysinfo.framebuffer->blue_mask_size;
+ params->blue_pos = lib_sysinfo.framebuffer->blue_mask_pos;
+ params->rsvd_size = lib_sysinfo.framebuffer->reserved_mask_size;
+ params->rsvd_pos = lib_sysinfo.framebuffer->reserved_mask_pos;
+#endif
+}
+
/*
* Parse command line
* Some parameters, like initrd=<file>, are not passed to kernel,
@@ -667,6 +695,7 @@
params = phys_to_virt(LINUX_PARAM_LOC);
init_linux_params(params, &hdr);
set_memory_size(params);
+ set_video_mode(params);
initrd_file = parse_command_line(cmdline, phys_to_virt(COMMAND_LINE_LOC));
set_command_line_loc(params, &hdr);
More information about the coreboot
mailing list