From: Jani Nikula <jani.nikula@linux.intel.com>
To: Gaurav K Singh <gaurav.k.singh@intel.com>,
intel-gfx <intel-gfx@lists.freedesktop.org>
Cc: Shobhit Kumar <shobhit.kumar@intel.com>
Subject: Re: [PATCH 09/10] drm/i915: Update the DSI disable path to support dual link panel disabling
Date: Thu, 04 Dec 2014 13:37:33 +0200 [thread overview]
Message-ID: <87oarjlk76.fsf@intel.com> (raw)
In-Reply-To: <1417670936-31032-10-git-send-email-gaurav.k.singh@intel.com>
On Thu, 04 Dec 2014, Gaurav K Singh <gaurav.k.singh@intel.com> wrote:
> We need to program both port registers during dual link disable path.
>
> v2: Address review comments by Jani
> - Used a for loop instead of do-while loop.
>
> v3: Used for_each_dsi_port macro instead of for loop
>
> Signed-off-by: Gaurav K Singh <gaurav.k.singh@intel.com>
> Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
> ---
> drivers/gpu/drm/i915/intel_dsi.c | 67 ++++++++++++++++++++------------------
> 1 file changed, 36 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 22b1570..5ae4015 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -281,9 +281,8 @@ static void intel_dsi_disable(struct intel_encoder *encoder)
> {
> struct drm_device *dev = encoder->base.dev;
> struct drm_i915_private *dev_priv = dev->dev_private;
> - struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
> - enum port port = intel_dsi_pipe_to_port(intel_crtc->pipe);
> + enum port port;
> u32 temp;
>
> DRM_DEBUG_KMS("\n");
> @@ -295,23 +294,24 @@ static void intel_dsi_disable(struct intel_encoder *encoder)
> msleep(2);
> }
>
> - /* Panel commands can be sent when clock is in LP11 */
> - I915_WRITE(MIPI_DEVICE_READY(port), 0x0);
> -
> - temp = I915_READ(MIPI_CTRL(port));
> - temp &= ~ESCAPE_CLOCK_DIVIDER_MASK;
> - I915_WRITE(MIPI_CTRL(port), temp |
> - intel_dsi->escape_clk_div <<
> - ESCAPE_CLOCK_DIVIDER_SHIFT);
> + for_each_dsi_port(port, intel_dsi->ports) {
> + /* Panel commands can be sent when clock is in LP11 */
> + I915_WRITE(MIPI_DEVICE_READY(port), 0x0);
>
> - I915_WRITE(MIPI_EOT_DISABLE(port), CLOCKSTOP);
> + temp = I915_READ(MIPI_CTRL(port));
> + temp &= ~ESCAPE_CLOCK_DIVIDER_MASK;
> + I915_WRITE(MIPI_CTRL(port), temp |
> + intel_dsi->escape_clk_div <<
> + ESCAPE_CLOCK_DIVIDER_SHIFT);
>
> - temp = I915_READ(MIPI_DSI_FUNC_PRG(port));
> - temp &= ~VID_MODE_FORMAT_MASK;
> - I915_WRITE(MIPI_DSI_FUNC_PRG(port), temp);
> + I915_WRITE(MIPI_EOT_DISABLE(port), CLOCKSTOP);
>
> - I915_WRITE(MIPI_DEVICE_READY(port), 0x1);
> + temp = I915_READ(MIPI_DSI_FUNC_PRG(port));
> + temp &= ~VID_MODE_FORMAT_MASK;
> + I915_WRITE(MIPI_DSI_FUNC_PRG(port), temp);
>
> + I915_WRITE(MIPI_DEVICE_READY(port), 0x1);
> + }
> /* if disable packets are sent before sending shutdown packet then in
> * some next enable sequence send turn on packet error is observed */
> if (intel_dsi->dev.dev_ops->disable)
> @@ -323,31 +323,36 @@ static void intel_dsi_disable(struct intel_encoder *encoder)
> static void intel_dsi_clear_device_ready(struct intel_encoder *encoder)
> {
> struct drm_i915_private *dev_priv = encoder->base.dev->dev_private;
> - struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
> - enum port port = intel_dsi_pipe_to_port(intel_crtc->pipe);
> + struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
> + enum port port;
> u32 val;
>
> DRM_DEBUG_KMS("\n");
> + for_each_dsi_port(port, intel_dsi->ports) {
>
> - I915_WRITE(MIPI_DEVICE_READY(port), DEVICE_READY | ULPS_STATE_ENTER);
> - usleep_range(2000, 2500);
> + I915_WRITE(MIPI_DEVICE_READY(port), DEVICE_READY |
> + ULPS_STATE_ENTER);
> + usleep_range(2000, 2500);
>
> - I915_WRITE(MIPI_DEVICE_READY(port), DEVICE_READY | ULPS_STATE_EXIT);
> - usleep_range(2000, 2500);
> + I915_WRITE(MIPI_DEVICE_READY(port), DEVICE_READY |
> + ULPS_STATE_EXIT);
> + usleep_range(2000, 2500);
>
> - I915_WRITE(MIPI_DEVICE_READY(port), DEVICE_READY | ULPS_STATE_ENTER);
> - usleep_range(2000, 2500);
> + I915_WRITE(MIPI_DEVICE_READY(port), DEVICE_READY |
> + ULPS_STATE_ENTER);
> + usleep_range(2000, 2500);
>
> - if (wait_for(((I915_READ(MIPI_PORT_CTRL(port)) & AFE_LATCHOUT)
> - == 0x00000), 30))
> - DRM_ERROR("DSI LP not going Low\n");
> + if (wait_for(((I915_READ(MIPI_PORT_CTRL(PORT_A)) & AFE_LATCHOUT)
> + == 0x00000), 30))
> + DRM_ERROR("DSI LP not going Low\n");
I find it a bit odd that you do the sequence for each port, while this
bit is specific to port A. It deserves a comment at the very least.
But perhaps we need several for_each_dsi_port() loops here, doing some
things for all ports, then common things (like this one, and maybe group
sleeps into one too?), then again some things for all ports, etc.
I am really not sure what the right thing is, but this *feels* a bit
odd. Please explain at least.
In the end, I don't see anything particularly wrong with the patch, so
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> - val = I915_READ(MIPI_PORT_CTRL(port));
> - I915_WRITE(MIPI_PORT_CTRL(port), val & ~LP_OUTPUT_HOLD);
> - usleep_range(1000, 1500);
> + val = I915_READ(MIPI_PORT_CTRL(port));
> + I915_WRITE(MIPI_PORT_CTRL(port), val & ~LP_OUTPUT_HOLD);
> + usleep_range(1000, 1500);
>
> - I915_WRITE(MIPI_DEVICE_READY(port), 0x00);
> - usleep_range(2000, 2500);
> + I915_WRITE(MIPI_DEVICE_READY(port), 0x00);
> + usleep_range(2000, 2500);
> + }
>
> vlv_disable_dsi_pll(encoder);
> }
> --
> 1.7.9.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2014-12-04 11:37 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-04 5:28 [PATCH 00/10] BYT DSI Dual Link Support Gaurav K Singh
2014-12-04 5:28 ` [PATCH 01/10] drm/i915: New functions added for enabling & disabling MIPI Port Ctrl reg Gaurav K Singh
2014-12-04 9:13 ` Jani Nikula
2014-12-04 5:28 ` [PATCH 02/10] drm/i915: Added port as parameter to the functions which does read/write of DSI Controller Gaurav K Singh
2014-12-04 9:14 ` Jani Nikula
2014-12-04 11:22 ` Daniel Vetter
2014-12-05 12:50 ` Singh, Gaurav K
2014-12-05 14:38 ` Daniel Vetter
2014-12-05 20:35 ` Singh, Gaurav K
2014-12-04 5:28 ` [PATCH 03/10] drm/i915: Add support for port enable/disable for dual link configuration Gaurav K Singh
2014-12-04 9:17 ` Jani Nikula
2014-12-05 8:39 ` [PATCH v4 " Gaurav K Singh
2014-12-05 12:52 ` Jani Nikula
2014-12-04 5:28 ` [PATCH 04/10] drm/i915: Pixel Clock changes for DSI dual link Gaurav K Singh
2014-12-04 9:27 ` Jani Nikula
2014-12-05 8:43 ` [PATCH v3 " Gaurav K Singh
2014-12-05 16:33 ` [PATCH " Singh, Gaurav K
2014-12-05 16:54 ` Siluvery, Arun
2014-12-05 17:18 ` Singh, Gaurav K
2014-12-05 17:36 ` Jani Nikula
2014-12-05 17:48 ` Siluvery, Arun
2014-12-05 20:43 ` Singh, Gaurav K
2014-12-04 5:28 ` [PATCH 05/10] drm/i915: Dual link needs Shutdown and Turn on packet for both ports Gaurav K Singh
2014-12-04 10:41 ` Jani Nikula
2014-12-05 19:10 ` [PATCH 5/5] " Gaurav K Singh
2014-12-05 20:53 ` Daniel Vetter
2014-12-04 5:28 ` [PATCH 06/10] drm/i915: Enable DSI PLL for both DSI0 and DSI1 in case of dual link Gaurav K Singh
2014-12-04 11:17 ` Jani Nikula
2014-12-04 5:28 ` [PATCH 07/10] drm/i915: cck reg used for checking DSI Pll locked Gaurav K Singh
2014-12-04 11:22 ` Jani Nikula
2014-12-05 8:46 ` [PATCH v2 " Gaurav K Singh
2014-12-04 5:28 ` [PATCH 08/10] drm/i915: MIPI Timings related changes for dual link Gaurav K Singh
2014-12-04 11:24 ` Jani Nikula
2014-12-04 5:28 ` [PATCH 09/10] drm/i915: Update the DSI disable path to support dual link panel disabling Gaurav K Singh
2014-12-04 11:37 ` Jani Nikula [this message]
2014-12-05 8:52 ` [PATCH v4 " Gaurav K Singh
2014-12-04 5:28 ` [PATCH 10/10] drm/i915: Update the DSI enable path to support dual link panel enabling Gaurav K Singh
2014-12-04 11:49 ` Jani Nikula
2014-12-05 8:54 ` [PATCH v4 10/10] drm/i915: Update the DSI enable path to support dual Gaurav K Singh
2014-12-05 20:31 ` [PATCH " Gaurav K Singh
2014-12-05 4:04 ` [PATCH 10/10] drm/i915: Update the DSI enable path to support dual link panel enabling shuang.he
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=87oarjlk76.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=gaurav.k.singh@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=shobhit.kumar@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox