63 lines · c
1/* SPDX-License-Identifier: MIT */2/*3 * Copyright © 2020 Intel Corporation4 */5 6#ifndef _I915_PXP_TEE_INTERFACE_H_7#define _I915_PXP_TEE_INTERFACE_H_8 9#include <linux/mutex.h>10#include <linux/device.h>11struct scatterlist;12 13/**14 * struct i915_pxp_component_ops - ops for PXP services.15 */16struct i915_pxp_component_ops {17 /**18 * @owner: Module providing the ops.19 */20 struct module *owner;21 22 /**23 * @send: Send a PXP message.24 */25 int (*send)(struct device *dev, const void *message, size_t size,26 unsigned long timeout_ms);27 /**28 * @recv: Receive a PXP message.29 */30 int (*recv)(struct device *dev, void *buffer, size_t size,31 unsigned long timeout_ms);32 /**33 * @gsc_command: Send a GSC command.34 */35 ssize_t (*gsc_command)(struct device *dev, u8 client_id, u32 fence_id,36 struct scatterlist *sg_in, size_t total_in_len,37 struct scatterlist *sg_out);38 39};40 41/**42 * struct i915_pxp_component - Used for communication between i915 and TEE43 * drivers for the PXP services44 */45struct i915_pxp_component {46 /**47 * @tee_dev: device that provide the PXP service from TEE Bus.48 */49 struct device *tee_dev;50 51 /**52 * @ops: Ops implemented by TEE driver, used by i915 driver.53 */54 const struct i915_pxp_component_ops *ops;55 56 /**57 * @mutex: To protect the above members.58 */59 struct mutex mutex;60};61 62#endif /* _I915_TEE_PXP_INTERFACE_H_ */63