blob: 5493801a092a2ba48ff7375bb23b57336414466d [file] [log] [blame]
Stefan Reinauer9aea04a2012-03-30 12:01:06 -07001/*
2 * This file is part of the coreboot project.
3 *
4 * Copyright (C) 2011 The ChromiumOS Authors. All rights reserved.
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 as published by
8 * the Free Software Foundation; version 2 of the License.
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 __CHROMEOS_H__
21#define __CHROMEOS_H__
22
Aaron Durbin790e3ad2014-01-27 15:08:27 -060023#include <stddef.h>
Aaron Durbinfd795622013-03-01 17:12:26 -060024#include <stdint.h>
25
Stefan Reinauer9aea04a2012-03-30 12:01:06 -070026/* functions implemented per mainboard: */
27int get_developer_mode_switch(void);
28int get_recovery_mode_switch(void);
Aaron Durbinfd795622013-03-01 17:12:26 -060029int get_write_protect_state(void);
Stefan Reinauer9aea04a2012-03-30 12:01:06 -070030#ifdef __PRE_RAM__
31void save_chromeos_gpios(void);
32#endif
33
34/* functions implemented in vbnv.c: */
35int get_recovery_mode_from_vbnv(void);
Bill Richardson0a405ba2012-06-26 16:33:45 -070036int vboot_wants_oprom(void);
37extern int oprom_is_loaded;
Stefan Reinauer9aea04a2012-03-30 12:01:06 -070038
Aaron Durbinfd795622013-03-01 17:12:26 -060039void read_vbnv(uint8_t *vbnv_copy);
40void save_vbnv(const uint8_t *vbnv_copy);
41
Stefan Reinauer9aea04a2012-03-30 12:01:06 -070042/* functions implemented in chromeos.c: */
43int developer_mode_enabled(void);
44int recovery_mode_enabled(void);
45
46/* functions implemented in vboot.c */
47void init_chromeos(int bootmode);
48
Aaron Durbinfd795622013-03-01 17:12:26 -060049struct romstage_handoff;
Aaron Durbind37705c2013-10-10 20:58:57 -050050#if CONFIG_VBOOT_VERIFY_FIRMWARE
Aaron Durbinfd795622013-03-01 17:12:26 -060051void vboot_verify_firmware(struct romstage_handoff *handoff);
Vladimir Serbinenko12874162014-01-12 14:12:15 +010052void *vboot_get_payload(size_t *len);
Aaron Durbindd32a312013-03-07 23:15:06 -060053/* Returns 0 on success < 0 on error. */
54int vboot_get_handoff_info(void **addr, uint32_t *size);
Aaron Durbind37705c2013-10-10 20:58:57 -050055#else
56static inline void vboot_verify_firmware(struct romstage_handoff *h) {}
Aaron Durbinfd795622013-03-01 17:12:26 -060057#endif
58
Stefan Reinauer9aea04a2012-03-30 12:01:06 -070059#endif