All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: jani.nikula@intel.com
Subject: [PATCH v8 21/38] drm/i915/icl: Fetch DSI pkt to be transferred
Date: Tue, 30 Oct 2018 13:56:27 +0200	[thread overview]
Message-ID: <d6918057d0db1d324341affff95abe70d07c4e37.1540900289.git.jani.nikula@intel.com> (raw)
In-Reply-To: <cover.1540900289.git.jani.nikula@intel.com>
In-Reply-To: <cover.1540900289.git.jani.nikula@intel.com>

From: Madhav Chauhan <madhav.chauhan@intel.com>

This patch retrieves DSI pkt (from DSI msg)  to be
sent over DSI link using DRM DSI exported functions.
A wrapper function is also added as "DSI host transfer"
for sending DSI data/cmd.

v2 by Jani:
 - Use the new credit available helper
 - Use int for free_credits

Signed-off-by: Madhav Chauhan <madhav.chauhan@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/icl_dsi.c | 62 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/drivers/gpu/drm/i915/icl_dsi.c b/drivers/gpu/drm/i915/icl_dsi.c
index d0c60d402dfe..c7b77cd81e45 100644
--- a/drivers/gpu/drm/i915/icl_dsi.c
+++ b/drivers/gpu/drm/i915/icl_dsi.c
@@ -107,6 +107,44 @@ static void wait_for_cmds_dispatched_to_panel(struct intel_encoder *encoder)
 	}
 }
 
