hdcp_smcinvoke.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  4. */
  5. #ifndef __HDCP_SMCINVOKE_H__
  6. #define __HDCP_SMCINVOKE_H__
  7. #include <linux/kernel.h>
  8. #include <linux/slab.h>
  9. #include <linux/types.h>
  10. #include <include/linux/smcinvoke_object.h>
  11. #include "hdcp_main.h"
  12. struct hdcp1_smcinvoke_handle {
  13. struct Object hdcp1_app_obj;
  14. struct Object hdcp1_appcontroller_obj;
  15. struct Object hdcp1ops_app_obj;
  16. struct Object hdcp1ops_appcontroller_obj;
  17. bool feature_supported;
  18. uint32_t device_type;
  19. enum hdcp_state hdcp_state;
  20. };
  21. struct hdcp2_smcinvoke_handle {
  22. struct hdcp2_app_data app_data;
  23. uint32_t tz_ctxhandle;
  24. bool feature_supported;
  25. enum hdcp_state hdcp_state;
  26. struct Object hdcp2_app_obj;
  27. struct Object hdcp2_appcontroller_obj;
  28. struct Object hdcpsrm_app_obj;
  29. struct Object hdcpsrm_appcontroller_obj;
  30. uint32_t session_id;
  31. uint32_t device_type;
  32. };
  33. void *hdcp1_init_smcinvoke(void);
  34. bool hdcp1_feature_supported_smcinvoke(void *data);
  35. int hdcp1_set_enc_smcinvoke(void *data, bool enable);
  36. int hdcp1_ops_notify_smcinvoke(void *data, void *topo, bool is_authenticated);
  37. int hdcp1_start_smcinvoke(void *data, u32 *aksv_msb, u32 *aksv_lsb);
  38. void hdcp1_stop_smcinvoke(void *data);
  39. void *hdcp2_init_smcinvoke(u32 device_type);
  40. void hdcp2_deinit_smcinvoke(void *ctx);
  41. int hdcp2_app_start_smcinvoke(void *ctx, uint32_t req_len);
  42. int hdcp2_app_start_auth_smcinvoke(void *ctx, uint32_t req_len);
  43. int hdcp2_app_process_msg_smcinvoke(void *ctx, uint32_t req_len);
  44. int hdcp2_app_timeout_smcinvoke(void *ctx, uint32_t req_len);
  45. int hdcp2_app_enable_encryption_smcinvoke(void *ctx, uint32_t req_len);
  46. int hdcp2_app_query_stream_smcinvoke(void *ctx, uint32_t req_len);
  47. int hdcp2_app_stop_smcinvoke(void *ctx);
  48. bool hdcp2_feature_supported_smcinvoke(void *ctx);
  49. int hdcp2_force_encryption_smcinvoke(void *ctx, uint32_t enable);
  50. int hdcp2_open_stream_smcinvoke(void *ctx, uint8_t vc_payload_id,
  51. uint8_t stream_number, uint32_t *stream_id);
  52. int hdcp2_close_stream_smcinvoke(void *ctx, uint32_t stream_id);
  53. int hdcp2_update_app_data_smcinvoke(void *ctx, struct hdcp2_app_data *app_data);
  54. #endif /* __HDCP_SMCINVOKE_H__ */