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