Clone a tag rather than SeaBIOS stable branch HEAD
[coreboot.git] / payloads / bayou / bayou.h
1 /*
2  * This file is part of the bayou project.
3  *
4  * Copyright (C) 2008 Advanced Micro Devices, Inc.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
18  */
19
20 #ifndef BAYOU_H_
21 #define BAYOU_H_
22
23 #include <libpayload.h>
24
25 #define BAYOU_MAX_ENTRIES 10
26
27 struct bpt_config {
28         u32 id;
29         u8 timeout;
30         u8 entries;
31         u8 padding[10];
32 };
33
34 struct bpt_pentry {
35         u8 index;
36         u8 parent;
37         u8 type;
38         u8 flags;
39         u8 title[64];
40         u8 nlen;
41 };
42
43 #define BPT_ID            0x30545042
44 #define BPT_TYPE_CHOOSER  0x01
45 #define BPT_TYPE_CHAIN    0x02
46 #define BPT_TYPE_SUBCHAIN 0x03
47
48 #define BPT_FLAG_DEFAULT  0x01
49 #define BPT_FLAG_NOSHOW   0x02
50
51 enum bayou_params {
52         BAYOU_PARAM_NAME = 0,
53         BAYOU_PARAM_LIST,
54         BAYOU_PARAM_DESC,
55         BAYOU_PARAMS_COUNT
56 };
57
58 struct payload {
59         struct bpt_pentry pentry;
60         struct larstat stat;
61         u8 *fptr;
62         char *params[BAYOU_PARAMS_COUNT];
63 };
64
65 struct bayoucfg {
66         u8 timeout;
67         int n_entries;
68         struct payload entries[BAYOU_MAX_ENTRIES];
69 };
70
71 extern struct bayoucfg bayoucfg;
72
73 int verify_self(u8 *ptr);
74 int self_get_params(u8 *fptr, u8 **params);
75 int self_load_and_run(struct payload *p, int *ret);
76
77 void menu(void);
78
79 void run_payload(struct payload *p);
80 char *payload_get_name(struct payload *p);
81 struct payload *payload_get_default(void);
82 void run_payload_timeout(struct payload *p, int timeout);
83 void payload_parse_params(struct payload *pload, u8 *params, int len);
84
85 int get_configuration(struct LAR *lar);
86
87 #endif