• Alan Previn's avatar
    drm/i915/pxp: Add GSC-CS backend to send GSC fw messages · dc9ac125
    Alan Previn authored
    Add GSC engine based method for sending PXP firmware packets
    to the GSC firmware for MTL (and future) products.
    
    Use the newly added helpers to populate the GSC-CS memory
    header and send the message packet to the FW by dispatching
    the GSC_HECI_CMD_PKT instruction on the GSC engine.
    
    We use non-priveleged batches for submission to GSC engine
    which require two buffers for the request:
         - a buffer for the HECI packet that contains PXP FW commands
         - a batch-buffer that contains the engine instruction for
           sending the HECI packet to the GSC firmware.
    
    Thus, add the allocation and freeing of these buffers in gsccs
    init and fini.
    
    The GSC-fw may reply to commands with a SUCCESS but with an
    additional pending-bit set in the reply packet. This bit
    means the GSC-FW is currently busy and the caller needs to
    try again with the gsc_message_handle the fw returned. Thus,
    add a wrapper to continuously retry send_message while
    replaying the gsc_message_handle. Retries need to follow the
    arch-spec count and delay until GSC-FW replies with the real
    SUCCESS or timeout after that spec'd delay.
    
    The GSC-fw requires a non-zero host_session_handle provided
    by the caller to enable gsc_message_handle tracking. Thus,
    allocate the host_session_handle at init and destroy it
    at fini (the latter requiring an FYI to the gsc-firmware).
    Signed-off-by: default avatarAlan Previn <alan.previn.teres.alexis@intel.com>
    Reviewed-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Signed-off-by: default avatarRadhakrishna Sripada <radhakrishna.sripada@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230511231738.1077674-5-alan.previn.teres.alexis@intel.com
    dc9ac125
intel_pxp_gsccs.h 642 Bytes