Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
 4.2.99
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
11
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
32
41
91
108
145
146
156
161#define ESPI_PERIPHERAL_INDEX_0 0ul
162#define ESPI_PERIPHERAL_INDEX_1 1ul
163#define ESPI_PERIPHERAL_INDEX_2 2ul
164
165#define ESPI_TARGET_TO_CONTROLLER 0ul
166#define ESPI_CONTROLLER_TO_TARGET 1ul
167
168#define ESPI_VWIRE_SRC_ID0 0ul
169#define ESPI_VWIRE_SRC_ID1 1ul
170#define ESPI_VWIRE_SRC_ID2 2ul
171#define ESPI_VWIRE_SRC_ID3 3ul
172#define ESPI_VWIRE_SRC_ID_MAX 4ul
173
174#define ESPI_PERIPHERAL_NODATA 0ul
175
176#define E8042_START_OPCODE 0x50
177#define E8042_MAX_OPCODE 0x5F
178
179#define EACPI_START_OPCODE 0x60
180#define EACPI_MAX_OPCODE 0x6F
181
182#define ECUSTOM_START_OPCODE 0xF0
183#define ECUSTOM_MAX_OPCODE 0xFF
184
186
201#if defined(CONFIG_ESPI_PERIPHERAL_EC_HOST_CMD)
202 ESPI_PERIPHERAL_EC_HOST_CMD,
203#endif /* CONFIG_ESPI_PERIPHERAL_EC_HOST_CMD */
204};
205
220
226 /* Virtual wires that can only be send from controller to target */
243 /* Virtual wires that can only be sent from target to controller */
253 /* System management interrupt */
255 /* System control interrupt */
259 /*
260 * Virtual wire GPIOs that can be sent from target to controller for
261 * platform specific usage.
262 */
275
276 /* Number of Virtual Wires */
278};
279
280/* USB-C port over current */
281#define ESPI_VWIRE_SIGNAL_OCB_0 ESPI_VWIRE_SIGNAL_TARGET_GPIO_0
282#define ESPI_VWIRE_SIGNAL_OCB_1 ESPI_VWIRE_SIGNAL_TARGET_GPIO_1
283#define ESPI_VWIRE_SIGNAL_OCB_2 ESPI_VWIRE_SIGNAL_TARGET_GPIO_2
284#define ESPI_VWIRE_SIGNAL_OCB_3 ESPI_VWIRE_SIGNAL_TARGET_GPIO_3
285
286/* eSPI LPC peripherals. */
288 /* Read transactions */
291 /* Write transactions */
294 /* Write transactions without input parameters */
298 /* Status transactions */
302 /* ACPI read transactions */
303 EACPI_OBF_HAS_CHAR = EACPI_START_OPCODE,
305 /* ACPI write transactions */
307 /* ACPI status transactions */
310#if defined(CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION)
311 /* Shared memory region support to return the ACPI response data */
312 EACPI_GET_SHARED_MEMORY,
313#endif /* CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION */
314#if defined(CONFIG_ESPI_PERIPHERAL_CUSTOM_OPCODE)
315 /* Other customized transactions */
316 ECUSTOM_HOST_SUBS_INTERRUPT_EN = ECUSTOM_START_OPCODE,
317 ECUSTOM_HOST_CMD_GET_PARAM_MEMORY,
318 ECUSTOM_HOST_CMD_GET_PARAM_MEMORY_SIZE,
319 ECUSTOM_HOST_CMD_SEND_RESULT,
320#endif /* CONFIG_ESPI_PERIPHERAL_CUSTOM_OPCODE */
321};
322
323/* KBC 8042 event: Input Buffer Full */
324#define HOST_KBC_EVT_IBF BIT(0)
325/* KBC 8042 event: Output Buffer Empty */
326#define HOST_KBC_EVT_OBE BIT(1)
336
345
357
369
380
394
403
404struct espi_callback;
405
415typedef void (*espi_callback_handler_t) (const struct device *dev,
416 struct espi_callback *cb,
417 struct espi_event espi_evt);
418
429struct espi_callback {
431 sys_snode_t node;
432
435
441 enum espi_bus_event evt_type;
442};
444
452typedef int (*espi_api_config)(const struct device *dev, struct espi_cfg *cfg);
453typedef bool (*espi_api_get_channel_status)(const struct device *dev,
454 enum espi_channel ch);
455/* Logical Channel 0 APIs */
456typedef int (*espi_api_read_request)(const struct device *dev,
457 struct espi_request_packet *req);
458typedef int (*espi_api_write_request)(const struct device *dev,
459 struct espi_request_packet *req);
460typedef int (*espi_api_lpc_read_request)(const struct device *dev,
461 enum lpc_peripheral_opcode op,
462 uint32_t *data);
463typedef int (*espi_api_lpc_write_request)(const struct device *dev,
464 enum lpc_peripheral_opcode op,
465 uint32_t *data);
466/* Logical Channel 1 APIs */
467typedef int (*espi_api_send_vwire)(const struct device *dev,
468 enum espi_vwire_signal vw,
469 uint8_t level);
470typedef int (*espi_api_receive_vwire)(const struct device *dev,
471 enum espi_vwire_signal vw,
472 uint8_t *level);
473/* Logical Channel 2 APIs */
474typedef int (*espi_api_send_oob)(const struct device *dev,
475 struct espi_oob_packet *pckt);
476typedef int (*espi_api_receive_oob)(const struct device *dev,
477 struct espi_oob_packet *pckt);
478/* Logical Channel 3 APIs */
479typedef int (*espi_api_flash_read)(const struct device *dev,
480 struct espi_flash_packet *pckt);
481typedef int (*espi_api_flash_write)(const struct device *dev,
482 struct espi_flash_packet *pckt);
483typedef int (*espi_api_flash_erase)(const struct device *dev,
484 struct espi_flash_packet *pckt);
485/* Callbacks and traffic intercept */
486typedef int (*espi_api_manage_callback)(const struct device *dev,
487 struct espi_callback *callback,
488 bool set);
489
490__subsystem struct espi_driver_api {
491 espi_api_config config;
492 espi_api_get_channel_status get_channel_status;
493 espi_api_read_request read_request;
494 espi_api_write_request write_request;
495 espi_api_lpc_read_request read_lpc_request;
496 espi_api_lpc_write_request write_lpc_request;
497 espi_api_send_vwire send_vwire;
498 espi_api_receive_vwire receive_vwire;
499 espi_api_send_oob send_oob;
500 espi_api_receive_oob receive_oob;
501 espi_api_flash_read flash_read;
502 espi_api_flash_write flash_write;
503 espi_api_flash_erase flash_erase;
504 espi_api_manage_callback manage_callback;
505};
506
510
559__syscall int espi_config(const struct device *dev, struct espi_cfg *cfg);
560
561static inline int z_impl_espi_config(const struct device *dev,
562 struct espi_cfg *cfg)
563{
564 const struct espi_driver_api *api =
565 (const struct espi_driver_api *)dev->api;
566
567 return api->config(dev, cfg);
568}
569
582__syscall bool espi_get_channel_status(const struct device *dev,
583 enum espi_channel ch);
584
585static inline bool z_impl_espi_get_channel_status(const struct device *dev,
586 enum espi_channel ch)
587{
588 const struct espi_driver_api *api =
589 (const struct espi_driver_api *)dev->api;
590
591 return api->get_channel_status(dev, ch);
592}
593
608__syscall int espi_read_request(const struct device *dev,
609 struct espi_request_packet *req);
610
611static inline int z_impl_espi_read_request(const struct device *dev,
612 struct espi_request_packet *req)
613{
614 const struct espi_driver_api *api =
615 (const struct espi_driver_api *)dev->api;
616
617 if (!api->read_request) {
618 return -ENOTSUP;
619 }
620
621 return api->read_request(dev, req);
622}
623
638__syscall int espi_write_request(const struct device *dev,
639 struct espi_request_packet *req);
640
641static inline int z_impl_espi_write_request(const struct device *dev,
642 struct espi_request_packet *req)
643{
644 const struct espi_driver_api *api =
645 (const struct espi_driver_api *)dev->api;
646
647 if (!api->write_request) {
648 return -ENOTSUP;
649 }
650
651 return api->write_request(dev, req);
652}
653
670__syscall int espi_read_lpc_request(const struct device *dev,
671 enum lpc_peripheral_opcode op,
672 uint32_t *data);
673
674static inline int z_impl_espi_read_lpc_request(const struct device *dev,
675 enum lpc_peripheral_opcode op,
676 uint32_t *data)
677{
678 const struct espi_driver_api *api =
679 (const struct espi_driver_api *)dev->api;
680
681 if (!api->read_lpc_request) {
682 return -ENOTSUP;
683 }
684
685 return api->read_lpc_request(dev, op, data);
686}
687
703__syscall int espi_write_lpc_request(const struct device *dev,
704 enum lpc_peripheral_opcode op,
705 uint32_t *data);
706
707static inline int z_impl_espi_write_lpc_request(const struct device *dev,
708 enum lpc_peripheral_opcode op,
709 uint32_t *data)
710{
711 const struct espi_driver_api *api =
712 (const struct espi_driver_api *)dev->api;
713
714 if (!api->write_lpc_request) {
715 return -ENOTSUP;
716 }
717
718 return api->write_lpc_request(dev, op, data);
719}
720
736__syscall int espi_send_vwire(const struct device *dev,
738 uint8_t level);
739
740static inline int z_impl_espi_send_vwire(const struct device *dev,
742 uint8_t level)
743{
744 const struct espi_driver_api *api =
745 (const struct espi_driver_api *)dev->api;
746
747 return api->send_vwire(dev, signal, level);
748}
749
762__syscall int espi_receive_vwire(const struct device *dev,
764 uint8_t *level);
765
766static inline int z_impl_espi_receive_vwire(const struct device *dev,
768 uint8_t *level)
769{
770 const struct espi_driver_api *api =
771 (const struct espi_driver_api *)dev->api;
772
773 return api->receive_vwire(dev, signal, level);
774}
775
787__syscall int espi_send_oob(const struct device *dev,
788 struct espi_oob_packet *pckt);
789
790static inline int z_impl_espi_send_oob(const struct device *dev,
791 struct espi_oob_packet *pckt)
792{
793 const struct espi_driver_api *api =
794 (const struct espi_driver_api *)dev->api;
795
796 if (!api->send_oob) {
797 return -ENOTSUP;
798 }
799
800 return api->send_oob(dev, pckt);
801}
802
814__syscall int espi_receive_oob(const struct device *dev,
815 struct espi_oob_packet *pckt);
816
817static inline int z_impl_espi_receive_oob(const struct device *dev,
818 struct espi_oob_packet *pckt)
819{
820 const struct espi_driver_api *api =
821 (const struct espi_driver_api *)dev->api;
822
823 if (!api->receive_oob) {
824 return -ENOTSUP;
825 }
826
827 return api->receive_oob(dev, pckt);
828}
829
843__syscall int espi_read_flash(const struct device *dev,
844 struct espi_flash_packet *pckt);
845
846static inline int z_impl_espi_read_flash(const struct device *dev,
847 struct espi_flash_packet *pckt)
848{
849 const struct espi_driver_api *api =
850 (const struct espi_driver_api *)dev->api;
851
852 if (!api->flash_read) {
853 return -ENOTSUP;
854 }
855
856 return api->flash_read(dev, pckt);
857}
858
872__syscall int espi_write_flash(const struct device *dev,
873 struct espi_flash_packet *pckt);
874
875static inline int z_impl_espi_write_flash(const struct device *dev,
876 struct espi_flash_packet *pckt)
877{
878 const struct espi_driver_api *api =
879 (const struct espi_driver_api *)dev->api;
880
881 if (!api->flash_write) {
882 return -ENOTSUP;
883 }
884
885 return api->flash_write(dev, pckt);
886}
887
901__syscall int espi_flash_erase(const struct device *dev,
902 struct espi_flash_packet *pckt);
903
904static inline int z_impl_espi_flash_erase(const struct device *dev,
905 struct espi_flash_packet *pckt)
906{
907 const struct espi_driver_api *api =
908 (const struct espi_driver_api *)dev->api;
909
910 if (!api->flash_erase) {
911 return -ENOTSUP;
912 }
913
914 return api->flash_erase(dev, pckt);
915}
916
977
986static inline void espi_init_callback(struct espi_callback *callback,
988 enum espi_bus_event evt_type)
989{
990 __ASSERT(callback, "Callback pointer should not be NULL");
991 __ASSERT(handler, "Callback handler pointer should not be NULL");
992
993 callback->handler = handler;
994 callback->evt_type = evt_type;
995}
996
1009static inline int espi_add_callback(const struct device *dev,
1010 struct espi_callback *callback)
1011{
1012 const struct espi_driver_api *api =
1013 (const struct espi_driver_api *)dev->api;
1014
1015 if (!api->manage_callback) {
1016 return -ENOTSUP;
1017 }
1018
1019 return api->manage_callback(dev, callback, true);
1020}
1021
1038static inline int espi_remove_callback(const struct device *dev,
1039 struct espi_callback *callback)
1040{
1041 const struct espi_driver_api *api =
1042 (const struct espi_driver_api *)dev->api;
1043
1044 if (!api->manage_callback) {
1045 return -ENOTSUP;
1046 }
1047
1048 return api->manage_callback(dev, callback, false);
1049}
1050
1051#ifdef __cplusplus
1052}
1053#endif
1054
1058#include <zephyr/syscalls/espi.h>
1059#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:193
espi_bus_event
eSPI bus event.
Definition espi.h:114
espi_cycle_type
eSPI cycle types supported over eSPI peripheral channel
Definition espi.h:209
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:1038
bool espi_get_channel_status(const struct device *dev, enum espi_channel ch)
Query to see if it a 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:986
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:415
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 send or receive through virtual wire channel
Definition espi.h:225
static int espi_add_callback(const struct device *dev, struct espi_callback *callback)
Add an application callback.
Definition espi.h:1009
espi_pc_event
eSPI peripheral channel events.
Definition espi.h:152
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
Definition espi.h:287
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:102
@ ESPI_IO_MODE_QUAD_LINES
Definition espi.h:39
@ ESPI_IO_MODE_SINGLE_LINE
Definition espi.h:37
@ ESPI_IO_MODE_DUAL_LINES
Definition espi.h:38
@ ESPI_PERIPHERAL_HOST_IO_PVT2
Definition espi.h:199
@ ESPI_PERIPHERAL_UART
Definition espi.h:194
@ ESPI_PERIPHERAL_HOST_IO
Definition espi.h:196
@ ESPI_PERIPHERAL_HOST_IO_PVT3
Definition espi.h:200
@ ESPI_PERIPHERAL_HOST_IO_PVT
Definition espi.h:198
@ ESPI_PERIPHERAL_8042_KBC
Definition espi.h:195
@ ESPI_PERIPHERAL_DEBUG_PORT80
Definition espi.h:197
@ ESPI_BUS_EVENT_OOB_RECEIVED
Indicates the eSPI HW has received a Out-of-band package from eSPI host.
Definition espi.h:137
@ ESPI_BUS_EVENT_CHANNEL_READY
Indicates the eSPI HW has received channel enable notification from eSPI host, once the eSPI channel ...
Definition espi.h:128
@ ESPI_BUS_PERIPHERAL_NOTIFICATION
Indicates the eSPI HW has received a peripheral eSPI host event.
Definition espi.h:142
@ ESPI_BUS_TAF_NOTIFICATION
Definition espi.h:143
@ ESPI_BUS_EVENT_VWIRE_RECEIVED
Indicates the eSPI HW has received a virtual wire message from eSPI host.
Definition espi.h:133
@ ESPI_BUS_RESET
Indicates the eSPI bus was reset either via eSPI reset pin.
Definition espi.h:122
@ ESPI_CYCLE_OK_COMPLETION_NODATA
Definition espi.h:216
@ ESPI_CYCLE_NOK_COMPLETION_NODATA
Definition espi.h:218
@ ESPI_CYCLE_MEMORY_WRITE32
Definition espi.h:212
@ ESPI_CYCLE_MESSAGE_DATA
Definition espi.h:215
@ ESPI_CYCLE_MEMORY_WRITE64
Definition espi.h:213
@ ESPI_CYCLE_MEMORY_READ32
Definition espi.h:210
@ ESPI_CYCLE_MESSAGE_NODATA
Definition espi.h:214
@ ESPI_CYCLE_MEMORY_READ64
Definition espi.h:211
@ ESPI_CYCLE_OKCOMPLETION_DATA
Definition espi.h:217
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_11
Definition espi.h:274
@ ESPI_VWIRE_SIGNAL_PLTRST
Definition espi.h:231
@ ESPI_VWIRE_SIGNAL_SUS_STAT
Definition espi.h:232
@ ESPI_VWIRE_SIGNAL_RST_CPU_INIT
Definition espi.h:252
@ ESPI_VWIRE_SIGNAL_SMIOUT
Definition espi.h:234
@ ESPI_VWIRE_SIGNAL_TARGET_BOOT_STS
Definition espi.h:247
@ ESPI_VWIRE_SIGNAL_SMI
Definition espi.h:254
@ ESPI_VWIRE_SIGNAL_OOB_RST_WARN
Definition espi.h:230
@ ESPI_VWIRE_SIGNAL_SLP_WLAN
Definition espi.h:239
@ ESPI_VWIRE_SIGNAL_SLP_S4
Definition espi.h:228
@ ESPI_VWIRE_SIGNAL_ERR_NON_FATAL
Definition espi.h:248
@ ESPI_VWIRE_SIGNAL_DNX_ACK
Definition espi.h:257
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_2
Definition espi.h:265
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_10
Definition espi.h:273
@ ESPI_VWIRE_SIGNAL_WAKE
Definition espi.h:245
@ ESPI_VWIRE_SIGNAL_HOST_RST_ACK
Definition espi.h:251
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_8
Definition espi.h:271
@ ESPI_VWIRE_SIGNAL_OOB_RST_ACK
Definition espi.h:246
@ ESPI_VWIRE_SIGNAL_DNX_WARN
Definition espi.h:242
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_9
Definition espi.h:272
@ ESPI_VWIRE_SIGNAL_SUS_WARN
Definition espi.h:238
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_0
Definition espi.h:263
@ ESPI_VWIRE_SIGNAL_SLP_A
Definition espi.h:236
@ ESPI_VWIRE_SIGNAL_PME
Definition espi.h:244
@ ESPI_VWIRE_SIGNAL_ERR_FATAL
Definition espi.h:249
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_1
Definition espi.h:264
@ ESPI_VWIRE_SIGNAL_SUS_PWRDN_ACK
Definition espi.h:237
@ ESPI_VWIRE_SIGNAL_SLP_S3
Definition espi.h:227
@ ESPI_VWIRE_SIGNAL_HOST_C10
Definition espi.h:241
@ ESPI_VWIRE_SIGNAL_SLP_LAN
Definition espi.h:240
@ ESPI_VWIRE_SIGNAL_SUS_ACK
Definition espi.h:258
@ ESPI_VWIRE_SIGNAL_SLP_S5
Definition espi.h:229
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_3
Definition espi.h:266
@ ESPI_VWIRE_SIGNAL_NMIOUT
Definition espi.h:233
@ ESPI_VWIRE_SIGNAL_COUNT
Definition espi.h:277
@ ESPI_VWIRE_SIGNAL_TARGET_BOOT_DONE
Definition espi.h:250
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_4
Definition espi.h:267
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_7
Definition espi.h:270
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_6
Definition espi.h:269
@ ESPI_VWIRE_SIGNAL_TARGET_GPIO_5
Definition espi.h:268
@ ESPI_VWIRE_SIGNAL_HOST_RST_WARN
Definition espi.h:235
@ ESPI_VWIRE_SIGNAL_SCI
Definition espi.h:256
@ ESPI_PC_EVT_BUS_MASTER_ENABLE
Definition espi.h:154
@ ESPI_PC_EVT_BUS_CHANNEL_READY
Definition espi.h:153
@ EACPI_READ_STS
Definition espi.h:308
@ EACPI_WRITE_STS
Definition espi.h:309
@ EACPI_IBF_HAS_CHAR
Definition espi.h:304
@ EACPI_OBF_HAS_CHAR
Definition espi.h:303
@ E8042_CLEAR_FLAG
Definition espi.h:301
@ E8042_PAUSE_IRQ
Definition espi.h:296
@ EACPI_WRITE_CHAR
Definition espi.h:306
@ E8042_SET_FLAG
Definition espi.h:300
@ E8042_READ_KB_STS
Definition espi.h:299
@ E8042_WRITE_KB_CHAR
Definition espi.h:292
@ E8042_WRITE_MB_CHAR
Definition espi.h:293
@ E8042_IBF_HAS_CHAR
Definition espi.h:290
@ E8042_OBF_HAS_CHAR
Definition espi.h:289
@ E8042_RESUME_IRQ
Definition espi.h:295
@ E8042_CLEAR_OBF
Definition espi.h:297
@ ESPI_CHANNEL_OOB
Definition espi.h:105
@ ESPI_CHANNEL_PERIPHERAL
Definition espi.h:103
@ ESPI_CHANNEL_FLASH
Definition espi.h:106
@ ESPI_CHANNEL_VWIRE
Definition espi.h:104
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:361
enum espi_io_mode io_caps
Supported I/O mode.
Definition espi.h:363
enum espi_channel channel_caps
Supported channels.
Definition espi.h:365
uint8_t max_freq
Maximum supported frequency in MHz.
Definition espi.h:367
eSPI event
Definition espi.h:349
uint32_t evt_data
Data associated to the event.
Definition espi.h:355
enum espi_bus_event evt_type
Event type.
Definition espi.h:351
uint32_t evt_details
Additional details for bus event type.
Definition espi.h:353
Bit field definition of evt_data in struct espi_event for ACPI.
Definition espi.h:340
uint32_t data
Definition espi.h:342
uint32_t type
Definition espi.h:341
uint32_t reserved
Definition espi.h:343
Bit field definition of evt_data in struct espi_event for KBC.
Definition espi.h:330
uint32_t reserved
Definition espi.h:334
uint32_t evt
Definition espi.h:333
uint32_t data
Definition espi.h:332
uint32_t type
Definition espi.h:331
eSPI flash transactions packet format
Definition espi.h:398
uint8_t * buf
Definition espi.h:399
uint32_t flash_addr
Definition espi.h:400
uint16_t len
Definition espi.h:401
eSPI out-of-band transaction packet format
Definition espi.h:390
uint8_t * buf
Definition espi.h:391
uint16_t len
Definition espi.h:392
eSPI peripheral request packet format
Definition espi.h:373
uint8_t tag
Definition espi.h:375
uint32_t address
Definition espi.h:377
uint8_t * data
Definition espi.h:378
enum espi_cycle_type cycle_type
Definition espi.h:374
uint16_t len
Definition espi.h:376