<p>Nico Huber has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26664">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gma hsw transcoder: Choose PDW path for scaling on DDI A<br><br>If scaling is required, always drive DDI A through the Power Down Well<br>(PDW) path. If not, keep the current "always on" path to allow power<br>saving.<br><br>Hopefully, this also enables us to use the eDP in legacy VGA text mode.<br><br>Change-Id: Ia9135d253083d363872c7cf0b3e2b5b69ba0831f<br>Signed-off-by: Nico Huber <nico.h@gmx.de><br>---<br>M common/hw-gfx-gma-pipe_setup.adb<br>M common/hw-gfx-gma-transcoder.adb<br>M common/hw-gfx-gma-transcoder.ads<br>3 files changed, 28 insertions(+), 22 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/libgfxinit refs/changes/64/26664/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/common/hw-gfx-gma-pipe_setup.adb b/common/hw-gfx-gma-pipe_setup.adb</span><br><span>index 1ba4ee0..09fd286 100644</span><br><span>--- a/common/hw-gfx-gma-pipe_setup.adb</span><br><span>+++ b/common/hw-gfx-gma-pipe_setup.adb</span><br><span>@@ -511,7 +511,12 @@</span><br><span> </span><br><span> Setup_FB (Pipe, Port_Cfg.Mode, Framebuffer);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- Transcoder.On (Pipe, Port_Cfg, Framebuffer.BPC /= Port_Cfg.Mode.BPC);</span><br><span style="color: hsl(120, 100%, 40%);">+ Transcoder.On</span><br><span style="color: hsl(120, 100%, 40%);">+ (Pipe => Pipe,</span><br><span style="color: hsl(120, 100%, 40%);">+ Port_Cfg => Port_Cfg,</span><br><span style="color: hsl(120, 100%, 40%);">+ Dither => Framebuffer.BPC /= Port_Cfg.Mode.BPC,</span><br><span style="color: hsl(120, 100%, 40%);">+ Scale => Rotated_Width (Framebuffer) /= Port_Cfg.Mode.H_Visible or</span><br><span style="color: hsl(120, 100%, 40%);">+ Rotated_Height (Framebuffer) /= Port_Cfg.Mode.V_Visible);</span><br><span> end On;</span><br><span> </span><br><span> ----------------------------------------------------------------------------</span><br><span>diff --git a/common/hw-gfx-gma-transcoder.adb b/common/hw-gfx-gma-transcoder.adb</span><br><span>index 97ad069..daa5deb 100644</span><br><span>--- a/common/hw-gfx-gma-transcoder.adb</span><br><span>+++ b/common/hw-gfx-gma-transcoder.adb</span><br><span>@@ -1,5 +1,5 @@</span><br><span> --</span><br><span>--- Copyright (C) 2015-2016 secunet Security Networks AG</span><br><span style="color: hsl(120, 100%, 40%);">+-- Copyright (C) 2015-2018 secunet Security Networks AG</span><br><span> --</span><br><span> -- This program is free software; you can redistribute it and/or modify</span><br><span> -- it under the terms of the GNU General Public License as published by</span><br><span>@@ -76,11 +76,6 @@</span><br><span> DDI_FUNC_CTL_MODE_SELECT_DP_SST : constant := 2 * 2 ** 24;</span><br><span> DDI_FUNC_CTL_MODE_SELECT_DP_MST : constant := 3 * 2 ** 24;</span><br><span> DDI_FUNC_CTL_MODE_SELECT_FDI : constant := 4 * 2 ** 24;</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_FUNC_CTL_EDP_SELECT_MASK : constant := 7 * 2 ** 12;</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_FUNC_CTL_EDP_SELECT_ALWAYS_ON : constant := 0 * 2 ** 12;</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_FUNC_CTL_EDP_SELECT_A : constant := 4 * 2 ** 12;</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_FUNC_CTL_EDP_SELECT_B : constant := 5 * 2 ** 12;</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_FUNC_CTL_EDP_SELECT_C : constant := 6 * 2 ** 12;</span><br><span> </span><br><span> type DDI_Select_Array is array (Digital_Port) of Word32;</span><br><span> DDI_FUNC_CTL_DDI_SELECT : constant DDI_Select_Array :=</span><br><span>@@ -105,16 +100,12 @@</span><br><span> (False => 0 * 2 ** 16,</span><br><span> True => 1 * 2 ** 16);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- type EDP_Select_Array is array (Pipe_Index) of Word32;</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_FUNC_CTL_EDP_SELECT : constant EDP_Select_Array :=</span><br><span style="color: hsl(0, 100%, 40%);">- (Primary => DDI_FUNC_CTL_EDP_SELECT_ALWAYS_ON, -- we never use</span><br><span style="color: hsl(0, 100%, 40%);">- -- panel fitter</span><br><span style="color: hsl(0, 100%, 40%);">- Secondary => DDI_FUNC_CTL_EDP_SELECT_B,</span><br><span style="color: hsl(0, 100%, 40%);">- Tertiary => DDI_FUNC_CTL_EDP_SELECT_C);</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_FUNC_CTL_EDP_SELECT_ONOFF : constant EDP_Select_Array :=</span><br><span style="color: hsl(0, 100%, 40%);">- (Primary => DDI_FUNC_CTL_EDP_SELECT_A,</span><br><span style="color: hsl(0, 100%, 40%);">- Secondary => DDI_FUNC_CTL_EDP_SELECT_B,</span><br><span style="color: hsl(0, 100%, 40%);">- Tertiary => DDI_FUNC_CTL_EDP_SELECT_C);</span><br><span style="color: hsl(120, 100%, 40%);">+ DDI_FUNC_CTL_EDP_SELECT_MASK : constant := 7 * 2 ** 12;</span><br><span style="color: hsl(120, 100%, 40%);">+ DDI_FUNC_CTL_EDP_SELECT_ALWAYS_ON : constant := 0 * 2 ** 12;</span><br><span style="color: hsl(120, 100%, 40%);">+ DDI_FUNC_CTL_EDP_SELECT : constant array (Pipe_Index) of Word32 :=</span><br><span style="color: hsl(120, 100%, 40%);">+ (Primary => 4 * 2 ** 12,</span><br><span style="color: hsl(120, 100%, 40%);">+ Secondary => 5 * 2 ** 12,</span><br><span style="color: hsl(120, 100%, 40%);">+ Tertiary => 6 * 2 ** 12);</span><br><span> </span><br><span> type Port_Width_Array is array (DP_Lane_Count) of Word32;</span><br><span> DDI_FUNC_CTL_PORT_WIDTH : constant Port_Width_Array :=</span><br><span>@@ -245,10 +236,16 @@</span><br><span> procedure On</span><br><span> (Pipe : Pipe_Index;</span><br><span> Port_Cfg : Port_Config;</span><br><span style="color: hsl(0, 100%, 40%);">- Dither : Boolean)</span><br><span style="color: hsl(120, 100%, 40%);">+ Dither : Boolean;</span><br><span style="color: hsl(120, 100%, 40%);">+ Scale : Boolean)</span><br><span> is</span><br><span> Trans : Transcoder_Regs renames</span><br><span> Transcoders (Get_Idx (Pipe, Port_Cfg.Port));</span><br><span style="color: hsl(120, 100%, 40%);">+ EDP_Select : constant Word32 :=</span><br><span style="color: hsl(120, 100%, 40%);">+ (if Pipe = Primary and not Scale then</span><br><span style="color: hsl(120, 100%, 40%);">+ DDI_FUNC_CTL_EDP_SELECT_ALWAYS_ON</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+ DDI_FUNC_CTL_EDP_SELECT (Pipe));</span><br><span> begin</span><br><span> if Config.Has_Pipe_DDI_Func and Port_Cfg.Port in Digital_Port then</span><br><span> Registers.Write</span><br><span>@@ -259,7 +256,7 @@</span><br><span> DDI_FUNC_CTL_BPC (Port_Cfg.Mode.BPC) or</span><br><span> DDI_FUNC_CTL_VSYNC (Port_Cfg.Mode.V_Sync_Active_High) or</span><br><span> DDI_FUNC_CTL_HSYNC (Port_Cfg.Mode.H_Sync_Active_High) or</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_FUNC_CTL_EDP_SELECT (Pipe) or</span><br><span style="color: hsl(120, 100%, 40%);">+ EDP_Select or</span><br><span> DDI_FUNC_CTL_PORT_WIDTH (Port_Cfg.DP.Lane_Count));</span><br><span> end if;</span><br><span> </span><br><span>@@ -308,7 +305,7 @@</span><br><span> </span><br><span> if (Pipe = Primary and</span><br><span> DDI_Func_Ctl = DDI_FUNC_CTL_EDP_SELECT_ALWAYS_ON) or</span><br><span style="color: hsl(0, 100%, 40%);">- DDI_Func_Ctl = DDI_FUNC_CTL_EDP_SELECT_ONOFF (Pipe)</span><br><span style="color: hsl(120, 100%, 40%);">+ DDI_Func_Ctl = DDI_FUNC_CTL_EDP_SELECT (Pipe)</span><br><span> then</span><br><span> Trans_Off (Transcoders (Trans_EDP));</span><br><span> end if;</span><br><span>diff --git a/common/hw-gfx-gma-transcoder.ads b/common/hw-gfx-gma-transcoder.ads</span><br><span>index 79be8f7..b026933 100644</span><br><span>--- a/common/hw-gfx-gma-transcoder.ads</span><br><span>+++ b/common/hw-gfx-gma-transcoder.ads</span><br><span>@@ -1,5 +1,5 @@</span><br><span> --</span><br><span>--- Copyright (C) 2015-2016 secunet Security Networks AG</span><br><span style="color: hsl(120, 100%, 40%);">+-- Copyright (C) 2015-2018 secunet Security Networks AG</span><br><span> --</span><br><span> -- This program is free software; you can redistribute it and/or modify</span><br><span> -- it under the terms of the GNU General Public License as published by</span><br><span>@@ -19,7 +19,11 @@</span><br><span> is</span><br><span> </span><br><span> procedure Setup (Pipe : Pipe_Index; Port_Cfg : Port_Config);</span><br><span style="color: hsl(0, 100%, 40%);">- procedure On (Pipe : Pipe_Index; Port_Cfg : Port_Config; Dither : Boolean);</span><br><span style="color: hsl(120, 100%, 40%);">+ procedure On</span><br><span style="color: hsl(120, 100%, 40%);">+ (Pipe : Pipe_Index;</span><br><span style="color: hsl(120, 100%, 40%);">+ Port_Cfg : Port_Config;</span><br><span style="color: hsl(120, 100%, 40%);">+ Dither : Boolean;</span><br><span style="color: hsl(120, 100%, 40%);">+ Scale : Boolean);</span><br><span> </span><br><span> procedure Off (Pipe : Pipe_Index);</span><br><span> procedure Clk_Off (Pipe : Pipe_Index);</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26664">change 26664</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26664"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: libgfxinit </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ia9135d253083d363872c7cf0b3e2b5b69ba0831f </div>
<div style="display:none"> Gerrit-Change-Number: 26664 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Nico Huber <nico.h@gmx.de> </div>