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 11struct device; 12struct 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 */ 20struct 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 */ 48struct 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