gma: Begin Tiger Lake (TGL) integration

Tiger Lake's integrated graphics engine is built off an entirely new
igfx architecture named "Iris Xe". This patch adds just enough support
to compile for Tiger Lake. Fortunately, the backlight programming
hasn't changed since SKL, so with a little bit of hacking, one can
also have libgfxinit turn on the backlight to verify something is
working and running.

The first pass through the support will focus mostly on the eDP panel,
then Type-C ports (both in fixed/native mode [DP/HDMI] and in Type-C
DP Alt Mode). TBT will not be mostly ignored in this first pass, as
it is not as widely used (yet?) as the other protocols.

This patch includes changes to fix ironlake gnatprove errors caused by
the new PCH_HDMI_A port definition.

Tested on google/voxel, with DEBUG_ADA_CODE enabled.
Tested on google/skolas, with DEBUG_ADA_CODE enabled.

This patch leaves the following unresolved gnatprove errors:
- hw-gfx-gma-port_detect.ads:17:14:
     warning: subprogram "Initialize" has no effect
- hw-gfx-gma-port_detect.ads:20:07:
     warning: unused variable "Port"
- hw-gfx-gma-port_detect.ads:23:14:
     warning: subprogram "Clear_Hotplug_Detect" has no effect
- hw-gfx-gma-connectors.ads:39:14:
     warning: subprogram "Post_Off" has no effect
- hw-gfx-gma-connectors.ads:42:14:
     warning: subprogram "Post_All_Off" has no effect

These errors will by addressed by the proper implementation of these
procedures.

Change-Id: I84f15837856ecc5ec8df18b39d3989885cd550d4
Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Reviewed-on: https://review.coreboot.org/c/libgfxinit/+/70887
Tested-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Sean Rhodes <sean@starlabs.systems>
Reviewed-by: Nico Huber <nico.h@gmx.de>
diff --git a/common/tigerlake/hw-gfx-gma-plls.ads b/common/tigerlake/hw-gfx-gma-plls.ads
new file mode 100644
index 0000000..3e55044
--- /dev/null
+++ b/common/tigerlake/hw-gfx-gma-plls.ads
@@ -0,0 +1,53 @@
+--
+-- Copyright (C) 2022 Google, LLC
+--
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+
+private package HW.GFX.GMA.PLLs
+with
+   Abstract_State => (State with Part_Of => GMA.State)
+is
+
+   -- XXX: Types should be private (but that triggers a bug in SPARK GPL 2016)
+   type T is (Invalid_PLL, DPLL0, DPLL1, DPLL4, DPLL2);
+   subtype Configurable_DPLLs is T range DPLL0 .. DPLL4;
+   Invalid : constant T := Invalid_PLL;
+
+   procedure Initialize
+   with
+      Global => (Output => State);
+
+   pragma Warnings (Off, "unused variable ""Port_Cfg""",
+                    Reason => "Not yet implemented.");
+   procedure Alloc
+     (Port_Cfg : in     Port_Config;
+      PLL      :    out T;
+      Success  :    out Boolean);
+   pragma Warnings (On, "unused variable ""Port_Cfg""");
+
+
+   pragma Warnings (Off, "subprogram ""Free"" has no effect",
+                    Reason => "Not yet implemented.");
+   procedure Free (PLL : T);
+   pragma Warnings (On, "subprogram ""Free"" has no effect");
+
+   pragma Warnings (Off, "subprogram ""All_Off"" has no effect",
+                    Reason => "Not yet implemented.");
+   procedure All_Off;
+   pragma Warnings (On, "subprogram ""All_Off"" has no effect");
+
+   pragma Warnings (Off, "unused variable ""PLL""",
+                    Reason => "Not yet implemented.");
+   function Register_Value (PLL : T) return Word32;
+   pragma Warnings (On, "unused variable ""PLL""");
+
+end HW.GFX.GMA.PLLs;