Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
espi.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019 Intel Corporation.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef ZEPHYR_INCLUDE_ESPI_H_
14#define ZEPHYR_INCLUDE_ESPI_H_
15
16#include <errno.h>
17
18#include <zephyr/sys/__assert.h>
19#include <zephyr/types.h>
20#include <zephyr/device.h>
21#include <zephyr/sys/slist.h>
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
36
48
98
115
153
165
170#define ESPI_PERIPHERAL_INDEX_0 0ul
171#define ESPI_PERIPHERAL_INDEX_1 1ul
172#define ESPI_PERIPHERAL_INDEX_2 2ul
173
174/* eSPI specification defines eSPI target and eSPI controller terms
175 * note that sometimes eSPI controller is also referred as eSPI host
176 */
177
178#define ESPI_TARGET_TO_CONTROLLER 0ul
179#define ESPI_CONTROLLER_TO_TARGET 1ul
180
181#define ESPI_VWIRE_SRC_ID0 0ul
182#define ESPI_VWIRE_SRC_ID1 1ul
183#define ESPI_VWIRE_SRC_ID2 2ul
184#define ESPI_VWIRE_SRC_ID3 3ul
185#define ESPI_VWIRE_SRC_ID_MAX 4ul
186
187#define ESPI_PERIPHERAL_NODATA 0ul
188
189#define E8042_START_OPCODE 0x50
190#define E8042_MAX_OPCODE 0x5F
191
192#define EACPI_START_OPCODE 0x60
193#define EACPI_MAX_OPCODE 0x6F
194
195#define ECUSTOM_START_OPCODE 0xF0
196#define ECUSTOM_MAX_OPCODE 0xFF
197
199
229
256
262#define ESPI_INT_ALL_MASK (ESPI_BUS_EVENTS | ESPI_VIRTUAL_WIRE_CHANNEL_EVENTS | \
263 ESPI_OOB_CHANNEL_EVENTS | ESPI_FLASH_CHANNEL_EVENTS | \
264 ESPI_PERIPHERAL_DEBUG_PORT80_EVENTS | ESPI_PERIPHERAL_8042_KBC_EVENTS | \
265 ESPI_PERIPHERAL_HOST_IO_EVENTS | ESPI_PERIPHERAL_SHARED_MEMORY_EVENTS)
266
268#define ESPI_INT_BUS_ONLY_MASK (ESPI_BUS_EVENTS | ESPI_VIRTUAL_WIRE_CHANNEL_EVENTS | \
269 ESPI_OOB_CHANNEL_EVENTS | ESPI_FLASH_CHANNEL_EVENTS)
270
272#define ESPI_INT_NONE_MASK 0U
273
274
298
304 /* Virtual wires that can only be send from controller to target */
321
322 /* Virtual wires that can only be sent from target to controller */
336
337 /*
338 * Virtual wire GPIOs that can be sent from target to controller for
339 * platform specific usage.
340 */
353
356};
357
363#define ESPI_VWIRE_SIGNAL_OCB_0 ESPI_VWIRE_SIGNAL_TARGET_GPIO_0
365#define ESPI_VWIRE_SIGNAL_OCB_1 ESPI_VWIRE_SIGNAL_TARGET_GPIO_1
367#define ESPI_VWIRE_SIGNAL_OCB_2 ESPI_VWIRE_SIGNAL_TARGET_GPIO_2
369#define ESPI_VWIRE_SIGNAL_OCB_3 ESPI_VWIRE_SIGNAL_TARGET_GPIO_3
371
379 /* Read transactions */
382 /* Write transactions */
385 /* Write transactions without input parameters */
389 /* Status transactions */
393 /* ACPI read transactions */
394 EACPI_OBF_HAS_CHAR = EACPI_START_OPCODE,
396 /* ACPI write transactions */
398 /* ACPI status transactions */
401#if defined(CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION) || defined(__DOXYGEN__)
407#endif /* CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION */
408#if defined(CONFIG_ESPI_PERIPHERAL_CUSTOM_OPCODE) || defined(__DOXYGEN__)
409 /* Other customized transactions */
415 ECUSTOM_HOST_SUBS_INTERRUPT_EN = ECUSTOM_START_OPCODE,
431#endif /* CONFIG_ESPI_PERIPHERAL_CUSTOM_OPCODE */
432};
433
435#define HOST_KBC_EVT_IBF BIT(0)
437#define HOST_KBC_EVT_OBE BIT(1)
438
455
470
472#define ESPI_EVENT_DATA_ACPI_TYPE_HOST_TO_EC_DATA 0
474#define ESPI_EVENT_DATA_ACPI_TYPE_HOST_TO_EC_CMD 1U
476#define ESPI_EVENT_DATA_ACPI_TYPE_HOST_RD_EC_TO_HOST 2U
477
492
517
529
548
567
582
593struct espi_callback;
594
603typedef void (*espi_callback_handler_t) (const struct device *dev,
604 struct espi_callback *cb,
605 struct espi_event espi_evt);
606
610struct espi_callback {
612 sys_snode_t node;
613
616
622 enum espi_bus_event evt_type;
623};
625
630
635typedef int (*espi_api_config)(const struct device *dev, struct espi_cfg *cfg);
640typedef bool (*espi_api_get_channel_status)(const struct device *dev,
641 enum espi_channel ch);
642/* Logical Channel 0 APIs */
647typedef int (*espi_api_read_request)(const struct device *dev,
648 struct espi_request_packet *req);
653typedef int (*espi_api_write_request)(const struct device *dev,
654 struct espi_request_packet *req);
659typedef int (*espi_api_lpc_read_request)(const struct device *dev,
660 enum lpc_peripheral_opcode op,
661 uint32_t *data);
666typedef int (*espi_api_lpc_write_request)(const struct device *dev,
667 enum lpc_peripheral_opcode op,
668 uint32_t *data);
669/* Logical Channel 1 APIs */
674typedef int (*espi_api_send_vwire)(const struct device *dev,
675 enum espi_vwire_signal vw,
676 uint8_t level);
681typedef int (*espi_api_receive_vwire)(const struct device *dev,
682 enum espi_vwire_signal vw,
683 uint8_t *level);
684/* Logical Channel 2 APIs */
689typedef int (*espi_api_send_oob)(const struct device *dev,
690 struct espi_oob_packet *pckt);
695typedef int (*espi_api_receive_oob)(const struct device *dev,
696 struct espi_oob_packet *pckt);
697/* Logical Channel 3 APIs */
702typedef int (*espi_api_flash_read)(const struct device *dev,
703 struct espi_flash_packet *pckt);
708typedef int (*espi_api_flash_write)(const struct device *dev,
709 struct espi_flash_packet *pckt);
714typedef int (*espi_api_flash_erase)(const struct device *dev,
715 struct espi_flash_packet *pckt);
716
717/* Callbacks and traffic intercept */
722typedef int (*espi_api_manage_callback)(const struct device *dev,
723 struct espi_callback *callback,
724 bool set);
725
726/* eSPI interrupt control */
731typedef int (*espi_api_interrupt_configure)(const struct device *dev,
733 uint32_t espi_interrupt_vendor);
734
770
772
821__syscall int espi_config(const struct device *dev, struct espi_cfg *cfg);
822
823static inline int z_impl_espi_config(const struct device *dev,
824 struct espi_cfg *cfg)
825{
826 return DEVICE_API_GET(espi, dev)->config(dev, cfg);
827}
828
841__syscall bool espi_get_channel_status(const struct device *dev,
842 enum espi_channel ch);
843
844static inline bool z_impl_espi_get_channel_status(const struct device *dev,
845 enum espi_channel ch)
846{
847 return DEVICE_API_GET(espi, dev)->get_channel_status(dev, ch);
848}
849
864__syscall int espi_read_request(const struct device *dev,
865 struct espi_request_packet *req);
866
867static inline int z_impl_espi_read_request(const struct device *dev,
868 struct espi_request_packet *req)
869{
870 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
871
872 if (!api->read_request) {
873 return -ENOTSUP;
874 }
875
876 return api->read_request(dev, req);
877}
878
893__syscall int espi_write_request(const struct device *dev,
894 struct espi_request_packet *req);
895
896static inline int z_impl_espi_write_request(const struct device *dev,
897 struct espi_request_packet *req)
898{
899 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
900
901 if (!api->write_request) {
902 return -ENOTSUP;
903 }
904
905 return api->write_request(dev, req);
906}
907
924__syscall int espi_read_lpc_request(const struct device *dev,
925 enum lpc_peripheral_opcode op,
926 uint32_t *data);
927
928static inline int z_impl_espi_read_lpc_request(const struct device *dev,
929 enum lpc_peripheral_opcode op,
930 uint32_t *data)
931{
932 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
933
934 if (!api->read_lpc_request) {
935 return -ENOTSUP;
936 }
937
938 return api->read_lpc_request(dev, op, data);
939}
940
956__syscall int espi_write_lpc_request(const struct device *dev,
957 enum lpc_peripheral_opcode op,
958 uint32_t *data);
959
960static inline int z_impl_espi_write_lpc_request(const struct device *dev,
961 enum lpc_peripheral_opcode op,
962 uint32_t *data)
963{
964 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
965
966 if (!api->write_lpc_request) {
967 return -ENOTSUP;
968 }
969
970 return api->write_lpc_request(dev, op, data);
971}
972
988__syscall int espi_send_vwire(const struct device *dev,
990 uint8_t level);
991
992static inline int z_impl_espi_send_vwire(const struct device *dev,
994 uint8_t level)
995{
996 return DEVICE_API_GET(espi, dev)->send_vwire(dev, signal, level);
997}
998
1011__syscall int espi_receive_vwire(const struct device *dev,
1013 uint8_t *level);
1014
1015static inline int z_impl_espi_receive_vwire(const struct device *dev,
1017 uint8_t *level)
1018{
1019 return DEVICE_API_GET(espi, dev)->receive_vwire(dev, signal, level);
1020}
1021
1033__syscall int espi_send_oob(const struct device *dev,
1034 struct espi_oob_packet *pckt);
1035
1036static inline int z_impl_espi_send_oob(const struct device *dev,
1037 struct espi_oob_packet *pckt)
1038{
1039 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
1040
1041 if (!api->send_oob) {
1042 return -ENOTSUP;
1043 }
1044
1045 return api->send_oob(dev, pckt);
1046}
1047
1059__syscall int espi_receive_oob(const struct device *dev,
1060 struct espi_oob_packet *pckt);
1061
1062static inline int z_impl_espi_receive_oob(const struct device *dev,
1063 struct espi_oob_packet *pckt)
1064{
1065 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
1066
1067 if (!api->receive_oob) {
1068 return -ENOTSUP;
1069 }
1070
1071 return api->receive_oob(dev, pckt);
1072}
1073
1087__syscall int espi_read_flash(const struct device *dev,
1088 struct espi_flash_packet *pckt);
1089
1090static inline int z_impl_espi_read_flash(const struct device *dev,
1091 struct espi_flash_packet *pckt)
1092{
1093 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
1094
1095 if (!api->flash_read) {
1096 return -ENOTSUP;
1097 }
1098
1099 return api->flash_read(dev, pckt);
1100}
1101
1115__syscall int espi_write_flash(const struct device *dev,
1116 struct espi_flash_packet *pckt);
1117
1118static inline int z_impl_espi_write_flash(const struct device *dev,
1119 struct espi_flash_packet *pckt)
1120{
1121 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
1122
1123 if (!api->flash_write) {
1124 return -ENOTSUP;
1125 }
1126
1127 return api->flash_write(dev, pckt);
1128}
1129
1143__syscall int espi_flash_erase(const struct device *dev,
1144 struct espi_flash_packet *pckt);
1145
1146static inline int z_impl_espi_flash_erase(const struct device *dev,
1147 struct espi_flash_packet *pckt)
1148{
1149 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
1150
1151 if (!api->flash_erase) {
1152 return -ENOTSUP;
1153 }
1154
1155 return api->flash_erase(dev, pckt);
1156}
1157
1220
1229static inline void espi_init_callback(struct espi_callback *callback,
1231 enum espi_bus_event evt_type)
1232{
1233 __ASSERT(callback, "Callback pointer should not be NULL");
1234 __ASSERT(handler, "Callback handler pointer should not be NULL");
1235
1236 callback->handler = handler;
1237 callback->evt_type = evt_type;
1238}
1239
1252static inline int espi_add_callback(const struct device *dev,
1253 struct espi_callback *callback)
1254{
1255 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
1256
1257 if (!api->manage_callback) {
1258 return -ENOTSUP;
1259 }
1260
1261 return api->manage_callback(dev, callback, true);
1262}
1263
1280static inline int espi_remove_callback(const struct device *dev,
1281 struct espi_callback *callback)
1282{
1283 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
1284
1285 if (!api->manage_callback) {
1286 return -ENOTSUP;
1287 }
1288
1289 return api->manage_callback(dev, callback, false);
1290}
1291
1346static inline int espi_interrupt_config(const struct device *dev, uint32_t espi_flags,
1347 uint32_t espi_vendor_flags)
1348{
1349 const struct espi_driver_api *api = DEVICE_API_GET(espi, dev);
1350
1351 if (!api->interrupt_config) {
1352 return -ENOTSUP;
1353 }
1354
1355 return api->interrupt_config(dev, espi_flags, espi_vendor_flags);
1356}
1357#ifdef __cplusplus
1358}
1359#endif
1360
1364#include <zephyr/syscalls/espi.h>
1365#endif /* ZEPHYR_INCLUDE_ESPI_H_ */
#define DEVICE_API_GET(_class, _dev)
Expands to the pointer of a device's API for a given class.
Definition device.h:1449
System error numbers.
int(* espi_api_lpc_read_request)(const struct device *dev, enum lpc_peripheral_opcode op, uint32_t *data)
Read from an LPC peripheral register.
Definition espi.h:659
int(* espi_api_flash_write)(const struct device *dev, struct espi_flash_packet *pckt)
Send a write request for a flash region shared over eSPI.
Definition espi.h:708
int(* espi_api_read_request)(const struct device *dev, struct espi_request_packet *req)
Send a memory, I/O or message read request over eSPI.
Definition espi.h:647
int(* espi_api_flash_erase)(const struct device *dev, struct espi_flash_packet *pckt)
Send an erase request for a flash region shared over eSPI.
Definition espi.h:714
bool(* espi_api_get_channel_status)(const struct device *dev, enum espi_channel ch)
Query whether a logical channel is ready.
Definition espi.h:640
int(* espi_api_write_request)(const struct device *dev, struct espi_request_packet *req)
Send a memory, I/O or message write request over eSPI.
Definition espi.h:653
int(* espi_api_flash_read)(const struct device *dev, struct espi_flash_packet *pckt)
Send a read request for a flash region shared over eSPI.
Definition espi.h:702
int(* espi_api_receive_oob)(const struct device *dev, struct espi_oob_packet *pckt)
Receive an SMBus transaction (out-of-band) packet from eSPI.
Definition espi.h:695
int(* espi_api_interrupt_configure)(const struct device *dev, uint32_t espi_interrupt_flags, uint32_t espi_interrupt_vendor)
Control eSPI interrupts.
Definition espi.h:731
int(* espi_api_receive_vwire)(const struct device *dev, enum espi_vwire_signal vw, uint8_t *level)
Retrieve the level of a virtual wire signal.
Definition espi.h:681
int(* espi_api_send_vwire)(const struct device *dev, enum espi_vwire_signal vw, uint8_t level)
Send a virtual wire packet over eSPI.
Definition espi.h:674
int(* espi_api_config)(const struct device *dev, struct espi_cfg *cfg)
Configure operation of an eSPI device.
Definition espi.h:635
int(* espi_api_manage_callback)(const struct device *dev, struct espi_callback *callback, bool set)
Add or remove an application callback.
Definition espi.h:722
int(* espi_api_lpc_write_request)(const struct device *dev, enum lpc_peripheral_opcode op, uint32_t *data)
Write to an LPC peripheral register.
Definition espi.h:666
int(* espi_api_send_oob)(const struct device *dev, struct espi_oob_packet *pckt)
Send an SMBus transaction (out-of-band) packet over eSPI.
Definition espi.h:689
int espi_read_flash(const struct device *dev, struct espi_flash_packet *pckt)
Sends a read request packet for shared flash.
espi_io_mode
eSPI I/O mode capabilities
Definition espi.h:40
int espi_read_request(const struct device *dev, struct espi_request_packet *req)
Sends memory, I/O or message read request over eSPI.
int espi_write_request(const struct device *dev, struct espi_request_packet *req)
Sends memory, I/O or message write request over eSPI.
static int espi_interrupt_config(const struct device *dev, uint32_t espi_flags, uint32_t espi_vendor_flags)
Control eSPI interrupts.
Definition espi.h:1346
int espi_send_oob(const struct device *dev, struct espi_oob_packet *pckt)
Sends SMBus transaction (out-of-band) packet over eSPI bus.
espi_virtual_peripheral
eSPI peripheral notification type.
Definition espi.h:206
espi_bus_event
eSPI bus event.
Definition espi.h:121
espi_cycle_type
eSPI cycle types supported over eSPI peripheral channel
Definition espi.h:278
int espi_receive_oob(const struct device *dev, struct espi_oob_packet *pckt)
Receives SMBus transaction (out-of-band) packet from eSPI bus.
espi_interrupt_flags
eSPI interrupt flags.
Definition espi.h:235
int espi_config(const struct device *dev, struct espi_cfg *cfg)
Configure operation of an eSPI device.
static int espi_remove_callback(const struct device *dev, struct espi_callback *callback)
Remove an application callback.
Definition espi.h:1280
bool espi_get_channel_status(const struct device *dev, enum espi_channel ch)
Query whether a logical channel is ready.
int espi_write_lpc_request(const struct device *dev, enum lpc_peripheral_opcode op, uint32_t *data)
Writes data to an LPC peripheral which generates an eSPI transaction.
static void espi_init_callback(struct espi_callback *callback, espi_callback_handler_t handler, enum espi_bus_event evt_type)
Callback model.
Definition espi.h:1229
void(* espi_callback_handler_t)(const struct device *dev, struct espi_callback *cb, struct espi_event espi_evt)
Define the application callback handler function signature.
Definition espi.h:603
int espi_receive_vwire(const struct device *dev, enum espi_vwire_signal signal, uint8_t *level)
Retrieves level status for a signal encapsulated in a virtual wire.
int espi_write_flash(const struct device *dev, struct espi_flash_packet *pckt)
Sends a write request packet for shared flash.
int espi_flash_erase(const struct device *dev, struct espi_flash_packet *pckt)
Sends an erase request packet for shared flash.
espi_vwire_signal
eSPI system platform signals that can be sent or received through virtual wire channel
Definition espi.h:303
static int espi_add_callback(const struct device *dev, struct espi_callback *callback)
Add an application callback.
Definition espi.h:1252
espi_pc_event
eSPI peripheral channel events.
Definition espi.h:159
int espi_send_vwire(const struct device *dev, enum espi_vwire_signal signal, uint8_t level)
Sends system/platform signal as a virtual wire packet.
lpc_peripheral_opcode
eSPI LPC peripheral opcodes
Definition espi.h:378
int espi_read_lpc_request(const struct device *dev, enum lpc_peripheral_opcode op, uint32_t *data)
Reads SOC data from an LPC peripheral with information updated over eSPI.
espi_channel
eSPI channel.
Definition espi.h:109
@ ESPI_IO_MODE_QUAD_LINES
Quad data line mode.
Definition espi.h:46
@ ESPI_IO_MODE_SINGLE_LINE
Single data line mode (traditional SPI).
Definition espi.h:42
@ ESPI_IO_MODE_DUAL_LINES
Dual data line mode.
Definition espi.h:44
@ ESPI_PERIPHERAL_HOST_IO_PVT2
Private Host I/O peripheral 2.
Definition espi.h:218
@ ESPI_PERIPHERAL_UART
UART peripheral.
Definition espi.h:208
@ ESPI_PERIPHERAL_HOST_IO
Host I/O peripheral.
Definition espi.h:212
@ ESPI_PERIPHERAL_HOST_IO_PVT3
Private Host I/O peripheral 3.
Definition espi.h:220
@ ESPI_PERIPHERAL_HOST_IO_PVT
Private Host I/O peripheral.
Definition espi.h:216
@ ESPI_PERIPHERAL_8042_KBC
8042 Keyboard peripheral
Definition espi.h:210
@ ESPI_PERIPHERAL_EC_HOST_CMD
Embedded Controller Host Command peripheral.
Definition espi.h:226
@ ESPI_PERIPHERAL_DEBUG_PORT80
Debug Port 80 peripheral.
Definition espi.h:214
@ ESPI_BUS_EVENT_OOB_RECEIVED
Indicates the eSPI HW has received a Out-of-band packet from eSPI controller.
Definition espi.h:144
@ ESPI_BUS_EVENT_CHANNEL_READY
Indicates the eSPI HW has received channel enable notification from eSPI controller,...
Definition espi.h:135
@ ESPI_BUS_PERIPHERAL_NOTIFICATION
Indicates the eSPI HW has received a peripheral eSPI host controller.
Definition espi.h:149
@ ESPI_BUS_TAF_NOTIFICATION
Indicates the eSPI HW has received a Target Attached Flash (TAF) notification event.
Definition espi.h:151
@ ESPI_BUS_EVENT_VWIRE_RECEIVED
Indicates the eSPI HW has received a virtual wire message from eSPI controller.
Definition espi.h:140
@ ESPI_BUS_RESET
Indicates the eSPI bus was reset either via eSPI reset pin.
Definition espi.h:129
@ ESPI_CYCLE_OK_COMPLETION_NODATA
Successful completion with no data.
Definition espi.h:292
@ ESPI_CYCLE_NOK_COMPLETION_NODATA
Unsuccessful completion with no data.
Definition espi.h:296
@ ESPI_CYCLE_MEMORY_WRITE32
32-bit memory write cycle
Definition espi.h:284
@ ESPI_CYCLE_MESSAGE_DATA
Message cycle with data.
Definition espi.h:290
@ ESPI_CYCLE_MEMORY_WRITE64
64-bit memory write cycle
Definition espi.h:286
@ ESPI_CYCLE_MEMORY_READ32
32-bit memory read cycle
Definition espi.h:280
@ ESPI_CYCLE_MESSAGE_NODATA
Message cycle with no data.
Definition espi.h:288
@ ESPI_CYCLE_MEMORY_READ64
64-bit memory read cycle
Definition espi.h:282
@ ESPI_CYCLE_OKCOMPLETION_DATA
Successful completion with data.
Definition espi.h:294
@ ESPI_PERIPHERAL_UART_EVENTS
Enables UART interrupt if HW supports it.
Definition espi.h:246
@ ESPI_PERIPHERAL_8042_KBC_EVENTS
Enables 8042 interrupt if HW supports it.
Definition espi.h:250
@ ESPI_BUS_EVENTS
Enables eSPI bus reset interrupts and channel negotiation changes.
Definition espi.h:237
@ ESPI_PERIPHERAL_DEBUG_PORT80_EVENTS
Enables Port80 eSPI interrupt if HW supports it.
Definition espi.h:248
@ ESPI_FLASH_CHANNEL_EVENTS
Enables eSPI Flash operations interrupt.
Definition espi.h:243
@ ESPI_OOB_CHANNEL_EVENTS
Enables eSPI OOB received interrupt.
Definition espi.h:241
@ ESPI_VIRTUAL_WIRE_CHANNEL_EVENTS
Enables eSPI VW received interrupt.
Definition espi.h:239
@ ESPI_PERIPHERAL_SHARED_MEMORY_EVENTS
Enables eSPI shared memory interrupt if HW supports it.
Definition espi.h:254
@ ESPI_PERIPHERAL_HOST_IO_EVENTS
Enables all ACPI eSPI host interface interrupt if HW supports it.
Definition espi.h:252
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_11
Target GPIO 11 signal.
Definition espi.h:352
@ ESPI_VWIRE_SIGNAL_PLTRST
Platform reset signal.
Definition espi.h:309
@ ESPI_VWIRE_SIGNAL_SUS_STAT
Suspend status signal.
Definition espi.h:310
@ ESPI_VWIRE_SIGNAL_RST_CPU_INIT
Reset CPU initialization signal.
Definition espi.h:331
@ ESPI_VWIRE_SIGNAL_SMIOUT
SMI output signal.
Definition espi.h:312
@ ESPI_VWIRE_SIGNAL_TARGET_BOOT_STS
Target boot status signal.
Definition espi.h:326
@ ESPI_VWIRE_SIGNAL_SMI
System Management Interrupt signal.
Definition espi.h:332
@ ESPI_VWIRE_SIGNAL_OOB_RST_WARN
Out-of-band reset warning signal.
Definition espi.h:308
@ ESPI_VWIRE_SIGNAL_SLP_WLAN
Sleep WLAN signal.
Definition espi.h:317
@ ESPI_VWIRE_SIGNAL_SLP_S4
Sleep S4 state signal.
Definition espi.h:306
@ ESPI_VWIRE_SIGNAL_ERR_NON_FATAL
Non-fatal error signal.
Definition espi.h:327
@ ESPI_VWIRE_SIGNAL_DNX_ACK
DNX acknowledge signal.
Definition espi.h:334
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_2
Target GPIO 2 signal.
Definition espi.h:343
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_10
Target GPIO 10 signal.
Definition espi.h:351
@ ESPI_VWIRE_SIGNAL_WAKE
Wake signal.
Definition espi.h:324
@ ESPI_VWIRE_SIGNAL_HOST_RST_ACK
Host reset acknowledge signal.
Definition espi.h:330
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_8
Target GPIO 8 signal.
Definition espi.h:349
@ ESPI_VWIRE_SIGNAL_OOB_RST_ACK
Out-of-band reset acknowledge signal.
Definition espi.h:325
@ ESPI_VWIRE_SIGNAL_DNX_WARN
DNX (Debug and eXception) warning signal.
Definition espi.h:320
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_9
Target GPIO 9 signal.
Definition espi.h:350
@ ESPI_VWIRE_SIGNAL_SUS_WARN
Suspend warning signal.
Definition espi.h:316
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_0
Target GPIO 0 signal.
Definition espi.h:341
@ ESPI_VWIRE_SIGNAL_SLP_A
Sleep A state signal.
Definition espi.h:314
@ ESPI_VWIRE_SIGNAL_PME
Power Management Event signal.
Definition espi.h:323
@ ESPI_VWIRE_SIGNAL_ERR_FATAL
Fatal error signal.
Definition espi.h:328
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_1
Target GPIO 1 signal.
Definition espi.h:342
@ ESPI_VWIRE_SIGNAL_SUS_PWRDN_ACK
Suspend power down acknowledge signal.
Definition espi.h:315
@ ESPI_VWIRE_SIGNAL_SLP_S3
Sleep S3 state signal.
Definition espi.h:305
@ ESPI_VWIRE_SIGNAL_HOST_C10
Host C10 state signal.
Definition espi.h:319
@ ESPI_VWIRE_SIGNAL_SLP_LAN
Sleep LAN signal.
Definition espi.h:318
@ ESPI_VWIRE_SIGNAL_SUS_ACK
Suspend acknowledge signal.
Definition espi.h:335
@ ESPI_VWIRE_SIGNAL_SLP_S5
Sleep S5 state signal.
Definition espi.h:307
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_3
Target GPIO 3 signal.
Definition espi.h:344
@ ESPI_VWIRE_SIGNAL_NMIOUT
NMI output signal.
Definition espi.h:311
@ ESPI_VWIRE_SIGNAL_COUNT
Number of Virtual Wire signals.
Definition espi.h:355
@ ESPI_VWIRE_SIGNAL_TARGET_BOOT_DONE
Target boot done signal.
Definition espi.h:329
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_4
Target GPIO 4 signal.
Definition espi.h:345
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_7
Target GPIO 7 signal.
Definition espi.h:348
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_6
Target GPIO 6 signal.
Definition espi.h:347
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_5
Target GPIO 5 signal.
Definition espi.h:346
@ ESPI_VWIRE_SIGNAL_HOST_RST_WARN
Host reset warning signal.
Definition espi.h:313
@ ESPI_VWIRE_SIGNAL_SCI
System Control Interrupt signal.
Definition espi.h:333
@ ESPI_PC_EVT_BUS_MASTER_ENABLE
Bus master enable event.
Definition espi.h:163
@ ESPI_PC_EVT_BUS_CHANNEL_READY
Bus channel ready event.
Definition espi.h:161
@ EACPI_READ_STS
Read ACPI status.
Definition espi.h:399
@ EACPI_WRITE_STS
Write ACPI status.
Definition espi.h:400
@ EACPI_IBF_HAS_CHAR
Check if ACPI input buffer has character.
Definition espi.h:395
@ ECUSTOM_HOST_SUBS_INTERRUPT_EN
Enable host subsystem interrupt (custom).
Definition espi.h:415
@ EACPI_OBF_HAS_CHAR
Check if ACPI output buffer has character.
Definition espi.h:394
@ ECUSTOM_HOST_CMD_GET_PARAM_MEMORY
Get host command parameter memory (custom).
Definition espi.h:420
@ EACPI_GET_SHARED_MEMORY
Shared memory region support to return the ACPI response data.
Definition espi.h:406
@ E8042_CLEAR_FLAG
Clear 8042 flag.
Definition espi.h:392
@ E8042_PAUSE_IRQ
Pause 8042 interrupt processing.
Definition espi.h:387
@ EACPI_WRITE_CHAR
Write character to ACPI output buffer.
Definition espi.h:397
@ E8042_SET_FLAG
Set 8042 flag.
Definition espi.h:391
@ E8042_READ_KB_STS
Read 8042 keyboard status.
Definition espi.h:390
@ E8042_WRITE_KB_CHAR
Write character to 8042 keyboard buffer.
Definition espi.h:383
@ E8042_WRITE_MB_CHAR
Write character to 8042 mouse buffer.
Definition espi.h:384
@ E8042_IBF_HAS_CHAR
Check if 8042 input buffer has character.
Definition espi.h:381
@ E8042_OBF_HAS_CHAR
Check if 8042 output buffer has character.
Definition espi.h:380
@ E8042_RESUME_IRQ
Resume 8042 interrupt processing.
Definition espi.h:386
@ E8042_CLEAR_OBF
Clear 8042 output buffer.
Definition espi.h:388
@ ECUSTOM_HOST_CMD_GET_PARAM_MEMORY_SIZE
Get host command parameter memory size (custom).
Definition espi.h:425
@ ECUSTOM_HOST_CMD_SEND_RESULT
Send host command result (custom).
Definition espi.h:430
@ ESPI_CHANNEL_OOB
Out-of-Band channel (channel 2).
Definition espi.h:112
@ ESPI_CHANNEL_PERIPHERAL
Peripheral channel (channel 0).
Definition espi.h:110
@ ESPI_CHANNEL_FLASH
Flash Access channel (channel 3).
Definition espi.h:113
@ ESPI_CHANNEL_VWIRE
Virtual Wire channel (channel 1).
Definition espi.h:111
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:44
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition util_macro.h:44
#define ENOTSUP
Unsupported value.
Definition errno.h:115
sighandler_t signal(int sig, sighandler_t handler)
Header file for the single-linked list API.
#define bool
Definition stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
void * data
Address of the device instance private data.
Definition device.h:523
eSPI bus configuration parameters
Definition espi.h:521
enum espi_io_mode io_caps
Supported I/O mode.
Definition espi.h:523
enum espi_channel channel_caps
Supported channels.
Definition espi.h:525
uint8_t max_freq
Maximum supported frequency in MHz.
Definition espi.h:527
<span class="mlabel">Driver Operations</span> eSPI driver operations
Definition espi.h:738
espi_api_lpc_write_request write_lpc_request
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:750
espi_api_send_vwire send_vwire
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition espi.h:752
espi_api_flash_read flash_read
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:760
espi_api_send_oob send_oob
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:756
espi_api_receive_vwire receive_vwire
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition espi.h:754
espi_api_receive_oob receive_oob
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:758
espi_api_write_request write_request
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:746
espi_api_flash_write flash_write
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:762
espi_api_interrupt_configure interrupt_config
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:768
espi_api_flash_erase flash_erase
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:764
espi_api_get_channel_status get_channel_status
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition espi.h:742
espi_api_read_request read_request
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:744
espi_api_manage_callback manage_callback
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:766
espi_api_config config
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition espi.h:740
espi_api_lpc_read_request read_lpc_request
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition espi.h:748
eSPI event
Definition espi.h:499
uint32_t evt_data
Data associated with the event.
Definition espi.h:515
enum espi_bus_event evt_type
The type of event that occurred.
Definition espi.h:501
uint32_t evt_details
Additional details for the event.
Definition espi.h:507
Event data format for ACPI events.
Definition espi.h:462
uint32_t data
Event data payload.
Definition espi.h:466
uint32_t type
Event type identifier.
Definition espi.h:464
uint32_t reserved
Reserved field for future use.
Definition espi.h:468
Event data format for KBC events.
Definition espi.h:445
uint32_t reserved
Reserved field for future use.
Definition espi.h:453
uint32_t evt
Event flags.
Definition espi.h:451
uint32_t data
Event data payload.
Definition espi.h:449
uint32_t type
Event type identifier.
Definition espi.h:447
Event data format for Private Channel (PVT) events.
Definition espi.h:484
uint32_t data
Event data payload.
Definition espi.h:488
uint32_t type
Event type identifier.
Definition espi.h:486
uint32_t reserved
Reserved field for future use.
Definition espi.h:490
eSPI flash transactions packet format
Definition espi.h:571
uint8_t * buf
Pointer to the data buffer.
Definition espi.h:573
uint32_t flash_addr
Flash address to access.
Definition espi.h:575
uint16_t len
Length of the data in bytes for read/write, or the size of the sector/block for an erase operation.
Definition espi.h:580
eSPI out-of-band transaction packet format
Definition espi.h:558
uint8_t * buf
Pointer to the data buffer.
Definition espi.h:560
uint16_t len
Length of the data in bytes (excluding the 3-byte OOB header).
Definition espi.h:565
eSPI peripheral request packet.
Definition espi.h:536
uint8_t tag
Transaction tag for tracking.
Definition espi.h:540
uint32_t address
Target address for the transaction.
Definition espi.h:544
uint8_t * data
Pointer to the data buffer for read or write operations.
Definition espi.h:546
enum espi_cycle_type cycle_type
Type of eSPI cycle being performed.
Definition espi.h:538
uint16_t len
Length of the data payload in bytes.
Definition espi.h:542