All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paulo Zanoni <przanoni@gmail.com>
To: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: Re: [PATCH] drm/i915: Added debugfs support for PSR Status
Date: Fri, 28 Jun 2013 17:14:54 -0300	[thread overview]
Message-ID: <CA+gsUGTfVOAFBC3gZH9Nyu=Lm2jRf=uPw3jEHG+HvnZJd5WDtg@mail.gmail.com> (raw)
In-Reply-To: <CA+gsUGSa0Zj4BmM29iZvgrccfYNNgcZo2eDX4ELk9-z86=r2eg@mail.gmail.com>

2013/6/28 Paulo Zanoni <przanoni@gmail.com>:
> 2013/6/28 Rodrigo Vivi <rodrigo.vivi@gmail.com>:
>> Adding support for PSR Status, PSR entry counter and performance counters.
>> Heavily based on initial work from Shobhit.
>>
>> v2: Fix PSR Status Link bits by Paulo Zanoni.
>> v3: Prefer seq_puts to seq_printf by Paulo Zanoni.
>>
>> CC: Paulo Zanoni <paulo.r.zanoni@intel.com>
>> Credits-by: Shobhit Kumar <shobhit.kumar@intel.com>
>> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
>> ---
>>  drivers/gpu/drm/i915/i915_debugfs.c | 90 +++++++++++++++++++++++++++++++++++++
>>  drivers/gpu/drm/i915/i915_reg.h     | 24 ++++++++++
>>  2 files changed, 114 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
>> index a188624..67c777f 100644
>> --- a/drivers/gpu/drm/i915/i915_debugfs.c
>> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
>> @@ -1877,6 +1877,95 @@ static int i915_dpio_info(struct seq_file *m, void *data)
>>         return 0;
>>  }
>>
>> +static int i915_edp_psr_status(struct seq_file *m, void *data)
>> +{
>> +       struct drm_info_node *node = m->private;
>> +       struct drm_device *dev = node->minor->dev;
>> +       struct drm_i915_private *dev_priv = dev->dev_private;
>> +       u32 psrctl, psrstat, psrperf;
>> +
>> +       psrctl = I915_READ(EDP_PSR_CTL);
>> +       seq_printf(m, "PSR Enabled: %s\n",
>> +                  yesno(psrctl & EDP_PSR_ENABLE));
>> +
>> +       psrstat = I915_READ(EDP_PSR_STATUS_CTL);
>> +
>> +       seq_puts(m, "PSR Current State: ");
>> +       switch (psrstat & EDP_PSR_STATUS_STATE_MASK) {
>> +       case EDP_PSR_STATUS_STATE_IDLE:
>> +               seq_puts(m, "Reset state\n");
>> +               break;
>> +       case EDP_PSR_STATUS_STATE_SRDONACK:
>> +               seq_puts(m, "Wait for TG/Stream to send on frame of data after SRD conditions are met\n");
>> +               break;
>> +       case EDP_PSR_STATUS_STATE_SRDENT:
>> +               seq_puts(m, "SRD entry\n");
>> +               break;
>> +       case EDP_PSR_STATUS_STATE_BUFOFF:
>> +               seq_puts(m, "Wait for buffer turn off\n");
>> +               break;
>> +       case EDP_PSR_STATUS_STATE_BUFON:
>> +                       seq_puts(m, "Wait for buffer turn on\n");
>
> Wrong indentation above.
>
>> +               break;
>> +       case EDP_PSR_STATUS_STATE_AUXACK:
>> +                       seq_puts(m, "Wait for AUX to acknowledge on SRD exit\n");
>
> Wrong indentation above.
>
>> +               break;
>> +       case EDP_PSR_STATUS_STATE_SRDOFFACK:
>> +                       seq_puts(m, "Wait for TG/Stream to acknowledge the SRD VDM exit\n");
>
> Wrong indentation above.
>
> Everything else looks correct. With that fixed:
> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>

Actually no. With this patch, we'll read non-existing registers on
platforms that don't support PSR. We need an early return for that
case.

>
>> +               break;
>> +       default:
>> +               seq_puts(m, "Unknown\n");
>> +               break;
>> +       }
>> +
>> +       seq_puts(m, "Link Status: ");
>> +       switch (psrstat & EDP_PSR_STATUS_LINK_MASK) {
>> +       case EDP_PSR_STATUS_LINK_FULL_OFF:
>> +               seq_puts(m, "Link is fully off\n");
>> +               break;
>> +       case EDP_PSR_STATUS_LINK_FULL_ON:
>> +               seq_puts(m, "Link is fully on\n");
>> +               break;
>> +       case EDP_PSR_STATUS_LINK_STANDBY:
>> +               seq_puts(m, "Link is in standby\n");
>> +               break;
>> +       default:
>> +               seq_puts(m, "Unknown\n");
>> +               break;
>> +       }
>> +
>> +       seq_printf(m, "PSR Entry Count: %u\n",
>> +                  psrstat >> EDP_PSR_STATUS_COUNT_SHIFT &
>> +                  EDP_PSR_STATUS_COUNT_MASK);
>> +
>> +       seq_printf(m, "Max Sleep Timer Counter: %u\n",
>> +                  psrstat >> EDP_PSR_STATUS_MAX_SLEEP_TIMER_SHIFT &
>> +                  EDP_PSR_STATUS_MAX_SLEEP_TIMER_MASK);
>> +
>> +       seq_printf(m, "Had AUX error: %s\n",
>> +                  yesno(psrstat & EDP_PSR_STATUS_AUX_ERROR));
>> +
>> +       seq_printf(m, "Sending AUX: %s\n",
>> +                  yesno(psrstat & EDP_PSR_STATUS_AUX_SENDING));
>> +
>> +       seq_printf(m, "Sending Idle: %s\n",
>> +                  yesno(psrstat & EDP_PSR_STATUS_SENDING_IDLE));
>> +
>> +       seq_printf(m, "Sending TP2 TP3: %s\n",
>> +                  yesno(psrstat & EDP_PSR_STATUS_SENDING_TP2_TP3));
>> +
>> +       seq_printf(m, "Sending TP1: %s\n",
>> +                  yesno(psrstat & EDP_PSR_STATUS_SENDING_TP1));
>> +
>> +       seq_printf(m, "Idle Count: %u\n",
>> +                  psrstat & EDP_PSR_STATUS_IDLE_MASK);
>> +
>> +       psrperf = (I915_READ(EDP_PSR_PERF_CNT)) & EDP_PSR_PERF_CNT_MASK;
>> +       seq_printf(m, "Performance Counter: %u\n", psrperf);
>> +
>> +       return 0;
>> +}
>> +
>>  static int
>>  i915_wedged_get(void *data, u64 *val)
>>  {
>> @@ -2306,6 +2395,7 @@ static struct drm_info_list i915_debugfs_list[] = {
>>         {"i915_swizzle_info", i915_swizzle_info, 0},
>>         {"i915_ppgtt_info", i915_ppgtt_info, 0},
>>         {"i915_dpio", i915_dpio_info, 0},
>> +       {"i915_edp_psr_status", i915_edp_psr_status, 0},
>>  };
>>  #define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
>> index caf57d8..833cc97 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -1812,6 +1812,30 @@
>>
>>  #define EDP_PSR_STATUS_CTL                     0x64840
>>  #define   EDP_PSR_STATUS_STATE_MASK            (7<<29)
>> +#define   EDP_PSR_STATUS_STATE_IDLE            (0<<29)
>> +#define   EDP_PSR_STATUS_STATE_SRDONACK                (1<<29)
>> +#define   EDP_PSR_STATUS_STATE_SRDENT          (2<<29)
>> +#define   EDP_PSR_STATUS_STATE_BUFOFF          (3<<29)
>> +#define   EDP_PSR_STATUS_STATE_BUFON           (4<<29)
>> +#define   EDP_PSR_STATUS_STATE_AUXACK          (5<<29)
>> +#define   EDP_PSR_STATUS_STATE_SRDOFFACK       (6<<29)
>> +#define   EDP_PSR_STATUS_LINK_MASK             (3<<26)
>> +#define   EDP_PSR_STATUS_LINK_FULL_OFF         (0<<26)
>> +#define   EDP_PSR_STATUS_LINK_FULL_ON          (1<<26)
>> +#define   EDP_PSR_STATUS_LINK_STANDBY          (2<<26)
>> +#define   EDP_PSR_STATUS_MAX_SLEEP_TIMER_SHIFT 20
>> +#define   EDP_PSR_STATUS_MAX_SLEEP_TIMER_MASK  0x1f
>> +#define   EDP_PSR_STATUS_COUNT_SHIFT           16
>> +#define   EDP_PSR_STATUS_COUNT_MASK            0xf
>> +#define   EDP_PSR_STATUS_AUX_ERROR             (1<<15)
>> +#define   EDP_PSR_STATUS_AUX_SENDING           (1<<12)
>> +#define   EDP_PSR_STATUS_SENDING_IDLE          (1<<9)
>> +#define   EDP_PSR_STATUS_SENDING_TP2_TP3       (1<<8)
>> +#define   EDP_PSR_STATUS_SENDING_TP1           (1<<4)
>> +#define   EDP_PSR_STATUS_IDLE_MASK             0xf
>> +
>> +#define EDP_PSR_PERF_CNT               0x64844
>> +#define   EDP_PSR_PERF_CNT_MASK                0xffffff
>>
>>  #define EDP_PSR_DEBUG_CTL              0x64860
>>  #define   EDP_PSR_DEBUG_MASK_LPSP      (1<<27)
>> --
>> 1.8.1.4
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>
>
> --
> Paulo Zanoni



-- 
Paulo Zanoni

  reply	other threads:[~2013-06-28 20:14 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-26 21:55 [PATCH 01/11] drm: Added SDP and VSC structures for handling PSR for eDP Rodrigo Vivi
2013-06-26 21:55 ` [PATCH 02/11] drm/i915: Read the EDP DPCD and PSR Capability Rodrigo Vivi
2013-06-28 16:57   ` [PATCH] " Rodrigo Vivi
2013-06-26 21:55 ` [PATCH 03/11] drm/i915: split aux_clock_divider logic in a separated function for reuse Rodrigo Vivi
2013-06-26 21:55 ` [PATCH 04/11] drm/i915: Enable/Disable PSR Rodrigo Vivi
2013-06-28 17:16   ` [PATCH] " Rodrigo Vivi
2013-06-28 19:31     ` Paulo Zanoni
2013-07-01 20:40       ` Rodrigo Vivi
2013-07-05 21:58         ` Paulo Zanoni
2013-07-05 22:14           ` Daniel Vetter
2013-07-08 22:09           ` Rodrigo Vivi
2013-07-02  0:29       ` Rodrigo Vivi
2013-07-05 22:20         ` Paulo Zanoni
2013-06-26 21:55 ` [PATCH 05/11] drm/i915: Added debugfs support for PSR Status Rodrigo Vivi
2013-06-28 17:29   ` [PATCH] " Rodrigo Vivi
2013-06-28 20:08     ` Paulo Zanoni
2013-06-28 20:14       ` Paulo Zanoni [this message]
2013-07-02  0:46         ` Rodrigo Vivi
2013-06-26 21:55 ` [PATCH 06/11] drm/i915: Match all PSR mode entry conditions before enabling it Rodrigo Vivi
2013-06-28 17:36   ` [PATCH] " Rodrigo Vivi
2013-06-28 20:46     ` Paulo Zanoni
2013-07-01 20:47       ` Rodrigo Vivi
2013-07-05 20:32         ` Daniel Vetter
2013-07-08 22:25           ` Rodrigo Vivi
2013-07-11 18:09             ` Rodrigo Vivi
2013-07-02  0:50       ` Rodrigo Vivi
2013-06-26 21:55 ` [PATCH 07/11] drm/i915: add update function to disable/enable-back PSR Rodrigo Vivi
2013-06-28 17:44   ` [PATCH] " Rodrigo Vivi
2013-07-05 22:48     ` Paulo Zanoni
2013-07-08 21:52       ` Rodrigo Vivi
2013-06-26 21:55 ` [PATCH 08/11] drm/intel: add enable_psr module option Rodrigo Vivi
2013-06-28 17:47   ` [PATCH] " Rodrigo Vivi
2013-07-08 12:45     ` Paulo Zanoni
2013-06-26 21:55 ` [PATCH 09/11] drm/i915: Adding global I915_PARAM for PSR ACTIVE Rodrigo Vivi
2013-06-26 22:18   ` Chris Wilson
2013-06-26 23:23     ` [PATCH] drm/i915: Adding global I915_PARAM for PSR ENABLED Rodrigo Vivi
2013-06-27 12:51       ` Rodrigo Vivi
2013-06-26 21:55 ` [PATCH 10/11] drm/i915: Add functions to force psr exit Rodrigo Vivi
2013-06-27 13:03   ` [PATCH] " Rodrigo Vivi
2013-06-28 17:52     ` Rodrigo Vivi
2013-06-28 17:57       ` Chris Wilson
2013-06-28 18:05         ` Rodrigo Vivi
2013-07-08 13:03       ` Paulo Zanoni
2013-07-08 21:48         ` Rodrigo Vivi
2013-06-26 21:55 ` [PATCH 11/11] drm/i915: Hook PSR functionality Rodrigo Vivi
2013-06-28 21:00   ` Paulo Zanoni
2013-07-02  0:52     ` [PATCH] " Rodrigo Vivi
2013-07-08 13:13       ` Paulo Zanoni
2013-07-08 19:46         ` Daniel Vetter
2013-07-08 21:40           ` Rodrigo Vivi

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='CA+gsUGTfVOAFBC3gZH9Nyu=Lm2jRf=uPw3jEHG+HvnZJd5WDtg@mail.gmail.com' \
    --to=przanoni@gmail.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@intel.com \
    --cc=rodrigo.vivi@gmail.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.