gma panel: Introduce `Panel_Control` type

For now, `Panel_Control` only distinguishes `Panel_1` from `No_Panel`,
i.e. if a port has a panel attached or not. To ease future addition of
support for more than one panel, we already add loops and arrays around
it, though.

With the information, if a port has a panel attached, in `Port_Config`,
we can pass that on into Panel.* procedures and let those decide what
to do (e.g. do nothing if no panel is attached).

Change-Id: I83864bc86b48f65d9ba43e083b805ca09497cbb0
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/c/libgfxinit/+/38243
Tested-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
diff --git a/common/g45/hw-gfx-gma-connectors.adb b/common/g45/hw-gfx-gma-connectors.adb
index 5ca7c9b..ff689bb 100644
--- a/common/g45/hw-gfx-gma-connectors.adb
+++ b/common/g45/hw-gfx-gma-connectors.adb
@@ -29,12 +29,6 @@
    procedure Post_Reset_Off is null;
    procedure Initialize is null;
 
-   function Is_Internal (Port_Cfg : Port_Config) return Boolean
-   is
-   begin
-      return Port_Cfg.Port = LVDS;
-   end Is_Internal;
-
    ----------------------------------------------------------------------------
 
    procedure Pre_On
@@ -69,10 +63,8 @@
          end if;
       end if;
 
-      if Is_Internal (Port_Cfg) then
-         Panel.On (Wait => False);
-         Panel.Backlight_On;
-      end if;
+      Panel.On (Port_Cfg.Panel, Wait => False);
+      Panel.Backlight_On (Port_Cfg.Panel);
    end Post_On;
 
    ----------------------------------------------------------------------------
@@ -82,10 +74,8 @@
    begin
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
 
-      if Is_Internal (Port_Cfg) then
-         Panel.Backlight_Off;
-         Panel.Off;
-      end if;
+      Panel.Backlight_Off (Port_Cfg.Panel);
+      Panel.Off (Port_Cfg.Panel);
    end Pre_Off;
 
    procedure Post_Off (Port_Cfg : Port_Config)
@@ -110,8 +100,10 @@
    begin
       pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
 
-      Panel.Backlight_Off;
-      Panel.Off;
+      for P in Valid_Panels loop
+         Panel.Backlight_Off (P);
+         Panel.Off (P);
+      end loop;
    end Pre_All_Off;
 
    procedure Post_All_Off