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