/linux/drivers/gpu/drm/i915/pxp/ |
H A D | intel_pxp_session.c | 18 static bool intel_pxp_session_is_in_play(struct intel_pxp *pxp, u32 id) in intel_pxp_session_is_in_play() argument 20 struct intel_uncore *uncore = pxp->ctrl_gt->uncore; in intel_pxp_session_is_in_play() 26 sip = intel_uncore_read(uncore, KCR_SIP(pxp->kcr_base)); in intel_pxp_session_is_in_play() 31 static int pxp_wait_for_session_state(struct intel_pxp *pxp, u32 id, bool in_play) in pxp_wait_for_session_state() argument 33 struct intel_uncore *uncore = pxp->ctrl_gt->uncore; in pxp_wait_for_session_state() 44 KCR_SIP(pxp->kcr_base), in pxp_wait_for_session_state() 54 static int pxp_create_arb_session(struct intel_pxp *pxp) in pxp_create_arb_session() argument 56 struct intel_gt *gt = pxp->ctrl_gt; in pxp_create_arb_session() 59 pxp->arb_is_valid = false; in pxp_create_arb_session() 61 if (intel_pxp_session_is_in_play(pxp, ARB_SESSION)) { in pxp_create_arb_session() [all …]
|
H A D | intel_pxp_tee.c | 27 is_fw_err_platform_config(struct intel_pxp *pxp, u32 type) in is_fw_err_platform_config() argument 33 pxp->platform_cfg_is_bad = true; in is_fw_err_platform_config() 58 static int intel_pxp_tee_io_message(struct intel_pxp *pxp, in intel_pxp_tee_io_message() argument 63 struct drm_i915_private *i915 = pxp->ctrl_gt->i915; in intel_pxp_tee_io_message() 64 struct i915_pxp_component *pxp_component = pxp->pxp_component; in intel_pxp_tee_io_message() 67 mutex_lock(&pxp->tee_mutex); in intel_pxp_tee_io_message() 81 drm_err(&i915->drm, "Failed to send PXP TEE message\n"); in intel_pxp_tee_io_message() 88 drm_err(&i915->drm, "Failed to receive PXP TEE message\n"); in intel_pxp_tee_io_message() 94 "Failed to receive PXP TEE message due to unexpected output size\n"); in intel_pxp_tee_io_message() 104 mutex_unlock(&pxp->tee_mutex); in intel_pxp_tee_io_message() [all …]
|
H A D | intel_pxp_pm.c | 14 void intel_pxp_suspend_prepare(struct intel_pxp *pxp) in intel_pxp_suspend_prepare() argument 16 if (!intel_pxp_is_enabled(pxp)) in intel_pxp_suspend_prepare() 19 intel_pxp_end(pxp); in intel_pxp_suspend_prepare() 21 intel_pxp_invalidate(pxp); in intel_pxp_suspend_prepare() 24 void intel_pxp_suspend(struct intel_pxp *pxp) in intel_pxp_suspend() argument 28 if (!intel_pxp_is_enabled(pxp)) in intel_pxp_suspend() 31 with_intel_runtime_pm(&pxp->ctrl_gt->i915->runtime_pm, wakeref) { in intel_pxp_suspend() 32 intel_pxp_fini_hw(pxp); in intel_pxp_suspend() 33 pxp->hw_state_invalidated = false; in intel_pxp_suspend() 37 static void _pxp_resume(struct intel_pxp *pxp, bool take_wakeref) in _pxp_resume() argument [all …]
|
H A D | intel_pxp_gsccs.c | 21 is_fw_err_platform_config(struct intel_pxp *pxp, u32 type) in is_fw_err_platform_config() argument 27 pxp->platform_cfg_is_bad = true; in is_fw_err_platform_config() 53 gsccs_send_message(struct intel_pxp *pxp, in gsccs_send_message() argument 59 struct intel_gt *gt = pxp->ctrl_gt; in gsccs_send_message() 61 struct gsccs_session_resources *exec_res = &pxp->gsccs_res; in gsccs_send_message() 81 mutex_lock(&pxp->tee_mutex); in gsccs_send_message() 117 drm_err(&i915->drm, "failed to send gsc PXP msg (%d)\n", ret); in gsccs_send_message() 123 drm_err(&i915->drm, "gsc PXP reply with invalid validity marker\n"); in gsccs_send_message() 128 drm_dbg(&i915->drm, "gsc PXP reply status has error = 0x%08x\n", in gsccs_send_message() 134 drm_dbg(&i915->drm, "gsc PXP reply is busy\n"); in gsccs_send_message() [all …]
|
H A D | intel_pxp_irq.c | 21 * intel_pxp_irq_handler - Handles PXP interrupts. 22 * @pxp: pointer to pxp struct 25 void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir) in intel_pxp_irq_handler() argument 29 if (GEM_WARN_ON(!intel_pxp_is_enabled(pxp))) in intel_pxp_irq_handler() 32 gt = pxp->ctrl_gt; in intel_pxp_irq_handler() 41 /* immediately mark PXP as inactive on termination */ in intel_pxp_irq_handler() 42 intel_pxp_mark_termination_in_progress(pxp); in intel_pxp_irq_handler() 43 pxp->session_events |= PXP_TERMINATION_REQUEST | PXP_INVAL_REQUIRED | in intel_pxp_irq_handler() 48 pxp->session_events |= PXP_TERMINATION_COMPLETE | PXP_EVENT_TYPE_IRQ; in intel_pxp_irq_handler() 50 if (pxp->session_events) in intel_pxp_irq_handler() [all …]
|
H A D | intel_pxp_debugfs.c | 23 struct intel_pxp *pxp = m->private; in pxp_info_show() local 26 if (!intel_pxp_is_enabled(pxp)) { in pxp_info_show() 27 drm_printf(&p, "pxp disabled\n"); in pxp_info_show() 31 drm_printf(&p, "active: %s\n", str_yes_no(intel_pxp_is_active(pxp))); in pxp_info_show() 32 drm_printf(&p, "instance counter: %u\n", pxp->key_instance); in pxp_info_show() 47 struct intel_pxp *pxp = data; in pxp_terminate_set() local 48 struct intel_gt *gt = pxp->ctrl_gt; in pxp_terminate_set() 51 if (!intel_pxp_is_active(pxp)) in pxp_terminate_set() 56 intel_pxp_irq_handler(pxp, GEN12_DISPLAY_PXP_STATE_TERMINATED_INTERRUPT); in pxp_terminate_set() 59 timeout_ms = intel_pxp_get_backend_timeout_ms(pxp); in pxp_terminate_set() [all …]
|
H A D | intel_pxp_pm.h | 12 void intel_pxp_suspend_prepare(struct intel_pxp *pxp); 13 void intel_pxp_suspend(struct intel_pxp *pxp); 14 void intel_pxp_resume_complete(struct intel_pxp *pxp); 15 void intel_pxp_runtime_suspend(struct intel_pxp *pxp); 16 void intel_pxp_runtime_resume(struct intel_pxp *pxp); 18 static inline void intel_pxp_suspend_prepare(struct intel_pxp *pxp) in intel_pxp_suspend_prepare() argument 22 static inline void intel_pxp_suspend(struct intel_pxp *pxp) in intel_pxp_suspend() argument 26 static inline void intel_pxp_resume_complete(struct intel_pxp *pxp) in intel_pxp_resume_complete() argument 30 static inline void intel_pxp_runtime_suspend(struct intel_pxp *pxp) in intel_pxp_runtime_suspend() argument 34 static inline void intel_pxp_runtime_resume(struct intel_pxp *pxp) in intel_pxp_runtime_resume() argument
|
H A D | intel_pxp_cmd_interface_43.h | 12 /* PXP-Cmd-Op definitions */ 17 /* PXP-Packet sizes for MTL's GSCCS-HECI instruction is spec'd at 65K before page alignment*/ 20 /* PXP-Packet size for MTL's NEW_HUC_AUTH instruction */ 23 /* PXP-Input-Packet: HUC Load and Authentication */ 29 /* PXP-Input-Packet: HUC Auth-only */ 36 /* PXP-Output-Packet: HUC Load and Authentication or Auth-only */ 41 /* PXP-Input-Packet: Init PXP session */ 44 /* header.stream_id fields for vesion 4.3 of Init PXP session: */ 55 /* PXP-Input-Packet: Init PXP session */
|
H A D | intel_pxp_gsccs.h | 21 void intel_pxp_gsccs_fini(struct intel_pxp *pxp); 22 int intel_pxp_gsccs_init(struct intel_pxp *pxp); 24 int intel_pxp_gsccs_create_session(struct intel_pxp *pxp, int arb_session_id); 25 void intel_pxp_gsccs_end_arb_fw_session(struct intel_pxp *pxp, u32 arb_session_id); 28 static inline void intel_pxp_gsccs_fini(struct intel_pxp *pxp) in intel_pxp_gsccs_fini() argument 32 static inline int intel_pxp_gsccs_init(struct intel_pxp *pxp) in intel_pxp_gsccs_init() argument 39 bool intel_pxp_gsccs_is_ready_for_sessions(struct intel_pxp *pxp);
|
H A D | intel_pxp_irq.h | 23 void intel_pxp_irq_enable(struct intel_pxp *pxp); 24 void intel_pxp_irq_disable(struct intel_pxp *pxp); 25 void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir); 27 static inline void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir) in intel_pxp_irq_handler() argument 31 static inline void intel_pxp_irq_enable(struct intel_pxp *pxp) in intel_pxp_irq_enable() argument 35 static inline void intel_pxp_irq_disable(struct intel_pxp *pxp) in intel_pxp_irq_disable() argument
|
H A D | intel_pxp_cmd_interface_42.h | 12 /* PXP-Opcode for Init Session */ 15 /* PXP-Opcode for Invalidate Stream Key */ 18 /* PXP-Input-Packet: Init Session (Arb-Session) */ 26 /* PXP-Output-Packet: Init Session */ 31 /* PXP-Input-Packet: Invalidate Stream Key */ 37 /* PXP-Output-Packet: Invalidate Stream Key */
|
H A D | intel_pxp_huc.c | 17 int intel_pxp_huc_load_and_auth(struct intel_pxp *pxp) in intel_pxp_huc_load_and_auth() argument 28 if (!pxp || !pxp->pxp_component) in intel_pxp_huc_load_and_auth() 31 gt = pxp->ctrl_gt; in intel_pxp_huc_load_and_auth() 36 /* write the PXP message into the lmem (the sg list) */ in intel_pxp_huc_load_and_auth() 43 err = intel_pxp_tee_stream_message(pxp, client_id, fence_id, in intel_pxp_huc_load_and_auth()
|
H A D | intel_pxp_types.h | 20 * struct intel_pxp - pxp state 24 * @ctrl_gt: poiner to the tile that owns the controls for PXP subsystem assets that 70 * @pxp_component_added: track if the pxp component has been added. 75 /** @ce: kernel-owned context used for PXP operations */ 98 /** @stream_cmd: LMEM obj used to send stream PXP commands to the GSC */ 100 struct drm_i915_gem_object *obj; /* contains PXP command memory */ 101 void *vaddr; /* virtual memory for PXP command */
|
H A D | intel_pxp_cmd.c | 18 /* stall until prior PXP and MFX/HCP/HUC objects are cmopleted */ 27 /* pxp off */ in pxp_emit_session_selection() 37 /* pxp on */ in pxp_emit_session_selection() 97 int intel_pxp_terminate_session(struct intel_pxp *pxp, u32 id) in intel_pxp_terminate_session() argument 100 struct intel_context *ce = pxp->ce; in intel_pxp_terminate_session() 104 if (!intel_pxp_is_enabled(pxp)) in intel_pxp_terminate_session()
|
H A D | intel_pxp_session.h | 14 void intel_pxp_session_management_init(struct intel_pxp *pxp); 15 void intel_pxp_terminate(struct intel_pxp *pxp, bool post_invalidation_needs_restart); 17 static inline void intel_pxp_session_management_init(struct intel_pxp *pxp) in intel_pxp_session_management_init() argument 21 static inline void intel_pxp_terminate(struct intel_pxp *pxp, bool post_invalidation_needs_restart) in intel_pxp_terminate() argument
|
H A D | intel_pxp_tee.h | 11 int intel_pxp_tee_component_init(struct intel_pxp *pxp); 12 void intel_pxp_tee_component_fini(struct intel_pxp *pxp); 14 int intel_pxp_tee_cmd_create_arb_session(struct intel_pxp *pxp, 17 int intel_pxp_tee_stream_message(struct intel_pxp *pxp,
|
H A D | intel_pxp_debugfs.h | 13 void intel_pxp_debugfs_register(struct intel_pxp *pxp); 16 intel_pxp_debugfs_register(struct intel_pxp *pxp) in intel_pxp_debugfs_register() argument
|
H A D | intel_pxp_cmd_interface_cmn.h | 14 * there are a lot of status codes for PXP, but we only define the cross-API 27 /* Common PXP FW message header */
|
/linux/Documentation/devicetree/bindings/media/ |
H A D | fsl,imx6ull-pxp.yaml | 5 $id: http://devicetree.org/schemas/media/fsl,imx6ull-pxp.yaml# 15 The Pixel Pipeline (PXP) is a memory-to-memory graphics processing engine 24 - fsl,imx6ul-pxp 25 - fsl,imx6ull-pxp 26 - fsl,imx7d-pxp 29 - fsl,imx6sll-pxp 30 - fsl,imx6sx-pxp 31 - const: fsl,imx6ull-pxp 62 - fsl,imx6sx-pxp 63 - fsl,imx6ul-pxp [all …]
|
/linux/include/drm/intel/ |
H A D | i915_pxp_tee_interface.h | 14 * struct i915_pxp_component_ops - ops for PXP services. 23 * @send: Send a PXP message. 28 * @recv: Receive a PXP message. 43 * drivers for the PXP services 47 * @tee_dev: device that provide the PXP service from TEE Bus.
|
/linux/drivers/gpu/drm/xe/abi/ |
H A D | gsc_pxp_commands_abi.h | 11 /* Heci client ID for PXP commands */ 17 * there are a lot of status codes for PXP, but we only define the cross-API 30 /* Common PXP FW message header */ 47 /* PXP-Input-Packet: HUC Auth-only */ 54 /* PXP-Output-Packet: HUC Load and Authentication or Auth-only */
|
/linux/drivers/misc/mei/pxp/ |
H A D | mei_pxp.c | 9 * The mei_pxp driver acts as a translation layer between PXP 10 * protocol implementer (I915) and ME FW by translating PXP 46 * mei_pxp_send_message() - Sends a PXP message to ME FW. 95 * mei_pxp_receive_message() - Receives a PXP message from ME FW. 211 * mei_pxp_component_match - compare function for matching mei pxp. 213 * The function checks if the driver is i915, the subcomponent is PXP 214 * and the grand parent of pxp and the parent of i915 are the same 219 * @data: compare data (mei pxp device) 344 MODULE_DESCRIPTION("MEI PXP");
|
H A D | Kconfig | 5 tristate "Intel PXP services of ME Interface" 9 MEI Support for PXP Services on Intel platforms. 11 Enables the ME FW services required for PXP support through
|
/linux/drivers/gpu/drm/i915/gem/ |
H A D | i915_gem_context_types.h | 351 * @uses_protected_content: context uses PXP-encrypted objects. 361 * @pxp_wakeref: wakeref to keep the device awake when PXP is in use 363 * PXP sessions are invalidated when the device is suspended, which in 365 * flow simple, we keep the device awake when contexts using PXP objects 367 * PXP when the display is on, so taking a wakeref here shouldn't worsen
|
/linux/Documentation/devicetree/bindings/soc/imx/ |
H A D | fsl,imx93-media-blk-ctrl.yaml | 43 - const: pxp 78 "pxp", "lcdif", "isi", "csi", "dsi";
|