| /* |
| * This file is part of the coreboot project. |
| * |
| * Copyright 2015 Google Inc. |
| * |
| * 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; version 2 of the License. |
| * |
| * 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. |
| */ |
| |
| #ifndef CONSOLE_SPI_H |
| #define CONSOLE_SPI_H 1 |
| |
| #include <rules.h> |
| #include <stdint.h> |
| |
| void spiconsole_init(void); |
| void spiconsole_tx_byte(unsigned char c); |
| |
| #define __CONSOLE_SPI_ENABLE__ CONFIG_SPI_CONSOLE && \ |
| (ENV_RAMSTAGE || (ENV_SMM && CONFIG_DEBUG_SMI)) |
| |
| #if __CONSOLE_SPI_ENABLE__ |
| static inline void __spiconsole_init(void) { spiconsole_init(); } |
| static inline void __spiconsole_tx_byte(u8 data) { spiconsole_tx_byte(data); } |
| #else |
| static inline void __spiconsole_init(void) {} |
| static inline void __spiconsole_tx_byte(u8 data) {} |
| #endif /* __CONSOLE_SPI_ENABLE__ */ |
| |
| #define MAX_MSG_LENGTH 128 |
| |
| #define EM100_DEDICATED_CMD 0x11 |
| #define EM100_UFIFO_CMD 0xC0 |
| #define EM100_MSG_SIGNATURE 0x47364440 |
| |
| enum em100_message_types { |
| EM100_MSG_CHECKPOINT_1B = 0x01, |
| EM100_MSG_CHECKPOINT_2B, |
| EM100_MSG_CHECKPOINT_4B, |
| EM100_MSG_HEX, |
| EM100_MSG_ASCII, |
| EM100_MSG_TIMESTAMP, |
| EM100_MSG_LOOKUP |
| }; |
| |
| struct em100_msg_header { |
| uint8_t spi_command; |
| uint8_t reserved; |
| uint8_t em100_command; |
| uint32_t msg_signature; |
| uint8_t msg_type; |
| uint8_t msg_length; |
| } __attribute__ ((packed)); |
| |
| struct em100_msg { |
| struct em100_msg_header header; |
| char data[MAX_MSG_LENGTH]; |
| } __attribute__ ((packed)); |
| |
| |
| |
| #endif /* CONSOLE_SPI_H */ |