1 | /* SPDX-License-Identifier: MIT */ |
2 | /* |
3 | * Copyright (c) 2022-2023 Intel Corporation |
4 | */ |
5 | |
6 | #ifndef _I915_GSC_PROXY_MEI_INTERFACE_H_ |
7 | #define _I915_GSC_PROXY_MEI_INTERFACE_H_ |
8 | |
9 | #include <linux/types.h> |
10 | |
11 | struct device; |
12 | struct module; |
13 | |
14 | /** |
15 | * struct i915_gsc_proxy_component_ops - ops for GSC Proxy services. |
16 | * @owner: Module providing the ops |
17 | * @send: sends a proxy message from GSC FW to ME FW |
18 | * @recv: receives a proxy message for GSC FW from ME FW |
19 | */ |
20 | struct i915_gsc_proxy_component_ops { |
21 | struct module *owner; |
22 | |
23 | /** |
24 | * send - Sends a proxy message to ME FW. |
25 | * @dev: device struct corresponding to the mei device |
26 | * @buf: message buffer to send |
27 | * @size: size of the message |
28 | * Return: bytes sent on success, negative errno value on failure |
29 | */ |
30 | int (*send)(struct device *dev, const void *buf, size_t size); |
31 | |
32 | /** |
33 | * recv - Receives a proxy message from ME FW. |
34 | * @dev: device struct corresponding to the mei device |
35 | * @buf: message buffer to contain the received message |
36 | * @size: size of the buffer |
37 | * Return: bytes received on success, negative errno value on failure |
38 | */ |
39 | int (*recv)(struct device *dev, void *buf, size_t size); |
40 | }; |
41 | |
42 | /** |
43 | * struct i915_gsc_proxy_component - Used for communication between i915 and |
44 | * MEI drivers for GSC proxy services |
45 | * @mei_dev: device that provide the GSC proxy service. |
46 | * @ops: Ops implemented by GSC proxy driver, used by i915 driver. |
47 | */ |
48 | struct i915_gsc_proxy_component { |
49 | struct device *mei_dev; |
50 | const struct i915_gsc_proxy_component_ops *ops; |
51 | }; |
52 | |
53 | #endif /* _I915_GSC_PROXY_MEI_INTERFACE_H_ */ |
54 | |