| /* |
| * Copyright 2016 Google Inc. |
| * |
| * See file CREDITS for list of people who contributed to this |
| * project. |
| * |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public License as |
| * published by the Free Software Foundation; either version 2 of |
| * the License, or (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but without any warranty; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| * MA 02111-1307 USA |
| */ |
| |
| #ifndef __BOARD_BOARD_H__ |
| #define __BOARD_BOARD_H__ |
| |
| #include "drivers/display/display.h" |
| #include "drivers/keyboard/keyboard.h" |
| #include "drivers/power/power.h" |
| #include "drivers/uart/uart.h" |
| |
| /* |
| * These functions should be prefixed by "board_" and return pointers to |
| * drivers which implement a generic interface to some functionality which |
| * is provided by a board specific piece of hardware. |
| * |
| * For instance, the driver which implements a UART may change from board to |
| * board, but all boards are assumed to have some sort of UART for debugging |
| * purposes, or at least something that can implement that interface. Each |
| * board will define a function called board_debug_uart which will return a |
| * properly configured driver instance that implements that UART in whatever |
| * way makes sense for that board. |
| * |
| * Boards might also define functions for their own use which return common |
| * components which might be needed to construct other drivers. For instance, |
| * a TPM driver might need an I2C bus controller driver to communicate over. |
| * The convention is for those functions to be prefixed with "get_" and to |
| * appear before the "board_*" functions. |
| */ |
| |
| UartOps *board_debug_uart(void); |
| |
| // Trusted keyboards are ones which we believe actually reflect input from the |
| // user and haven't been faked by a clever attacker. |
| KeyboardOps **board_trusted_keyboards(void); |
| // Untrusted keyboards are ones which may have been faked, for instance by an |
| // inconspicuous USB dongle pretending to be a keyboard plugged into the back |
| // of the machine. |
| KeyboardOps **board_untrusted_keyboards(void); |
| |
| PowerOps *board_power(void); |
| |
| DisplayOps *board_display(void); |
| |
| /* |
| * This group of functions gather information about the state of the system |
| * which may be physically implemented by GPIOs, information gathered from |
| * various components of the system like the EC, representing the state of |
| * software, or even just made up entirely. |
| * |
| * They should return a 1 if the flag is on, enabled, applicable, etc., a 0 |
| * if not, and a -1 if there was an error retrieving or calculating the flags |
| * value. |
| */ |
| // Whether video option ROMs have been loaded. |
| int board_flag_option_roms_loaded(void); |
| // If the "lid" is open on a laptop like device. |
| int board_flag_lid_open(void); |
| // If the power button (or equivalent) is pressed, and the user is requesting |
| // a shutdown. |
| int board_flag_power(void); |
| |
| #endif /* __BOARD_BOARD_H__ */ |