Zephyr Project API 4.2.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#ifndef ZEPHYR_INCLUDE_ESPI_H_
13#define ZEPHYR_INCLUDE_ESPI_H_
14
15#include <errno.h>
16
17#include <zephyr/sys/__assert.h>
18#include <zephyr/types.h>
19#include <zephyr/device.h>
20#include <zephyr/sys/slist.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
44
111
149
161
166#define ESPI_PERIPHERAL_INDEX_0 0ul
167#define ESPI_PERIPHERAL_INDEX_1 1ul
168#define ESPI_PERIPHERAL_INDEX_2 2ul
169
170#define ESPI_TARGET_TO_CONTROLLER 0ul
171#define ESPI_CONTROLLER_TO_TARGET 1ul
172
173#define ESPI_VWIRE_SRC_ID0 0ul
174#define ESPI_VWIRE_SRC_ID1 1ul
175#define ESPI_VWIRE_SRC_ID2 2ul
176#define ESPI_VWIRE_SRC_ID3 3ul
177#define ESPI_VWIRE_SRC_ID_MAX 4ul
178
179#define ESPI_PERIPHERAL_NODATA 0ul
180
181#define E8042_START_OPCODE 0x50
182#define E8042_MAX_OPCODE 0x5F
183
184#define EACPI_START_OPCODE 0x60
185#define EACPI_MAX_OPCODE 0x6F
186
187#define ECUSTOM_START_OPCODE 0xF0
188#define ECUSTOM_MAX_OPCODE 0xFF
189
221
245
251 /* Virtual wires that can only be send from controller to target */
269 /* Virtual wires that can only be sent from target to controller */
284 /*
285 * Virtual wire GPIOs that can be sent from target to controller for
286 * platform specific usage.
287 */
304
310#define ESPI_VWIRE_SIGNAL_OCB_0 ESPI_VWIRE_SIGNAL_TARGET_GPIO_0
312#define ESPI_VWIRE_SIGNAL_OCB_1 ESPI_VWIRE_SIGNAL_TARGET_GPIO_1
314#define ESPI_VWIRE_SIGNAL_OCB_2 ESPI_VWIRE_SIGNAL_TARGET_GPIO_2
316#define ESPI_VWIRE_SIGNAL_OCB_3 ESPI_VWIRE_SIGNAL_TARGET_GPIO_3
326 /* Read transactions */
329 /* Write transactions */
332 /* Write transactions without input parameters */
336 /* Status transactions */
340 /* ACPI read transactions */
341 EACPI_OBF_HAS_CHAR = EACPI_START_OPCODE,
343 /* ACPI write transactions */
345 /* ACPI status transactions */
348#if defined(CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION) || defined(__DOXYGEN__)
354#endif /* CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION */
355#if defined(CONFIG_ESPI_PERIPHERAL_CUSTOM_OPCODE) || defined(__DOXYGEN__)
356 /* Other customized transactions */
361 ECUSTOM_HOST_SUBS_INTERRUPT_EN = ECUSTOM_START_OPCODE,
377#endif /* CONFIG_ESPI_PERIPHERAL_CUSTOM_OPCODE */
378};
379
381#define HOST_KBC_EVT_IBF BIT(0)
383#define HOST_KBC_EVT_OBE BIT(1)
384
401
416
431
456
468
487
506
521
532struct espi_callback;
533
543typedef void (*espi_callback_handler_t) (const struct device *dev,
544 struct espi_callback *cb,
545 struct espi_event espi_evt);
546
550struct espi_callback {
552 sys_snode_t node;
553
556
562 enum espi_bus_event evt_type;
563};
573typedef int (*espi_api_config)(const struct device *dev, struct espi_cfg *cfg);
574typedef bool (*espi_api_get_channel_status)(const struct device *dev,
575 enum espi_channel ch);
576/* Logical Channel 0 APIs */
577typedef int (*espi_api_read_request)(const struct device *dev,
578 struct espi_request_packet *req);
579typedef int (*espi_api_write_request)(const struct device *dev,
580 struct espi_request_packet *req);
581typedef int (*espi_api_lpc_read_request)(const struct device *dev,
582 enum lpc_peripheral_opcode op,
583 uint32_t *data);
584typedef int (*espi_api_lpc_write_request)(const struct device *dev,
585 enum lpc_peripheral_opcode op,
586 uint32_t *data);
587/* Logical Channel 1 APIs */
588typedef int (*espi_api_send_vwire)(const struct device *dev,
589 enum espi_vwire_signal vw,
590 uint8_t level);
591typedef int (*espi_api_receive_vwire)(const struct device *dev,
592 enum espi_vwire_signal vw,
593 uint8_t *level);
594/* Logical Channel 2 APIs */
595typedef int (*espi_api_send_oob)(const struct device *dev,
596 struct espi_oob_packet *pckt);
597typedef int (*espi_api_receive_oob)(const struct device *dev,
598 struct espi_oob_packet *pckt);
599/* Logical Channel 3 APIs */
600typedef int (*espi_api_flash_read)(const struct device *dev,
601 struct espi_flash_packet *pckt);
602typedef int (*espi_api_flash_write)(const struct device *dev,
603 struct espi_flash_packet *pckt);
604typedef int (*espi_api_flash_erase)(const struct device *dev,
605 struct espi_flash_packet *pckt);
606/* Callbacks and traffic intercept */
607typedef int (*espi_api_manage_callback)(const struct device *dev,
608 struct espi_callback *callback,
609 bool set);
610
611__subsystem struct espi_driver_api {
612 espi_api_config config;
613 espi_api_get_channel_status get_channel_status;
614 espi_api_read_request read_request;
615 espi_api_write_request write_request;
616 espi_api_lpc_read_request read_lpc_request;
617 espi_api_lpc_write_request write_lpc_request;
618 espi_api_send_vwire send_vwire;
619 espi_api_receive_vwire receive_vwire;
620 espi_api_send_oob send_oob;
621 espi_api_receive_oob receive_oob;
622 espi_api_flash_read flash_read;
623 espi_api_flash_write flash_write;
624 espi_api_flash_erase flash_erase;
625 espi_api_manage_callback manage_callback;
626};
627
680__syscall int espi_config(const struct device *dev, struct espi_cfg *cfg);
681
682static inline int z_impl_espi_config(const struct device *dev,
683 struct espi_cfg *cfg)
684{
685 const struct espi_driver_api *api =
686 (const struct espi_driver_api *)dev->api;
687
688 return api->config(dev, cfg);
689}
690
703__syscall bool espi_get_channel_status(const struct device *dev,
704 enum espi_channel ch);
705
706static inline bool z_impl_espi_get_channel_status(const struct device *dev,
707 enum espi_channel ch)
708{
709 const struct espi_driver_api *api =
710 (const struct espi_driver_api *)dev->api;
711
712 return api->get_channel_status(dev, ch);
713}
714
729__syscall int espi_read_request(const struct device *dev,
730 struct espi_request_packet *req);
731
732static inline int z_impl_espi_read_request(const struct device *dev,
733 struct espi_request_packet *req)
734{
735 const struct espi_driver_api *api =
736 (const struct espi_driver_api *)dev->api;
737
738 if (!api->read_request) {
739 return -ENOTSUP;
740 }
741
742 return api->read_request(dev, req);
743}
744
759__syscall int espi_write_request(const struct device *dev,
760 struct espi_request_packet *req);
761
762static inline int z_impl_espi_write_request(const struct device *dev,
763 struct espi_request_packet *req)
764{
765 const struct espi_driver_api *api =
766 (const struct espi_driver_api *)dev->api;
767
768 if (!api->write_request) {
769 return -ENOTSUP;
770 }
771
772 return api->write_request(dev, req);
773}
774
791__syscall int espi_read_lpc_request(const struct device *dev,
792 enum lpc_peripheral_opcode op,
793 uint32_t *data);
794
795static inline int z_impl_espi_read_lpc_request(const struct device *dev,
796 enum lpc_peripheral_opcode op,
797 uint32_t *data)
798{
799 const struct espi_driver_api *api =
800 (const struct espi_driver_api *)dev->api;
801
802 if (!api->read_lpc_request) {
803 return -ENOTSUP;
804 }
805
806 return api->read_lpc_request(dev, op, data);
807}
808
824__syscall int espi_write_lpc_request(const struct device *dev,
825 enum lpc_peripheral_opcode op,
826 uint32_t *data);
827
828static inline int z_impl_espi_write_lpc_request(const struct device *dev,
829 enum lpc_peripheral_opcode op,
830 uint32_t *data)
831{
832 const struct espi_driver_api *api =
833 (const struct espi_driver_api *)dev->api;
834
835 if (!api->write_lpc_request) {
836 return -ENOTSUP;
837 }
838
839 return api->write_lpc_request(dev, op, data);
840}
841
857__syscall int espi_send_vwire(const struct device *dev,
859 uint8_t level);
860
861static inline int z_impl_espi_send_vwire(const struct device *dev,
863 uint8_t level)
864{
865 const struct espi_driver_api *api =
866 (const struct espi_driver_api *)dev->api;
867
868 return api->send_vwire(dev, signal, level);
869}
870
883__syscall int espi_receive_vwire(const struct device *dev,
885 uint8_t *level);
886
887static inline int z_impl_espi_receive_vwire(const struct device *dev,
889 uint8_t *level)
890{
891 const struct espi_driver_api *api =
892 (const struct espi_driver_api *)dev->api;
893
894 return api->receive_vwire(dev, signal, level);
895}
896
908__syscall int espi_send_oob(const struct device *dev,
909 struct espi_oob_packet *pckt);
910
911static inline int z_impl_espi_send_oob(const struct device *dev,
912 struct espi_oob_packet *pckt)
913{
914 const struct espi_driver_api *api =
915 (const struct espi_driver_api *)dev->api;
916
917 if (!api->send_oob) {
918 return -ENOTSUP;
919 }
920
921 return api->send_oob(dev, pckt);
922}
923
935__syscall int espi_receive_oob(const struct device *dev,
936 struct espi_oob_packet *pckt);
937
938static inline int z_impl_espi_receive_oob(const struct device *dev,
939 struct espi_oob_packet *pckt)
940{
941 const struct espi_driver_api *api =
942 (const struct espi_driver_api *)dev->api;
943
944 if (!api->receive_oob) {
945 return -ENOTSUP;
946 }
947
948 return api->receive_oob(dev, pckt);
949}
950
964__syscall int espi_read_flash(const struct device *dev,
965 struct espi_flash_packet *pckt);
966
967static inline int z_impl_espi_read_flash(const struct device *dev,
968 struct espi_flash_packet *pckt)
969{
970 const struct espi_driver_api *api =
971 (const struct espi_driver_api *)dev->api;
972
973 if (!api->flash_read) {
974 return -ENOTSUP;
975 }
976
977 return api->flash_read(dev, pckt);
978}
979
993__syscall int espi_write_flash(const struct device *dev,
994 struct espi_flash_packet *pckt);
995
996static inline int z_impl_espi_write_flash(const struct device *dev,
997 struct espi_flash_packet *pckt)
998{
999 const struct espi_driver_api *api =
1000 (const struct espi_driver_api *)dev->api;
1001
1002 if (!api->flash_write) {
1003 return -ENOTSUP;
1004 }
1005
1006 return api->flash_write(dev, pckt);
1007}
1008
1022__syscall int espi_flash_erase(const struct device *dev,
1023 struct espi_flash_packet *pckt);
1024
1025static inline int z_impl_espi_flash_erase(const struct device *dev,
1026 struct espi_flash_packet *pckt)
1027{
1028 const struct espi_driver_api *api =
1029 (const struct espi_driver_api *)dev->api;
1030
1031 if (!api->flash_erase) {
1032 return -ENOTSUP;
1033 }
1034
1035 return api->flash_erase(dev, pckt);
1036}
1037
1107static inline void espi_init_callback(struct espi_callback *callback,
1109 enum espi_bus_event evt_type)
1110{
1111 __ASSERT(callback, "Callback pointer should not be NULL");
1112 __ASSERT(handler, "Callback handler pointer should not be NULL");
1113
1114 callback->handler = handler;
1115 callback->evt_type = evt_type;
1116}
1117
1130static inline int espi_add_callback(const struct device *dev,
1131 struct espi_callback *callback)
1132{
1133 const struct espi_driver_api *api =
1134 (const struct espi_driver_api *)dev->api;
1135
1136 if (!api->manage_callback) {
1137 return -ENOTSUP;
1138 }
1139
1140 return api->manage_callback(dev, callback, true);
1141}
1142
1159static inline int espi_remove_callback(const struct device *dev,
1160 struct espi_callback *callback)
1161{
1162 const struct espi_driver_api *api =
1163 (const struct espi_driver_api *)dev->api;
1164
1165 if (!api->manage_callback) {
1166 return -ENOTSUP;
1167 }
1168
1169 return api->manage_callback(dev, callback, false);
1170}
1171
1172#ifdef __cplusplus
1173}
1174#endif
1175
1179#include <zephyr/syscalls/espi.h>
1180#endif /* ZEPHYR_INCLUDE_ESPI_H_ */
System error numbers.
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:36
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.
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:198
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:543
espi_bus_event
eSPI bus event.
Definition espi.h:117
espi_cycle_type
eSPI cycle types supported over eSPI peripheral channel
Definition espi.h:225
int espi_receive_oob(const struct device *dev, struct espi_oob_packet *pckt)
Receives SMBus transaction (out-of-band) packet from eSPI bus.
int espi_config(const struct device *dev, struct espi_cfg *cfg)
Configure operation of a eSPI controller.
static int espi_remove_callback(const struct device *dev, struct espi_callback *callback)
Remove an application callback.
Definition espi.h:1159
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 a 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:1107
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 a write 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:250
static int espi_add_callback(const struct device *dev, struct espi_callback *callback)
Add an application callback.
Definition espi.h:1130
espi_pc_event
eSPI peripheral channel events.
Definition espi.h:155
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:325
int espi_read_lpc_request(const struct device *dev, enum lpc_peripheral_opcode op, uint32_t *data)
Reads SOC data from a LPC peripheral with information updated over eSPI.
espi_channel
eSPI channel.
Definition espi.h:105
@ ESPI_IO_MODE_QUAD_LINES
Quad data line mode.
Definition espi.h:42
@ ESPI_IO_MODE_SINGLE_LINE
Single data line mode (traditional SPI)
Definition espi.h:38
@ ESPI_IO_MODE_DUAL_LINES
Dual data line mode.
Definition espi.h:40
@ ESPI_PERIPHERAL_HOST_IO_PVT2
Private Host I/O peripheral 2.
Definition espi.h:210
@ ESPI_PERIPHERAL_UART
UART peripheral.
Definition espi.h:200
@ ESPI_PERIPHERAL_HOST_IO
Host I/O peripheral.
Definition espi.h:204
@ ESPI_PERIPHERAL_HOST_IO_PVT3
Private Host I/O peripheral 3.
Definition espi.h:212
@ ESPI_PERIPHERAL_HOST_IO_PVT
Private Host I/O peripheral.
Definition espi.h:208
@ ESPI_PERIPHERAL_8042_KBC
8042 Keyboard Controller peripheral
Definition espi.h:202
@ ESPI_PERIPHERAL_EC_HOST_CMD
Embedded Controller Host Command peripheral.
Definition espi.h:218
@ ESPI_PERIPHERAL_DEBUG_PORT80
Debug Port 80 peripheral.
Definition espi.h:206
@ ESPI_BUS_EVENT_OOB_RECEIVED
Indicates the eSPI HW has received a Out-of-band packet from eSPI host.
Definition espi.h:140
@ ESPI_BUS_EVENT_CHANNEL_READY
Indicates the eSPI HW has received channel enable notification from eSPI host, once the eSPI channel ...
Definition espi.h:131
@ ESPI_BUS_PERIPHERAL_NOTIFICATION
Indicates the eSPI HW has received a peripheral eSPI host event.
Definition espi.h:145
@ ESPI_BUS_TAF_NOTIFICATION
Indicates the eSPI HW has received a Target Attached Flash (TAF) notification event.
Definition espi.h:147
@ ESPI_BUS_EVENT_VWIRE_RECEIVED
Indicates the eSPI HW has received a virtual wire message from eSPI host.
Definition espi.h:136
@ ESPI_BUS_RESET
Indicates the eSPI bus was reset either via eSPI reset pin.
Definition espi.h:125
@ ESPI_CYCLE_OK_COMPLETION_NODATA
Successful completion with no data.
Definition espi.h:239
@ ESPI_CYCLE_NOK_COMPLETION_NODATA
Unsuccessful completion with no data.
Definition espi.h:243
@ ESPI_CYCLE_MEMORY_WRITE32
32-bit memory write cycle
Definition espi.h:231
@ ESPI_CYCLE_MESSAGE_DATA
Message cycle with data.
Definition espi.h:237
@ ESPI_CYCLE_MEMORY_WRITE64
64-bit memory write cycle
Definition espi.h:233
@ ESPI_CYCLE_MEMORY_READ32
32-bit memory read cycle
Definition espi.h:227
@ ESPI_CYCLE_MESSAGE_NODATA
Message cycle with no data.
Definition espi.h:235
@ ESPI_CYCLE_MEMORY_READ64
64-bit memory read cycle
Definition espi.h:229
@ ESPI_CYCLE_OKCOMPLETION_DATA
Successful completion with data.
Definition espi.h:241
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_11
Target GPIO 11 signal.
Definition espi.h:299
@ ESPI_VWIRE_SIGNAL_PLTRST
Platform reset signal.
Definition espi.h:256
@ ESPI_VWIRE_SIGNAL_SUS_STAT
Suspend status signal.
Definition espi.h:257
@ ESPI_VWIRE_SIGNAL_RST_CPU_INIT
Reset CPU initialization signal.
Definition espi.h:278
@ ESPI_VWIRE_SIGNAL_SMIOUT
SMI output signal.
Definition espi.h:259
@ ESPI_VWIRE_SIGNAL_TARGET_BOOT_STS
Target boot status signal.
Definition espi.h:273
@ ESPI_VWIRE_SIGNAL_SMI
System Management Interrupt signal.
Definition espi.h:279
@ ESPI_VWIRE_SIGNAL_OOB_RST_WARN
Out-of-band reset warning signal.
Definition espi.h:255
@ ESPI_VWIRE_SIGNAL_SLP_WLAN
Sleep WLAN signal.
Definition espi.h:264
@ ESPI_VWIRE_SIGNAL_SLP_S4
Sleep S4 state signal.
Definition espi.h:253
@ ESPI_VWIRE_SIGNAL_ERR_NON_FATAL
Non-fatal error signal.
Definition espi.h:274
@ ESPI_VWIRE_SIGNAL_DNX_ACK
DNX acknowledge signal.
Definition espi.h:281
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_2
Target GPIO 2 signal.
Definition espi.h:290
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_10
Target GPIO 10 signal.
Definition espi.h:298
@ ESPI_VWIRE_SIGNAL_WAKE
Wake signal.
Definition espi.h:271
@ ESPI_VWIRE_SIGNAL_HOST_RST_ACK
Host reset acknowledge signal.
Definition espi.h:277
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_8
Target GPIO 8 signal.
Definition espi.h:296
@ ESPI_VWIRE_SIGNAL_OOB_RST_ACK
Out-of-band reset acknowledge signal.
Definition espi.h:272
@ ESPI_VWIRE_SIGNAL_DNX_WARN
DNX (Debug and eXception) warning signal.
Definition espi.h:267
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_9
Target GPIO 9 signal.
Definition espi.h:297
@ ESPI_VWIRE_SIGNAL_SUS_WARN
Suspend warning signal.
Definition espi.h:263
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_0
Target GPIO 0 signal.
Definition espi.h:288
@ ESPI_VWIRE_SIGNAL_SLP_A
Sleep A state signal.
Definition espi.h:261
@ ESPI_VWIRE_SIGNAL_PME
Power Management Event signal.
Definition espi.h:270
@ ESPI_VWIRE_SIGNAL_ERR_FATAL
Fatal error signal.
Definition espi.h:275
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_1
Target GPIO 1 signal.
Definition espi.h:289
@ ESPI_VWIRE_SIGNAL_SUS_PWRDN_ACK
Suspend power down acknowledge signal.
Definition espi.h:262
@ ESPI_VWIRE_SIGNAL_SLP_S3
Sleep S3 state signal.
Definition espi.h:252
@ ESPI_VWIRE_SIGNAL_HOST_C10
Host C10 state signal.
Definition espi.h:266
@ ESPI_VWIRE_SIGNAL_SLP_LAN
Sleep LAN signal.
Definition espi.h:265
@ ESPI_VWIRE_SIGNAL_SUS_ACK
Suspend acknowledge signal.
Definition espi.h:282
@ ESPI_VWIRE_SIGNAL_SLP_S5
Sleep S5 state signal.
Definition espi.h:254
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_3
Target GPIO 3 signal.
Definition espi.h:291
@ ESPI_VWIRE_SIGNAL_NMIOUT
NMI output signal.
Definition espi.h:258
@ ESPI_VWIRE_SIGNAL_COUNT
Number of Virtual Wire signals.
Definition espi.h:302
@ ESPI_VWIRE_SIGNAL_TARGET_BOOT_DONE
Target boot done signal.
Definition espi.h:276
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_4
Target GPIO 4 signal.
Definition espi.h:292
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_7
Target GPIO 7 signal.
Definition espi.h:295
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_6
Target GPIO 6 signal.
Definition espi.h:294
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_5
Target GPIO 5 signal.
Definition espi.h:293
@ ESPI_VWIRE_SIGNAL_HOST_RST_WARN
Host reset warning signal.
Definition espi.h:260
@ ESPI_VWIRE_SIGNAL_SCI
System Control Interrupt signal.
Definition espi.h:280
@ ESPI_PC_EVT_BUS_MASTER_ENABLE
Bus master enable event.
Definition espi.h:159
@ ESPI_PC_EVT_BUS_CHANNEL_READY
Bus channel ready event.
Definition espi.h:157
@ EACPI_READ_STS
Read ACPI status.
Definition espi.h:346
@ EACPI_WRITE_STS
Write ACPI status.
Definition espi.h:347
@ EACPI_IBF_HAS_CHAR
Check if ACPI input buffer has character.
Definition espi.h:342
@ ECUSTOM_HOST_SUBS_INTERRUPT_EN
Enable host subsystem interrupt (custom)
Definition espi.h:361
@ EACPI_OBF_HAS_CHAR
Check if ACPI output buffer has character.
Definition espi.h:341
@ ECUSTOM_HOST_CMD_GET_PARAM_MEMORY
Get host command parameter memory (custom)
Definition espi.h:366
@ EACPI_GET_SHARED_MEMORY
Shared memory region support to return the ACPI response data.
Definition espi.h:353
@ E8042_CLEAR_FLAG
Clear 8042 flag.
Definition espi.h:339
@ E8042_PAUSE_IRQ
Pause 8042 interrupt processing.
Definition espi.h:334
@ EACPI_WRITE_CHAR
Write character to ACPI output buffer.
Definition espi.h:344
@ E8042_SET_FLAG
Set 8042 flag.
Definition espi.h:338
@ E8042_READ_KB_STS
Read 8042 keyboard status.
Definition espi.h:337
@ E8042_WRITE_KB_CHAR
Write character to 8042 keyboard buffer.
Definition espi.h:330
@ E8042_WRITE_MB_CHAR
Write character to 8042 mouse buffer.
Definition espi.h:331
@ E8042_IBF_HAS_CHAR
Check if 8042 input buffer has character.
Definition espi.h:328
@ E8042_OBF_HAS_CHAR
Check if 8042 output buffer has character.
Definition espi.h:327
@ E8042_RESUME_IRQ
Resume 8042 interrupt processing.
Definition espi.h:333
@ E8042_CLEAR_OBF
Clear 8042 output buffer.
Definition espi.h:335
@ ECUSTOM_HOST_CMD_GET_PARAM_MEMORY_SIZE
Get host command parameter memory size (custom)
Definition espi.h:371
@ ECUSTOM_HOST_CMD_SEND_RESULT
Send host command result (custom)
Definition espi.h:376
@ ESPI_CHANNEL_OOB
Out-of-Band channel (channel 2)
Definition espi.h:108
@ ESPI_CHANNEL_PERIPHERAL
Peripheral channel (channel 0)
Definition espi.h:106
@ ESPI_CHANNEL_FLASH
Flash Access channel (channel 3)
Definition espi.h:109
@ ESPI_CHANNEL_VWIRE
Virtual Wire channel (channel 1)
Definition espi.h:107
int flash_erase(const struct device *dev, off_t offset, size_t size)
Erase part or all of a flash memory.
int flash_write(const struct device *dev, off_t offset, const void *data, size_t len)
Write buffer into flash memory.
int flash_read(const struct device *dev, off_t offset, void *data, size_t len)
Read data from flash.
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:39
#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:114
sighandler_t signal(int signo, sighandler_t handler)
#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:510
void * data
Address of the device instance private data.
Definition device.h:520
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:516
eSPI bus configuration parameters
Definition espi.h:460
enum espi_io_mode io_caps
Supported I/O mode.
Definition espi.h:462
enum espi_channel channel_caps
Supported channels.
Definition espi.h:464
uint8_t max_freq
Maximum supported frequency in MHz.
Definition espi.h:466
eSPI event
Definition espi.h:438
uint32_t evt_data
Data associated with the event.
Definition espi.h:454
enum espi_bus_event evt_type
The type of event that occurred.
Definition espi.h:440
uint32_t evt_details
Additional details for the event.
Definition espi.h:446
Event data format for ACPI events.
Definition espi.h:408
uint32_t data
Event data payload.
Definition espi.h:412
uint32_t type
Event type identifier.
Definition espi.h:410
uint32_t reserved
Reserved field for future use.
Definition espi.h:414
Event data format for KBC events.
Definition espi.h:391
uint32_t reserved
Reserved field for future use.
Definition espi.h:399
uint32_t evt
Event flags.
Definition espi.h:397
uint32_t data
Event data payload.
Definition espi.h:395
uint32_t type
Event type identifier.
Definition espi.h:393
Event data format for Private Channel (PVT) events.
Definition espi.h:423
uint32_t data
Event data payload.
Definition espi.h:427
uint32_t type
Event type identifier.
Definition espi.h:425
uint32_t reserved
Reserved field for future use.
Definition espi.h:429
eSPI flash transactions packet format
Definition espi.h:510
uint8_t * buf
Pointer to the data buffer.
Definition espi.h:512
uint32_t flash_addr
Flash address to access.
Definition espi.h:514
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:519
eSPI out-of-band transaction packet format
Definition espi.h:497
uint8_t * buf
Pointer to the data buffer.
Definition espi.h:499
uint16_t len
Length of the data in bytes (excluding the 3-byte OOB header).
Definition espi.h:504
eSPI peripheral request packet.
Definition espi.h:475
uint8_t tag
Transaction tag for tracking.
Definition espi.h:479
uint32_t address
Target address for the transaction.
Definition espi.h:483
uint8_t * data
Pointer to the data buffer for read or write operations.
Definition espi.h:485
enum espi_cycle_type cycle_type
Type of eSPI cycle being performed.
Definition espi.h:477
uint16_t len
Length of the data payload in bytes.
Definition espi.h:481