[Intel-gfx] [PATCH v3 07/11] drm/i915/dsb: functions to enable/disable DSB engine.
Animesh Manna
animesh.manna at intel.com
Thu Aug 29 13:45:43 UTC 2019
Hi,
On 8/28/2019 10:37 PM, Sharma, Shashank wrote:
>
> On 8/28/2019 12:40 AM, Animesh Manna wrote:
>> DSB will be used for performance improvement for some special scenario.
>> DSB engine will be enabled based on need and after completion of its
>> work
>> will be disabled. Api added for enable/disable operation by using
>> DSB_CTRL
>> register.
>>
>> Cc: Michel Thierry <michel.thierry at intel.com>
>> Cc: Jani Nikula <jani.nikula at intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
>> Signed-off-by: Animesh Manna <animesh.manna at intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_dsb.c | 40 ++++++++++++++++++++++++
>> 1 file changed, 40 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c
>> b/drivers/gpu/drm/i915/display/intel_dsb.c
>> index d36ee8244427..2d6e78868f2d 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
>> @@ -33,6 +33,46 @@ static inline bool is_dsb_busy(struct intel_dsb *dsb)
>> return DSB_STATUS & I915_READ(DSB_CTRL(pipe, dsb->id));
>> }
>> +static bool intel_dsb_enable_engine(struct intel_dsb *dsb)
>> +{
>> + struct intel_crtc *crtc = dsb->crtc;
>> + struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
>> + enum pipe pipe = crtc->pipe;
>> + u32 dsb_ctrl;
>> +
>> + dsb_ctrl = I915_READ(DSB_CTRL(pipe, dsb->id));
>> +
>> + if (DSB_STATUS & dsb_ctrl) {
>> + DRM_DEBUG_KMS("DSB engine is busy.\n");
>> + return false;
>> + }
>> +
>> + dsb_ctrl |= DSB_ENABLE;
>> + I915_WRITE(DSB_CTRL(pipe, dsb->id), dsb_ctrl);
> readback DSB status and confirm if that's really enabled ?
Ok.
>> +
>> + return true;
>> +}
>> +
>> +static bool intel_dsb_disable_engine(struct intel_dsb *dsb)
>> +{
>> + struct intel_crtc *crtc = dsb->crtc;
>> + struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
>> + enum pipe pipe = crtc->pipe;
>> + u32 dsb_ctrl;
>> +
>> + dsb_ctrl = I915_READ(DSB_CTRL(pipe, dsb->id));
>> +
>> + if (DSB_STATUS & dsb_ctrl) {
>> + DRM_DEBUG_KMS("DSB engine is busy.\n");
>> + return false;
>> + }
>> +
>> + dsb_ctrl &= ~DSB_ENABLE;
>> + I915_WRITE(DSB_CTRL(pipe, dsb->id), dsb_ctrl);
>> +
>
> Same as above.
Ok.
Regards,
Animesh
>
> - Shashank
>
>> + return true;
>> +}
>> +
>> struct intel_dsb *
>> intel_dsb_get(struct intel_crtc *crtc)
>> {
More information about the Intel-gfx
mailing list