Zephyr API Documentation  3.0.0
A Scalable Open Source RTOS
3.0.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
espi_emul.h
Go to the documentation of this file.
1/*
2 * Copyright 2020 Google LLC
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DRIVERS_ESPI_SPI_EMUL_H_
8#define ZEPHYR_INCLUDE_DRIVERS_ESPI_SPI_EMUL_H_
9
16#include <zephyr/types.h>
17#include <device.h>
18#include <drivers/emul.h>
19
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31#define EMUL_ESPI_HOST_CHIPSEL 0
32
33struct espi_emul;
34
46typedef int (*emul_espi_api_set_vw)(struct espi_emul *emul,
47 enum espi_vwire_signal vw,
48 uint8_t level);
49
61typedef int (*emul_espi_api_get_vw)(struct espi_emul *emul,
62 enum espi_vwire_signal vw,
63 uint8_t *level);
64
65#ifdef CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION
73typedef uintptr_t (*emul_espi_api_get_acpi_shm)(struct espi_emul *emul);
74#endif
75
87typedef struct espi_emul *(*emul_find_emul)(const struct device *dev,
88 unsigned int chipsel);
89
100typedef int (*emul_trigger_event)(const struct device *dev,
101 struct espi_event *evt);
102
107#ifdef CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION
108 emul_espi_api_get_acpi_shm get_acpi_shm;
109#endif
110};
111
113struct espi_emul {
116 const struct emul *parent;
121};
122
125 /* The struct espi_driver_api has to be first in
126 * struct emul_espi_driver_api to make pointer casting working
127 */
128 struct espi_driver_api espi_api;
129 /* The rest, emulator specific functions */
132};
133
142int espi_emul_register(const struct device *dev, const char *name,
143 struct espi_emul *emul);
144
156int emul_espi_host_send_vw(const struct device *espi_dev,
157 enum espi_vwire_signal vw, uint8_t level);
158
169int emul_espi_host_port80_write(const struct device *espi_dev, uint32_t data);
170
171#ifdef CONFIG_ESPI_PERIPHERAL_ACPI_SHM_REGION
179uintptr_t emul_espi_host_get_acpi_shm(const struct device *espi_dev);
180#endif
181
182
183#ifdef __cplusplus
184}
185#endif
186
191#endif /* ZEPHYR_INCLUDE_DRIVERS_ESPI_SPI_EMUL_H_ */
int espi_emul_register(const struct device *dev, const char *name, struct espi_emul *emul)
int emul_espi_host_port80_write(const struct device *espi_dev, uint32_t data)
int(* emul_espi_api_get_vw)(struct espi_emul *emul, enum espi_vwire_signal vw, uint8_t *level)
Definition: espi_emul.h:61
int(* emul_trigger_event)(const struct device *dev, struct espi_event *evt)
Definition: espi_emul.h:100
int emul_espi_host_send_vw(const struct device *espi_dev, enum espi_vwire_signal vw, uint8_t level)
struct espi_emul *(* emul_find_emul)(const struct device *dev, unsigned int chipsel)
Definition: espi_emul.h:87
int(* emul_espi_api_set_vw)(struct espi_emul *emul, enum espi_vwire_signal vw, uint8_t level)
Definition: espi_emul.h:46
espi_vwire_signal
eSPI system platform signals that can be send or receive through virtual wire channel
Definition: espi.h:184
struct _snode sys_snode_t
Definition: slist.h:33
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
__UINT8_TYPE__ uint8_t
Definition: stdint.h:58
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:75
__UINT16_TYPE__ uint16_t
Definition: stdint.h:59
Runtime device structure (in ROM) per driver instance.
Definition: device.h:450
Definition: espi_emul.h:104
emul_espi_api_set_vw set_vw
Definition: espi_emul.h:105
emul_espi_api_get_vw get_vw
Definition: espi_emul.h:106
Definition: espi_emul.h:124
emul_trigger_event trigger_event
Definition: espi_emul.h:130
struct espi_driver_api espi_api
Definition: espi_emul.h:128
emul_find_emul find_emul
Definition: espi_emul.h:131
Definition: emul.h:52
Definition: espi_emul.h:113
const struct emul_espi_device_api * api
Definition: espi_emul.h:118
uint16_t chipsel
Definition: espi_emul.h:120
sys_snode_t node
Definition: espi_emul.h:114
const struct emul * parent
Definition: espi_emul.h:116
eSPI event
Definition: espi.h:282
static fdata_t data[2]
Definition: test_fifo_contexts.c:15