From: Ramalingam C <ramalingam.c@intel.com>
To: Rodrigo Vivi <rodrigo.vivi@gmail.com>,
Vandana Kannan <vandana.kannan@intel.com>
Cc: intel-gfx <intel-gfx@lists.freedesktop.org>,
Paulo Zanoni <paulo.r.zanoni@intel.com>,
"Vivi, Rodrigo" <rodrigo.vivi@intel.com>
Subject: Re: [PATCH 3/10] drm/i915: Enable/disable DRRS
Date: Wed, 21 Jan 2015 16:45:11 +0530 [thread overview]
Message-ID: <54BF8A3F.60002@intel.com> (raw)
In-Reply-To: <CABVU7+sEE1ommsRJSDfgPrNM5u_Sg0xjBWnQgSNgfn2xdD0-Pg@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 5661 bytes --]
On Friday 16 January 2015 04:16 AM, Rodrigo Vivi wrote:
> On Fri, Jan 9, 2015 at 12:55 PM, Vandana Kannan
> <vandana.kannan@intel.com> wrote:
>> Calling enable/disable DRRS when enable/disable DDI are called.
>> These functions are responsible for setup of drrs data (in enable) and
>> reset of drrs (in disable).
>> has_drrs is true when downclock_mode is found and SEAMLESS_DRRS is set in
>> the VBT. A check has been added for has_drrs in these functions, to make
>> sure the functions go through only if DRRS will work on the platform with
>> the attached panel.
>>
>> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
>> ---
>> drivers/gpu/drm/i915/intel_ddi.c | 2 ++
>> drivers/gpu/drm/i915/intel_dp.c | 54 ++++++++++++++++++++++++++++++++++++++++
>> drivers/gpu/drm/i915/intel_drv.h | 2 ++
>> 3 files changed, 58 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
>> index 1c92ad4..c704434 100644
>> --- a/drivers/gpu/drm/i915/intel_ddi.c
>> +++ b/drivers/gpu/drm/i915/intel_ddi.c
>> @@ -1605,6 +1605,7 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder)
>>
>> intel_edp_backlight_on(intel_dp);
>> intel_psr_enable(intel_dp);
>> + intel_edp_drrs_enable(intel_dp);
>> }
>>
>> if (intel_crtc->config.has_audio) {
>> @@ -1630,6 +1631,7 @@ static void intel_disable_ddi(struct intel_encoder *intel_encoder)
>> if (type == INTEL_OUTPUT_EDP) {
>> struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
>>
>> + intel_edp_drrs_disable(intel_dp);
>> intel_psr_disable(intel_dp);
>> intel_edp_backlight_off(intel_dp);
>> }
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> index 30b3aa1..5e7dc7b 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -4819,6 +4819,60 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate)
>> DRM_DEBUG_KMS("eDP Refresh Rate set to : %dHz\n", refresh_rate);
>> }
>>
>> +void intel_edp_drrs_enable(struct intel_dp *intel_dp)
>> +{
>> + struct drm_device *dev = intel_dp_to_dev(intel_dp);
>> + struct drm_i915_private *dev_priv = dev->dev_private;
>> + struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
>> + struct drm_crtc *crtc = dig_port->base.base.crtc;
>> + struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
>> +
>> + if (!intel_crtc->config.has_drrs) {
>> + DRM_DEBUG_KMS("Panel doesn't support DRRS\n");
>> + return;
>> + }
>> +
>> + mutex_lock(&dev_priv->drrs.mutex);
>> + if (dev_priv->drrs.dp) {
>> + DRM_DEBUG_KMS("DRRS already enabled\n");
> Although I'm in favor of reducing WARNS I have to ask: should be a warn_on here?
Yes, Thats correct. we should give a warning message for repeated enable
call.
>
>> + mutex_unlock(&dev_priv->drrs.mutex);
> goto unlock?
Could avoid the repeated mutex_unlock. We will go with that.
>> + return;
>> + }
>> +
>> + dev_priv->drrs.busy_frontbuffer_bits = 0;
>> +
>> + dev_priv->drrs.dp = intel_dp;
>> + mutex_unlock(&dev_priv->drrs.mutex);
>> +}
>> +
>> +void intel_edp_drrs_disable(struct intel_dp *intel_dp)
>> +{
>> + struct drm_device *dev = intel_dp_to_dev(intel_dp);
>> + struct drm_i915_private *dev_priv = dev->dev_private;
>> + struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
>> + struct drm_crtc *crtc = dig_port->base.base.crtc;
>> + struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
>> +
>> + if (!intel_crtc->config.has_drrs)
>> + return;
>> +
>> + mutex_lock(&dev_priv->drrs.mutex);
>> + if (!dev_priv->drrs.dp) {
>> + mutex_unlock(&dev_priv->drrs.mutex);
>> + return;
>> + }
>> +
>> + if (dev_priv->drrs.refresh_rate_type == DRRS_LOW_RR)
>> + intel_dp_set_drrs_state(dev_priv->dev,
>> + intel_dp->attached_connector->panel.
>> + fixed_mode->vrefresh);
>> +
>> + dev_priv->drrs.dp = NULL;
>> + mutex_unlock(&dev_priv->drrs.mutex);
>> +
>> + cancel_delayed_work_sync(&dev_priv->drrs.work);
>> +}
>> +
>> static void intel_edp_drrs_work(struct work_struct *work)
>> {
>> struct drm_i915_private *dev_priv =
>> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
>> index 2ba045d..6f3ad3b 100644
>> --- a/drivers/gpu/drm/i915/intel_drv.h
>> +++ b/drivers/gpu/drm/i915/intel_drv.h
>> @@ -1003,6 +1003,8 @@ int intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
>> uint32_t src_x, uint32_t src_y,
>> uint32_t src_w, uint32_t src_h);
>> int intel_disable_plane(struct drm_plane *plane);
>> +void intel_edp_drrs_enable(struct intel_dp *intel_dp);
>> +void intel_edp_drrs_disable(struct intel_dp *intel_dp);
> This causes conflict on nightly. There is a rebased version at:
> http://cgit.freedesktop.org/~vivijim/drm-intel/log/?h=review-drrs
>
>> /* intel_dp_mst.c */
>> int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id);
>> --
>> 2.0.1
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> with or without bikesheds in place feel free to use:
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
[-- Attachment #1.2: Type: text/html, Size: 7083 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-01-21 11:19 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-09 20:55 [PATCH v3 0/10] eDP DRRS based on frontbuffer tracking Vandana Kannan
2015-01-09 20:55 ` [PATCH 1/10] drm/i915: Modifying structures related to DRRS Vandana Kannan
2015-01-14 1:27 ` Rodrigo Vivi
2015-01-22 6:48 ` Daniel Vetter
2015-01-22 11:35 ` Ramalingam C
2015-01-09 20:55 ` [PATCH 2/10] drm/i915: Initialize DRRS delayed work Vandana Kannan
2015-01-11 12:52 ` Chris Wilson
2015-01-21 11:04 ` Ramalingam C
2015-01-22 9:44 ` [PATCH] " Ramalingam C
2015-01-23 23:24 ` Rodrigo Vivi
2015-01-09 20:55 ` [PATCH 3/10] drm/i915: Enable/disable DRRS Vandana Kannan
2015-01-15 22:46 ` Rodrigo Vivi
2015-01-21 11:15 ` Ramalingam C [this message]
2015-01-22 9:47 ` [PATCH] " Ramalingam C
2015-01-23 23:25 ` Rodrigo Vivi
2015-01-26 7:31 ` Daniel Vetter
2015-01-26 19:00 ` Rodrigo Vivi
2015-01-09 20:55 ` [PATCH 4/10] drm/i915: DRRS calls based on frontbuffer Vandana Kannan
2015-01-15 22:49 ` Rodrigo Vivi
2015-01-26 7:44 ` Daniel Vetter
2015-02-11 12:43 ` [PATCH 1/6] drm/i915: Add support for DRRS in intel_dp_set_m_n Ramalingam C
2015-02-11 12:58 ` Ramalingam C
2015-01-09 20:56 ` [PATCH 5/10] drm/i915/bdw: Add support for DRRS to switch RR Vandana Kannan
2015-01-15 23:00 ` Rodrigo Vivi
2015-01-21 11:19 ` Ramalingam C
2015-01-22 9:50 ` [PATCH] " Ramalingam C
2015-01-22 16:40 ` Ramalingam C
2015-01-24 0:00 ` Rodrigo Vivi
2015-02-11 12:48 ` Ramalingam C
2015-01-09 20:56 ` [PATCH 6/10] drm/i915: Support for RR switching on VLV Vandana Kannan
2015-01-15 23:06 ` Rodrigo Vivi
2015-01-09 20:56 ` [PATCH 7/10] drm/i915: Enable eDP DRRS for CHV Vandana Kannan
2015-01-15 23:11 ` Rodrigo Vivi
2015-01-21 12:13 ` Ramalingam C
2015-01-21 15:03 ` Rodrigo Vivi
2015-01-22 10:54 ` Ramalingam C
2015-01-24 0:05 ` Rodrigo Vivi
2015-01-09 20:56 ` [PATCH 8/10] Documentation/drm: DocBook integration for DRRS Vandana Kannan
2015-01-15 23:16 ` Rodrigo Vivi
2015-01-20 9:12 ` Daniel Vetter
2015-01-09 20:56 ` [PATCH 9/10] drm/i915: Add debugfs entry " Vandana Kannan
2015-01-11 12:40 ` Chris Wilson
2015-01-15 23:18 ` Rodrigo Vivi
2015-01-21 12:26 ` Ramalingam C
2015-01-22 16:45 ` [PATCH] " Ramalingam C
2015-01-23 16:03 ` Daniel Vetter
2015-01-23 17:47 ` Ramalingam C
2015-01-23 17:52 ` Ramalingam C
2015-01-24 0:13 ` Rodrigo Vivi
2015-02-11 12:52 ` Ramalingam C
2015-01-09 20:56 ` [PATCH 10/10] kms_drrs: Test DRRS entry and exit Vandana Kannan
2015-01-15 23:24 ` Rodrigo Vivi
2015-01-20 9:11 ` Daniel Vetter
2015-01-21 12:31 ` Ramalingam C
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54BF8A3F.60002@intel.com \
--to=ramalingam.c@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@intel.com \
--cc=rodrigo.vivi@gmail.com \
--cc=rodrigo.vivi@intel.com \
--cc=vandana.kannan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.