Enable HDCP for Xe by defining functions which take care of interaction of HDCP as a client with the GSC CS interface. Add intel_hdcp_gsc_message to Makefile and add corresponding changes to xe_hdcp_gsc.c to make it build. --v2 -add kfree at appropriate place [Daniele] -remove useless define [Daniele] -move host session logic to xe_gsc_submit.c [Daniele] -call xe_gsc_check_and_update_pending directly in an if condition [Daniele] -use xe_device instead of drm_i915_private [Daniele] --v3 -use xe prefix for newly exposed function [Daniele] -remove client specific defines from intel_gsc_mtl_header [Daniele] -add missing kfree() [Daniele] -have NULL check for hdcp_message in finish function [Daniele] -dont have too many variable declarations in the same line [Daniele] --v4 -don't point the hdcp_message structure in xe_device to anything until it properly gets initialized [Daniele] --v5 -Squash commits for buildability --v6 -Order includes alphabetically [Lucas] Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com> Signed-off-by: Mika Kahola <mika.kahola@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240306024247.1857881-6-suraj.kandpal@intel.com
32 lines
909 B
C
32 lines
909 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2023 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _XE_GSC_SUBMIT_H_
|
|
#define _XE_GSC_SUBMIT_H_
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct iosys_map;
|
|
struct xe_device;
|
|
struct xe_gsc;
|
|
|
|
u32 xe_gsc_emit_header(struct xe_device *xe, struct iosys_map *map, u32 offset,
|
|
u8 heci_client_id, u64 host_session_id, u32 payload_size);
|
|
void xe_gsc_poison_header(struct xe_device *xe, struct iosys_map *map, u32 offset);
|
|
|
|
bool xe_gsc_check_and_update_pending(struct xe_device *xe,
|
|
struct iosys_map *in, u32 offset_in,
|
|
struct iosys_map *out, u32 offset_out);
|
|
|
|
int xe_gsc_read_out_header(struct xe_device *xe,
|
|
struct iosys_map *map, u32 offset,
|
|
u32 min_payload_size,
|
|
u32 *payload_offset);
|
|
|
|
int xe_gsc_pkt_submit_kernel(struct xe_gsc *gsc, u64 addr_in, u32 size_in,
|
|
u64 addr_out, u32 size_out);
|
|
|
|
u64 xe_gsc_create_host_session_id(void);
|
|
#endif
|