-- SPDX-License-Identifier: GPL-2.0-only

with HW.GFX.GMA;
with HW.GFX.GMA.Display_Probing;

use HW.GFX.GMA;

package body GMA is

   function read_edid
     (raw_edid :    out HW.GFX.EDID.Raw_EDID_Data;
      port     : in     Interfaces.C.int)
      return Interfaces.C.int
   is
      use type Interfaces.C.int;
      success : Boolean := true;
   begin
      if port not in Active_Port_Type'Pos (Active_Port_Type'First)
                     .. Active_Port_Type'Pos (Active_Port_Type'Last)
      then
         raw_edid := (others => 0);
         return -2;
      else
         if not HW.GFX.GMA.Is_Initialized then
            HW.GFX.GMA.Initialize (Success => success);
         end if;
         if success then
            HW.GFX.GMA.Display_Probing.Read_EDID
              (raw_edid, Active_Port_Type'Val (port), success);
         end if;
         if success then
            return 0;
         else
            return -1;
         end if;
      end if;
   end read_edid;

end GMA;