From b9b42486f203d332f6068ccd6f4a1a982d327a6b Mon Sep 17 00:00:00 2001 From: Jimmy Zhang Date: Mon, 3 Nov 2014 17:38:29 -0800 Subject: [PATCH] ryu: Pass panel spec to lib_sysinfo panel spec such as resoultion, bits per pixel are needed to pass to depthcharge/payload for displaying bitmap onto panel. BRANCH=none BUG=chrome-os-partner:31936 TEST=build and test on ryu Change-Id: I5c8fde17d57e953582a1c1dc814be4c08e349847 Signed-off-by: Jimmy Zhang Reviewed-on: https://chromium-review.googlesource.com/227203 Reviewed-by: Aaron Durbin Commit-Queue: Aaron Durbin --- src/mainboard/google/rush_ryu/Kconfig | 1 + src/soc/nvidia/tegra132/display.c | 32 +++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/mainboard/google/rush_ryu/Kconfig b/src/mainboard/google/rush_ryu/Kconfig index 93f5eeab66..3623f2ed21 100644 --- a/src/mainboard/google/rush_ryu/Kconfig +++ b/src/mainboard/google/rush_ryu/Kconfig @@ -28,6 +28,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy select EC_GOOGLE_CHROMEEC_I2C select EC_GOOGLE_CHROMEEC_I2C_PROTO3 select EC_SOFTWARE_SYNC + select MAINBOARD_DO_NATIVE_VGA_INIT select SPI_FLASH select SOC_NVIDIA_TEGRA132 select MAINBOARD_HAS_BOOTBLOCK_INIT diff --git a/src/soc/nvidia/tegra132/display.c b/src/soc/nvidia/tegra132/display.c index 62cea026e5..1708b5a85c 100644 --- a/src/soc/nvidia/tegra132/display.c +++ b/src/soc/nvidia/tegra132/display.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -289,9 +290,36 @@ void display_startup(device_t dev) return; } - /* set up window */ + /* Set up window */ update_window(config); - printk(BIOS_INFO, "%s: display init done.\n", __func__); + + /* + * Pass panel information to cb tables + */ + struct edid edid; + /* Align bytes_per_line to 64 bytes as required by dc */ + edid.bytes_per_line = ALIGN_UP((config->xres * + config->framebuffer_bits_per_pixel / 8), 64); + edid.x_resolution = edid.bytes_per_line / + (config->framebuffer_bits_per_pixel / 8); + edid.y_resolution = config->yres; + edid.framebuffer_bits_per_pixel = config->framebuffer_bits_per_pixel; + + printk(BIOS_INFO, "%s: bytes_per_line: %d, bits_per_pixel: %d\n " + " x_res x y_res: %d x %d, size: %d\n", + __func__, edid.bytes_per_line, + edid.framebuffer_bits_per_pixel, + edid.x_resolution, edid.y_resolution, + (edid.bytes_per_line * edid.y_resolution)); + + set_vbe_mode_info_valid(&edid, 0); + + /* + * After this point, it is payload's responsibility to allocate + * framebuffer and sets the base address to dc's + * WINBUF_START_ADDR register and enables window by setting dc's + * DISP_DISP_WIN_OPTIONS register. + */ }