Nico Huber | 9bafc49 | 2020-05-18 23:33:28 +0200 | [diff] [blame] | 1 | -- SPDX-License-Identifier: GPL-2.0-only |
| 2 | |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 3 | with HW.GFX; |
| 4 | with HW.GFX.GMA; |
Nico Huber | 989aae9 | 2017-03-08 23:03:01 +0100 | [diff] [blame] | 5 | with HW.GFX.GMA.Display_Probing; |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 6 | |
| 7 | use HW.GFX; |
| 8 | use HW.GFX.GMA; |
Nico Huber | 989aae9 | 2017-03-08 23:03:01 +0100 | [diff] [blame] | 9 | use HW.GFX.GMA.Display_Probing; |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 10 | |
| 11 | with GMA.Mainboard; |
| 12 | |
Nico Huber | 7458629 | 2019-02-18 01:21:11 +0100 | [diff] [blame] | 13 | package body GMA.GFX_Init |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 14 | is |
| 15 | |
Nico Huber | 504d1ef | 2017-07-16 16:40:41 +0200 | [diff] [blame] | 16 | procedure gfxinit (lightup_ok : out Interfaces.C.int) |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 17 | is |
| 18 | ports : Port_List; |
Nico Huber | 989aae9 | 2017-03-08 23:03:01 +0100 | [diff] [blame] | 19 | configs : Pipe_Configs; |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 20 | |
| 21 | success : boolean; |
| 22 | |
| 23 | -- from pc80/vga driver |
| 24 | procedure vga_io_init; |
| 25 | pragma Import (C, vga_io_init, "vga_io_init"); |
| 26 | procedure vga_textmode_init; |
| 27 | pragma Import (C, vga_textmode_init, "vga_textmode_init"); |
| 28 | begin |
| 29 | lightup_ok := 0; |
| 30 | |
Nico Huber | 504d1ef | 2017-07-16 16:40:41 +0200 | [diff] [blame] | 31 | HW.GFX.GMA.Initialize (Success => success); |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 32 | |
| 33 | if success then |
| 34 | ports := Mainboard.ports; |
Nico Huber | 989aae9 | 2017-03-08 23:03:01 +0100 | [diff] [blame] | 35 | HW.GFX.GMA.Display_Probing.Scan_Ports |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 36 | (Configs => configs, |
| 37 | Ports => ports, |
| 38 | Max_Pipe => Primary); |
| 39 | |
| 40 | if configs (Primary).Port /= Disabled then |
Nico Huber | 82049cb | 2017-09-04 15:11:41 +0200 | [diff] [blame] | 41 | HW.GFX.GMA.Power_Up_VGA; |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 42 | vga_io_init; |
| 43 | vga_textmode_init; |
| 44 | |
Nico Huber | 71cbd71 | 2018-03-29 15:15:10 +0200 | [diff] [blame] | 45 | -- override probed framebuffer config |
| 46 | configs (Primary).Framebuffer.Width := 640; |
| 47 | configs (Primary).Framebuffer.Height := 400; |
| 48 | configs (Primary).Framebuffer.Offset := |
| 49 | VGA_PLANE_FRAMEBUFFER_OFFSET; |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 50 | |
Jeremy Compostella | e02e918 | 2023-01-24 13:59:46 -0700 | [diff] [blame^] | 51 | pragma Debug (HW.GFX.GMA.Dump_Configs (configs)); |
Nico Huber | 66203df | 2016-11-07 17:24:47 +0100 | [diff] [blame] | 52 | HW.GFX.GMA.Update_Outputs (configs); |
| 53 | |
| 54 | lightup_ok := 1; |
| 55 | end if; |
| 56 | end if; |
| 57 | end gfxinit; |
| 58 | |
Jeremy Compostella | 47f154c | 2022-12-01 15:55:06 -0700 | [diff] [blame] | 59 | procedure gfxstop (stop_ok : out Interfaces.C.int) |
| 60 | is |
| 61 | success : boolean; |
| 62 | begin |
| 63 | HW.GFX.GMA.Initialize (Clean_State => True, |
Elyes Haouas | c9f8380 | 2023-01-19 06:53:30 +0100 | [diff] [blame] | 64 | Success => success); |
Jeremy Compostella | 47f154c | 2022-12-01 15:55:06 -0700 | [diff] [blame] | 65 | if success then |
| 66 | stop_ok := 1; |
| 67 | else |
| 68 | stop_ok := 0; |
| 69 | end if; |
| 70 | end gfxstop; |
| 71 | |
Nico Huber | 7458629 | 2019-02-18 01:21:11 +0100 | [diff] [blame] | 72 | end GMA.GFX_Init; |