<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>