1/*
2 * Copyright 2016 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <boot/menu.h>
8#include <boot/platform/generic/text_menu.h>
9#include <safemode.h>
10
11#include "efi_platform.h"
12#include "video.h"
13#include "smp.h"
14
15
16void
17platform_add_menus(Menu *menu)
18{
19	MenuItem *item;
20
21	switch (menu->Type()) {
22		case MAIN_MENU:
23			item = new(std::nothrow)MenuItem("Select video mode", video_mode_menu());
24			if (item != NULL) {
25				menu->AddItem(item);
26				item->SetTarget(video_mode_hook);
27				item->SetShortcut('v');
28			}
29
30			break;
31
32		case SAFE_MODE_MENU:
33			item = new(std::nothrow) MenuItem("Use fail-safe graphics driver");
34			if (item != NULL) {
35				menu->AddItem(item);
36				item->SetType(MENU_ITEM_MARKABLE);
37				item->SetData(B_SAFEMODE_FAIL_SAFE_VIDEO_MODE);
38				item->SetHelpText("The system will use VESA mode "
39					"and won't try to use any video graphics drivers.");
40			}
41
42			smp_add_safemode_menus(menu);
43
44			item = new(std::nothrow) MenuItem("Disable ACPI");
45			if (item != NULL) {
46				menu->AddItem(item);
47				item->SetType(MENU_ITEM_MARKABLE);
48				item->SetData(B_SAFEMODE_DISABLE_ACPI);
49				item->SetHelpText("Disables Advanced Configuration and Power "
50					"Interface hardware support, overriding the ACPI setting "
51					"in the kernel settings file.");
52			}
53			break;
54
55		default:
56			break;
57	}
58}
59
60
61void
62platform_update_menu_item(Menu *menu, MenuItem *item)
63{
64	platform_generic_update_text_menu_item(menu, item);
65}
66
67
68void
69platform_run_menu(Menu *menu)
70{
71	platform_generic_run_text_menu(menu);
72}
73
74
75size_t
76platform_get_user_input_text(Menu *menu, MenuItem *item, char *buffer,
77	size_t bufferSize)
78{
79	return platform_generic_get_user_input_text(menu, item, buffer,
80		bufferSize);
81}
82