From: Daniel Vetter <daniel@ffwll.ch>
To: Ramalingam C <ramalingam.c@intel.com>
Cc: intel-gfx@lists.freedesktop.org, paulo.r.zanoni@intel.com,
rodrigo.vivi@intel.com
Subject: Re: [PATCH] drm/i915: Add debugfs entry for DRRS
Date: Fri, 23 Jan 2015 17:03:30 +0100 [thread overview]
Message-ID: <20150123160330.GD10113@phenom.ffwll.local> (raw)
In-Reply-To: <1421945121-11050-1-git-send-email-ramalingam.c@intel.com>
On Thu, Jan 22, 2015 at 10:15:21PM +0530, Ramalingam C wrote:
> From: Vandana Kannan <vandana.kannan@intel.com>
>
> Adding a debugfs entry to determine if DRRS is supported or not
>
> V2: [By Ram]: Following details about the active crtc will be filled
> in seq-file of the debugfs
> 1. Encoder output type
> 2. DRRS Support on this CRTC
> 3. DRRS current state
> 4. Current Vrefresh
> Format is as follows:
>
> CRTC 1: Output: eDP, DRRS Supported: Yes (Seamless), DRRS_State: DRRS_HIGH_RR, Vrefresh: 60
> CRTC 2: Output: HDMI, DRRS Supported : No, VBT DRRS_type: Seamless
> CRTC 1: Output: eDP, DRRS Supported: Yes (Seamless), DRRS_State: DRRS_LOW_RR, Vrefresh: 40
> CRTC 2: Output: HDMI, DRRS Supported : No, VBT DRRS_type: Seamless
>
> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> ---
> drivers/gpu/drm/i915/i915_debugfs.c | 93 +++++++++++++++++++++++++++++++++++
> 1 file changed, 93 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 2ad4c48..47f1f65 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -2819,6 +2819,98 @@ static int i915_ddb_info(struct seq_file *m, void *unused)
> return 0;
> }
>
> +static int i915_drrs_status(struct seq_file *m, void *unused)
> +{
> + struct drm_info_node *node = m->private;
> + struct drm_device *dev = node->minor->dev;
> + struct drm_i915_private *dev_priv = dev->dev_private;
> + struct i915_drrs *drrs = &dev_priv->drrs;
> + struct intel_crtc *intel_crtc;
> + struct intel_encoder *intel_encoder;
> + int active_crtc_cnt = 0, vrefresh = 0;
> +
> + for_each_intel_crtc(dev, intel_crtc) {
> + if (intel_crtc->active) {
> + active_crtc_cnt++;
> + seq_puts(m, "CRTC");
> + seq_put_decimal_ull(m, ' ', active_crtc_cnt);
> + seq_puts(m, ": ");
> + for_each_encoder_on_crtc(dev, &intel_crtc->base,
> + intel_encoder) {
> + /* Encoder connected on this CRTC */
> + switch (intel_encoder->type) {
> + case INTEL_OUTPUT_EDP:
> + seq_puts(m, "Output: eDP, ");
> + break;
> + case INTEL_OUTPUT_DSI:
> + seq_puts(m, "Output: DSI, ");
> + break;
> + case INTEL_OUTPUT_HDMI:
> + seq_puts(m, "Output: HDMI, ");
> + break;
> + case INTEL_OUTPUT_DISPLAYPORT:
> + seq_puts(m, "Output: DP, ");
> + break;
> + default:
> + seq_puts(m, "Output: Others (id");
> + seq_put_decimal_ull(m, '=',
> + intel_encoder->type);
> + seq_puts(m, "), ");
> + }
> + }
> +
> + if (intel_crtc->config->has_drrs) {
> + struct intel_panel *panel;
> +
> + panel = &drrs->dp->attached_connector->panel;
> + /* DRRS Supported */
> + seq_puts(m,
> + "DRRS Supported: Yes (Seamless), ");
> + if (drrs->refresh_rate_type == DRRS_HIGH_RR) {
> + seq_puts(m,
> + "DRRS_State: DRRS_HIGH_RR, ");
> + vrefresh = panel->fixed_mode->vrefresh;
> + } else if (drrs->refresh_rate_type ==
> + DRRS_LOW_RR) {
> + seq_puts(m,
> + "DRRS_State: DRRS_LOW_RR, ");
> + vrefresh =
> + panel->downclock_mode->vrefresh;
> + } else {
> + seq_puts(m, "DRRS_State: Unknown");
> + seq_put_decimal_ull(m, '(',
> + drrs->refresh_rate_type);
> + seq_puts(m, "), ");
> + }
> + seq_puts(m, "Vrefresh:");
> + seq_put_decimal_ull(m, ' ', vrefresh);
> +
> + } else {
> + /* DRRS not supported. Print the VBT parameter*/
> + seq_puts(m, "DRRS Supported : No, ");
> + if (dev_priv->vbt.drrs_type ==
> + STATIC_DRRS_SUPPORT) {
> + seq_puts(m,
> + "VBT DRRS_type: Static");
> + } else if (dev_priv->vbt.drrs_type ==
> + SEAMLESS_DRRS_SUPPORT) {
> + seq_puts(m,
> + "VBT DRRS_type: Seamless");
> + } else if (dev_priv->vbt.drrs_type ==
> + DRRS_NOT_SUPPORTED) {
> + seq_puts(m, "VBT DRRS_type: None");
> + }
> + }
This is an example of were strictly following checkpatch warnings and
pedantically breaking lines results in rather hard to read code:
The function is really long, and has about 6 indent levels. Imo it would
greatly benefit from extracting some helper functions to do the
inner-level printing. There's piles of examples in i915_debugfs where we
loop over a bunch of objects and punt all the real output to a small
helper function.
-Daniel
> + seq_puts(m, "\n");
> + }
> + }
> +
> + if (!active_crtc_cnt)
> + seq_puts(m, "No active crtc found\n");
> +
> + return 0;
> +}
> +
> struct pipe_crc_info {
> const char *name;
> struct drm_device *dev;
> @@ -4433,6 +4525,7 @@ static const struct drm_info_list i915_debugfs_list[] = {
> {"i915_dp_mst_info", i915_dp_mst_info, 0},
> {"i915_wa_registers", i915_wa_registers, 0},
> {"i915_ddb_info", i915_ddb_info, 0},
> + {"i915_drrs_status", i915_drrs_status, 0},
> };
> #define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list)
>
> --
> 1.7.9.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
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-23 16:03 UTC|newest]
Thread overview: 64+ 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
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 [this message]
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
-- strict thread matches above, loose matches on Subject: below --
2015-02-20 14:37 [PATCH 6/6] drm/i915: Add debugfs entry for DRRS Ramalingam C
2015-02-23 12:05 ` [PATCH] " Ramalingam C
2015-02-23 18:19 ` Rodrigo Vivi
2015-03-03 12:20 ` Ramalingam C
2015-02-24 0:39 ` Daniel Vetter
2015-02-27 13:59 ` Ramalingam C
2015-03-03 15:23 ` Ramalingam C
2015-03-04 23:00 ` Rodrigo Vivi
2015-03-05 11:18 ` Daniel Vetter
2015-03-05 11:22 ` Ramalingam C
2015-03-05 13:04 ` Daniel Vetter
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=20150123160330.GD10113@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@intel.com \
--cc=ramalingam.c@intel.com \
--cc=rodrigo.vivi@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.