This series aims to enable pipe writeback functionality on ADLP where it has been tested. The plan is to slowly accomodate all supported hardware after this functionality is tested on them. This series also brings change to drm core but not in a drastic way. We introduce a helper which lets drivers have their own preallocated conenctor keeping the connector in drm_writeback_conenctor blank. This lets driver have more control over their connector but still use the drm core queues for job creation and signalling. Some new helpers have been added to aid drivers so that derivation of drm_connector from drm_writeback_connector and vice versa becomes easy for drivers that will use this helper since it won't be as straight forward as wb_conn->connector anymore. Driver not using these API will not be affected in anyways. This series enables the triggered captured mode where we need to trigger a capture.
Cc: Harry Wetland <harry.wentl...@amd.com> Signed-off-by: Suraj Kandpal <suraj.kand...@intel.com> Suraj Kandpal (28): drm/writeback: Add function that takes preallocated connector drm/writeback: Add a helper function to get writeback connector drm/writeback: Define function to get drm_connector from writeback drm/i915/writeback: Add writeback registers drm/i915/writeback: Add some preliminary writeback definitions drm/i915/writeback: Init writeback connector drm/i915/writeback: Add function for get_writeback_connector drm/i915/writeback: Define the get_connector_from_writeback hook drm/i915/writeback: Add function to get modes drm/i915/writeback: Add hook to check modes drm/i915/writeback: Define encoder->get_hw_state drm/i915/writeback: Fill encoder->get_config drm/i915/writeback: Add private structure for writeback job drm/i915/writeback: Define function for prepare and cleanup hooks drm/i915/writeback: Define compute_config for writeback drm/i915/writeback: Define function for connector function detect drm/i915/writeback: Define function to destroy writeback connector drm/i915/writeback: Add connector atomic check drm/i915/writeback: Add the enable sequence from writeback drm/i915/writeback: Add writeback to xe Makefile drm/i915/writeback: Define writeback frame capture function drm/i915/writeback: Configure WD_STRIDE reg drm/i915/writeback: Configure WD_SURF register drm/i915/writeback: Enable writeback interrupts drm/i915/writeback: Initialize writeback encoder. drm/i915/writeback: Define the disable sequence for writeback drm/i915/writeback: Make exception for writeback connector drm/i915/writeback: Modify state verify function drivers/gpu/drm/drm_writeback.c | 123 +++- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/display/intel_acpi.c | 1 + .../drm/i915/display/intel_crtc_state_dump.c | 2 +- drivers/gpu/drm/i915/display/intel_display.c | 178 +++-- drivers/gpu/drm/i915/display/intel_display.h | 4 + .../drm/i915/display/intel_display_debugfs.c | 3 + .../drm/i915/display/intel_display_device.c | 29 +- .../drm/i915/display/intel_display_device.h | 2 +- .../gpu/drm/i915/display/intel_display_irq.c | 10 + .../drm/i915/display/intel_display_limits.h | 2 + .../drm/i915/display/intel_display_power.c | 4 + .../drm/i915/display/intel_display_power.h | 2 + .../gpu/drm/i915/display/intel_display_regs.h | 1 + .../drm/i915/display/intel_display_types.h | 1 + drivers/gpu/drm/i915/display/intel_dpll_mgr.c | 3 + drivers/gpu/drm/i915/display/intel_opregion.c | 2 +- drivers/gpu/drm/i915/display/intel_pmdemand.c | 3 + drivers/gpu/drm/i915/display/intel_vdsc.c | 4 + .../gpu/drm/i915/display/intel_writeback.c | 686 ++++++++++++++++++ .../gpu/drm/i915/display/intel_writeback.h | 23 + .../drm/i915/display/intel_writeback_reg.h | 142 ++++ drivers/gpu/drm/xe/Makefile | 1 + include/drm/drm_modeset_helper_vtables.h | 59 ++ include/drm/drm_writeback.h | 21 +- 25 files changed, 1238 insertions(+), 69 deletions(-) create mode 100644 drivers/gpu/drm/i915/display/intel_writeback.c create mode 100644 drivers/gpu/drm/i915/display/intel_writeback.h create mode 100644 drivers/gpu/drm/i915/display/intel_writeback_reg.h -- 2.34.1