[SeaBIOS] [PATCH 06/13] geodevga: add geodevga_graphics_enable function
Christian Gmeiner
christian.gmeiner at gmail.com
Fri Oct 5 18:07:29 CEST 2012
This function is used to turn on/enable graphics output. It
takes care about different supported output modes.
Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
---
vgasrc/geodevga.c | 55 +++++++++++++++++++++++++++++--------------------------
1 file changed, 29 insertions(+), 26 deletions(-)
diff --git a/vgasrc/geodevga.c b/vgasrc/geodevga.c
index 7689c43..648d557 100644
--- a/vgasrc/geodevga.c
+++ b/vgasrc/geodevga.c
@@ -236,6 +236,33 @@ static void geodevga_set_ouput_mode(void)
geode_msr_mask(msr_addr, ~msr, msr);
}
+static void geodevga_graphics_enable(void)
+{
+ /* setup flat panel */
+ if (CONFIG_VGA_OUTPUT_PANEL || CONFIG_VGA_OUTPUT_CRT_PANEL) {
+ dprintf(1, "Setting up flat panel\n");
+ /* write timing register */
+ geode_fp_write(FP_PT1, 0x0);
+ geode_fp_write(FP_PT2, FP_PT2_SCRC);
+
+ /* set pad select for TFT/LVDS */
+ u64 msr;
+ msr = VP_MSR_PADSEL_TFT_SEL_HIGH;
+ msr = msr << 32;
+ msr |= VP_MSR_PADSEL_TFT_SEL_LOW;
+ geode_msr_mask(VP_MSR_PADSEL, ~msr, msr);
+
+ /* turn the panel on (if it isn't already) */
+ u32 reg = geode_fp_read(FP_PM);
+ reg |= FP_PM_P;
+ geode_fp_write(FP_PM, reg);
+ }
+
+ if (CONFIG_VGA_OUTPUT_CRT) {
+ geode_vp_mask(VP_DCFG, 0, VP_DCFG_CRT_EN | VP_DCFG_HSYNC_EN | VP_DCFG_VSYNC_EN | VP_DCFG_DAC_BL_EN | VP_DCFG_CRT_SKEW);
+ }
+}
+
/* Set up the dc (display controller) portion of the geodelx
* The dc provides hardware support for VGA graphics.
*/
@@ -273,32 +300,8 @@ static void vp_setup(void)
geode_vp_write(VP_MISC, VP_DCFG_BYP_BOTH);
reg = geode_vp_read(VP_MISC);
dprintf(1,"VP_SETUP VP_MISC=0x%08x\n",reg);
-
- reg = geode_vp_read(VP_DCFG);
- dprintf(1,"VP_SETUP VP_DCFG=0x%08x\n",reg);
- geode_vp_mask(VP_DCFG, 0, VP_DCFG_CRT_EN|VP_DCFG_HSYNC_EN|VP_DCFG_VSYNC_EN|VP_DCFG_DAC_BL_EN|VP_DCFG_CRT_SKEW);
- reg = geode_vp_read(VP_DCFG);
- dprintf(1,"VP_SETUP VP_DCFG=0x%08x\n",reg);
-
- /* setup flat panel */
- if (CONFIG_VGA_OUTPUT_PANEL || CONFIG_VGA_OUTPUT_CRT_PANEL) {
- dprintf(1, "Setting up flat panel\n");
- /* write timing register */
- geode_fp_write(FP_PT1, 0x0);
- geode_fp_write(FP_PT2, FP_PT2_SCRC);
-
- /* set pad select for TFT/LVDS */
- u64 msr;
- msr = VP_MSR_PADSEL_TFT_SEL_HIGH;
- msr = msr << 32;
- msr |= VP_MSR_PADSEL_TFT_SEL_LOW;
- geode_msr_mask(VP_MSR_PADSEL, ~msr, msr);
-
- /* turn the panel on (if it isn't already) */
- reg = geode_fp_read(FP_PM);
- reg |= FP_PM_P;
- geode_fp_write(FP_PM, reg);
- }
+
+ geodevga_graphics_enable();
}
int geodevga_set_mode(struct vgamode_s *vmode_g, int flags)
--
1.7.12.2.421.g261b511
More information about the SeaBIOS
mailing list