blob: dcbed2efa7ba547b30ca39af4feaa2263c8260d2 [file] [log] [blame]
Nico Huber83693c82016-10-08 22:17:55 +02001--
Nico Huberaf9cc9e2017-01-09 13:11:32 +01002-- Copyright (C) 2015-2017 secunet Security Networks AG
Nico Huber83693c82016-10-08 22:17:55 +02003--
4-- This program is free software; you can redistribute it and/or modify
5-- it under the terms of the GNU General Public License as published by
Nico Huber125a29e2016-10-18 00:23:54 +02006-- the Free Software Foundation; either version 2 of the License, or
7-- (at your option) any later version.
Nico Huber83693c82016-10-08 22:17:55 +02008--
9-- This program is distributed in the hope that it will be useful,
10-- but WITHOUT ANY WARRANTY; without even the implied warranty of
11-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12-- GNU General Public License for more details.
13--
14
Nico Huber83693c82016-10-08 22:17:55 +020015with HW.GFX.GMA.Config;
16with HW.GFX.GMA.Panel;
Nico Huber83693c82016-10-08 22:17:55 +020017with HW.GFX.GMA.DP_Info;
Nico Huber83693c82016-10-08 22:17:55 +020018
19with HW.Debug;
20with GNAT.Source_Info;
21
22package body HW.GFX.GMA.Connector_Info is
23
Nico Huber995436b2016-11-20 02:21:51 +010024 procedure Preferred_Link_Setting
25 (Port_Cfg : in out Port_Config;
26 Success : out Boolean)
Nico Huber83693c82016-10-08 22:17:55 +020027 is
Nico Huber995436b2016-11-20 02:21:51 +010028 DP_Port : constant GMA.DP_Port :=
Nico Huber83693c82016-10-08 22:17:55 +020029 (if Port_Cfg.Port = DIGI_A then
30 DP_A
31 else
32 (case Port_Cfg.PCH_Port is
33 when PCH_DP_B => DP_B,
34 when PCH_DP_C => DP_C,
35 when PCH_DP_D => DP_D,
Nico Huber995436b2016-11-20 02:21:51 +010036 when others => GMA.DP_Port'First));
Nico Huber83693c82016-10-08 22:17:55 +020037 begin
38 pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
39
40 if Port_Cfg.Display = DP then
Nico Huber2bbd6e72020-01-07 18:22:59 +010041 if GMA.Config.Use_PP_VDD_Override then
42 Panel.VDD_Override (Port_Cfg.Panel);
43 else
44 Panel.On (Port_Cfg.Panel);
Nico Huber83693c82016-10-08 22:17:55 +020045 end if;
46
47 DP_Info.Read_Caps
48 (Link => Port_Cfg.DP,
Nico Huber995436b2016-11-20 02:21:51 +010049 Port => DP_Port,
Nico Huber83693c82016-10-08 22:17:55 +020050 Success => Success);
51 if Success then
Greg V3d3452f2019-10-08 02:05:05 +030052 DP_Info.Read_eDP_Rates
53 (Link => Port_Cfg.DP,
54 Port => DP_Port);
55
Nico Huber83693c82016-10-08 22:17:55 +020056 DP_Info.Preferred_Link_Setting
57 (Link => Port_Cfg.DP,
58 Mode => Port_Cfg.Mode,
59 Success => Success);
Nico Huberaf9cc9e2017-01-09 13:11:32 +010060 pragma Debug (Success, DP_Info.Dump_Link_Setting (Port_Cfg.DP));
Nico Huber83693c82016-10-08 22:17:55 +020061 end if;
62 else
63 Success := True;
64 end if;
65 end Preferred_Link_Setting;
66
67 procedure Next_Link_Setting
68 (Port_Cfg : in out Port_Config;
69 Success : out Boolean)
70 is
71 begin
72 pragma Debug (Debug.Put_Line (GNAT.Source_Info.Enclosing_Entity));
73
74 if Port_Cfg.Display = DP then
75 DP_Info.Next_Link_Setting
76 (Link => Port_Cfg.DP,
77 Mode => Port_Cfg.Mode,
78 Success => Success);
Nico Huberaf9cc9e2017-01-09 13:11:32 +010079 pragma Debug (Success, DP_Info.Dump_Link_Setting (Port_Cfg.DP));
Nico Huber83693c82016-10-08 22:17:55 +020080 else
81 Success := False;
82 end if;
83 end Next_Link_Setting;
84
85 ----------------------------------------------------------------------------
86
87 function Default_BPC (Port_Cfg : Port_Config) return HW.GFX.BPC_Type
88 is
89 begin
90 return
91 (if Port_Cfg.Port = DIGI_A or
Arthur Heymans5d08a932018-03-28 17:00:18 +020092 (Port_Cfg.Is_FDI and Port_Cfg.PCH_Port = PCH_LVDS) or
93 Port_Cfg.Port = LVDS
Nico Huber83693c82016-10-08 22:17:55 +020094 then 6
95 else 8);
96 end Default_BPC;
97
98end HW.GFX.GMA.Connector_Info;