+static int dsi_send_pkt_hdr(struct intel_dsi_host *host,
+			    struct mipi_dsi_packet pkt, bool enable_lpdt)
+{
+	struct intel_dsi *intel_dsi = host->intel_dsi;
+	struct drm_i915_private *dev_priv = to_i915(intel_dsi->base.base.dev);
+	enum transcoder dsi_trans = dsi_port_to_transcoder(host->port);
+	u32 tmp;
+	int free_credits;
+
+	/* check if header credit available */
+	free_credits = header_credits_available(dev_priv, dsi_trans);
+	if (free_credits < 1) {
+		DRM_ERROR("send pkt header failed, not enough hdr credits\n");
+		return -1;
+	}
+
+	tmp = I915_READ(DSI_CMD_TXHDR(dsi_trans));
+
+	if (pkt.payload)
+		tmp |= PAYLOAD_PRESENT;
+	else
+		tmp &= ~PAYLOAD_PRESENT;
+
+	tmp &= ~VBLANK_FENCE;
+
+	if (enable_lpdt)
+		tmp |= LP_DATA_TRANSFER;
+
+	tmp &= ~(PARAM_WC_MASK | VC_MASK | DT_MASK);
+	tmp |= ((pkt.header[0] & VC_MASK) << VC_SHIFT);
+	tmp |= ((pkt.header[0] & DT_MASK) << DT_SHIFT);
+	tmp |= (pkt.header[1] << PARAM_WC_LOWER_SHIFT);
+	tmp |= (pkt.header[2] << PARAM_WC_UPPER_SHIFT);
+	I915_WRITE(DSI_CMD_TXHDR(dsi_trans), tmp);
+
+	return 0;
+}
+
 static void dsi_program_swing_and_deemphasis(struct intel_encoder *encoder)
 {
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
@@ -994,9 +1032,33 @@ static int gen11_dsi_host_detach(struct mipi_dsi_host *host,
 	return 0;
 }
 
+static ssize_t gen11_dsi_host_transfer(struct mipi_dsi_host *host,
+				       const struct mipi_dsi_msg *msg)
+{
+	struct intel_dsi_host *intel_dsi_host = to_intel_dsi_host(host);
+	struct mipi_dsi_packet dsi_pkt;
+	ssize_t ret;
+	bool enable_lpdt = false;
+
+	ret = mipi_dsi_create_packet(&dsi_pkt, msg);
+	if (ret < 0)
+		return ret;
+
+	if (msg->flags & MIPI_DSI_MSG_USE_LPM)
+		enable_lpdt = true;
+
+	/* send packet header */
+	ret  = dsi_send_pkt_hdr(intel_dsi_host, dsi_pkt, enable_lpdt);
+	if (ret < 0)
+		return ret;
+
+	return ret;
+}
+
 static const struct mipi_dsi_host_ops gen11_dsi_host_ops = {
 	.attach = gen11_dsi_host_attach,
 	.detach = gen11_dsi_host_detach,
+	.transfer = gen11_dsi_host_transfer,
 };
 
 void icl_dsi_init(struct drm_i915_private *dev_priv)
-- 
2.11.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2018-10-30 11:56 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-30 11:56 [PATCH v8 00/38] drm/i915/icl: dsi enabling Jani Nikula
2018-10-30 11:56 ` [PATCH v8 01/38] drm/i915/icl: Move dsi host init code to common file Jani Nikula
2018-10-30 11:56 ` [PATCH v8 02/38] drm/i915/dsi: move connector mode functions " Jani Nikula
2018-10-31  9:20   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 03/38] drm/i915/icl: Set max return packet size for DSI panel Jani Nikula
2018-10-31  9:24   ` Madhav Chauhan
2018-10-31  9:40     ` Jani Nikula
2018-10-30 11:56 ` [PATCH v8 04/38] drm/i915/icl: Power on " Jani Nikula
2018-10-31  9:42   ` Jani Nikula
2018-10-30 11:56 ` [PATCH v8 05/38] drm/i915/icl: Wait for header/payload credits release Jani Nikula
2018-10-31 10:06   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 06/38] drm/i915/icl: Turn ON panel backlight Jani Nikula
2018-10-30 11:56 ` [PATCH v8 07/38] drm/i915/icl: Turn OFF " Jani Nikula
2018-10-30 11:56 ` [PATCH v8 08/38] drm/i915/icl: Disable DSI transcoders Jani Nikula
2018-10-31 10:10   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 09/38] drm/i915/icl: Power down DSI panel Jani Nikula
2018-10-30 11:56 ` [PATCH v8 10/38] drm/i915/icl: Put DSI link in ULPS Jani Nikula
2018-10-30 11:56 ` [PATCH v8 11/38] drm/i915/icl: Disable DDI function Jani Nikula
2018-10-30 11:56 ` [PATCH v8 12/38] drm/i915/icl: Disable portsync mode Jani Nikula
2018-10-30 11:56 ` [PATCH v8 13/38] drm/i915/icl: Disable DSI ports Jani Nikula
2018-10-30 11:56 ` [PATCH v8 14/38] drm/i915/icl: Disable DSI IO power Jani Nikula
2018-10-30 11:56 ` [PATCH v8 15/38] drm/i915/icl: Define DSI timeout registers Jani Nikula
2018-10-31 10:29   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 16/38] drm/i915/icl: Program HS_TX_TIMEOUT/LP_RX_TIMEOUT/TA_TIMEOUT registers Jani Nikula
2018-10-31 11:01   ` Madhav Chauhan
2018-10-31 11:18     ` Jani Nikula
2018-10-30 11:56 ` [PATCH v8 17/38] drm/i915/icl: Find DSI presence for ICL Jani Nikula
2018-10-31 11:19   ` Madhav Chauhan
2018-11-01 15:39     ` Jani Nikula
2018-11-01 11:09   ` Jani Nikula
2018-10-30 11:56 ` [PATCH v8 18/38] drm/i915/icl: Allocate DSI encoder/connector Jani Nikula
2018-10-31 11:24   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 19/38] drm/i915/icl: Allocate hosts for DSI ports Jani Nikula
2018-10-31 11:26   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 20/38] drm/i915/icl: Add DSI packet payload/header registers Jani Nikula
2018-10-31 11:43   ` Madhav Chauhan
2018-11-01 11:10     ` Jani Nikula
2018-10-30 11:56 ` Jani Nikula [this message]
2018-10-31 11:45   ` [PATCH v8 21/38] drm/i915/icl: Fetch DSI pkt to be transferred Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 22/38] drm/i915/icl: Load DSI packet payload to queue Jani Nikula
2018-10-31 11:51   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 23/38] drm/i915/icl: Add get config functionality for DSI Jani Nikula
2018-10-30 11:56 ` [PATCH v8 24/38] drm/i915/icl: Get HW state for DSI encoder Jani Nikula
2018-10-31 11:57   ` Madhav Chauhan
2018-11-01 14:24   ` Imre Deak
2018-10-30 11:56 ` [PATCH v8 25/38] drm/i915/icl: Add DSI connector functions Jani Nikula
2018-11-01 14:03   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 26/38] drm/i915/icl: Add DSI connector helper functions Jani Nikula
2018-11-01 14:03   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 27/38] drm/i915/icl: Add DSI encoder remaining functions Jani Nikula
2018-11-01 14:08   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 28/38] drm/i915/icl: Fill DSI ports info Jani Nikula
2018-10-30 11:56 ` [PATCH v8 29/38] drm/i915/icl: Add DSS_CTL Registers Jani Nikula
2018-11-01 15:27   ` Jani Nikula
2018-11-01 18:12     ` Manasi Navare
2018-10-30 11:56 ` [PATCH v8 30/38] drm/i915/icl: Configure DSI Dual link mode Jani Nikula
2018-11-01 14:11   ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 31/38] drm/i915/icl: Define Panel power ctrl register Jani Nikula
2018-10-30 11:56 ` [PATCH v8 32/38] drm/i915/icl: Define missing bitfield for shortplug reg Jani Nikula
2018-10-30 11:56 ` [PATCH v8 33/38] drm/i915/icl: Define display GPIO pins for DSI Jani Nikula
2018-10-30 11:56 ` [PATCH v8 34/38] drm/i915/icl: Add changes to program DSI panel GPIOs Jani Nikula
2018-10-30 14:01   ` Ville Syrjälä
2018-10-30 14:08     ` Jani Nikula
2018-11-01 14:56     ` Madhav Chauhan
2018-10-30 11:56 ` [PATCH v8 35/38] HACK: drm/i915/icl: Configure backlight functions for DSI Jani Nikula
2018-10-30 11:56 ` [PATCH v8 36/38] drm/i915/icl: Don't wait for empty FIFO Jani Nikula
2018-11-01 11:10   ` Jani Nikula
2018-10-30 11:56 ` [PATCH v8 37/38] drm/i915/icl: Consider DSI for getting transcoder state Jani Nikula
2018-10-30 14:04   ` Ville Syrjälä
2018-10-30 11:56 ` [PATCH v8 38/38] drm/i915/icl: Get pipe timings for DSI Jani Nikula
2018-10-30 12:17 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/icl: dsi enabling (rev3) Patchwork
2018-10-30 12:26 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-10-30 12:51 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-10-30 13:07 ` [PATCH v8 00/38] drm/i915/icl: dsi enabling Jani Nikula
2018-10-30 16:07 ` ✗ Fi.CI.BAT: failure for drm/i915/icl: dsi enabling (rev3) Patchwork

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=d6918057d0db1d324341affff95abe70d07c4e37.1540900289.git.jani.nikula@intel.com \
    --to=jani.nikula@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.