Starting from MTL, the GSC FW is runtime loaded by the driver, instead of being stored in flash memory. Loading the GSC FW is required to allow the media GT to go into its C6 state and for content protection features (PXP, HDCP).
The loading happens via a submission to the GSC engine. All subsequent communication with the FW will also happen via the engine, although no further messages are implemented as part of this series. This series also adds the GSC engine flag to the MTL platform, with the engine being runtime disabled if the FW is not selected, which makes the FW definition (not included in the series) the ultimate enabler for the whole GSC block. Note that just loading the FW is not enough for it to be fully functional. We'll also need to establish and handle a communication channel between GSC and CSME (a.k.a. SW proxy). This will require a new mei component to handle the CSME side of things, so it will be pushed as a separate series. v2: Use wq to load the GSC, address minor review comments. Cc: Alan Previn <alan.previn.teres.ale...@intel.com> Cc: John Harrison <john.c.harri...@intel.com> Cc: Rodrigo Vivi <rodrigo.v...@intel.com> Daniele Ceraolo Spurio (5): drm/i915/uc: Introduce GSC FW drm/i915/gsc: Skip the version check when fetching the GSC FW drm/i915/gsc: GSC firmware loading drm/i915/gsc: Do a driver-FLR on unload if GSC was loaded drm/i915/mtl: MTL has one GSC CS on the media GT Jonathan Cavitt (1): drm/i915/gsc: Disable GSC engine and power well if FW is not selected drivers/gpu/drm/i915/Makefile | 11 +- drivers/gpu/drm/i915/gt/intel_engine.h | 2 + drivers/gpu/drm/i915/gt/intel_engine_cs.c | 18 ++ drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 7 + drivers/gpu/drm/i915/gt/intel_gt.h | 5 + drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c | 210 +++++++++++++++++++ drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.h | 15 ++ drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c | 137 ++++++++++++ drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.h | 47 +++++ drivers/gpu/drm/i915/gt/uc/intel_uc.c | 23 ++ drivers/gpu/drm/i915/gt/uc/intel_uc.h | 3 + drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 78 +++++-- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 8 +- drivers/gpu/drm/i915/i915_params.c | 3 + drivers/gpu/drm/i915/i915_params.h | 1 + drivers/gpu/drm/i915/i915_pci.c | 2 +- drivers/gpu/drm/i915/i915_reg.h | 3 + drivers/gpu/drm/i915/intel_uncore.c | 61 ++++++ drivers/gpu/drm/i915/intel_uncore.h | 13 ++ 19 files changed, 626 insertions(+), 21 deletions(-) create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.h create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.h -- 2.37.3