All of lore.kernel.org
 help / color / mirror / Atom feed
From: Todor Tomov <todor.tomov@linaro.org>
To: mchehab@kernel.org, sakari.ailus@linux.intel.com,
	hans.verkuil@cisco.com,
	laurent.pinchart+renesas@ideasonboard.com,
	linux-media@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Todor Tomov <todor.tomov@linaro.org>
Subject: [PATCH 19/32] media: camss: csiphy: Unify lane handling
Date: Fri, 22 Jun 2018 18:33:28 +0300	[thread overview]
Message-ID: <1529681621-9682-20-git-send-email-todor.tomov@linaro.org> (raw)
In-Reply-To: <1529681621-9682-1-git-send-email-todor.tomov@linaro.org>

Restructure lane configuration so it is simpler and will allow
similar (although not the same) handling for different hardware
versions.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
---
 .../platform/qcom/camss/camss-csiphy-2ph-1-0.c     | 48 ++++++++++++----------
 drivers/media/platform/qcom/camss/camss-csiphy.c   |  4 +-
 drivers/media/platform/qcom/camss/camss-csiphy.h   |  3 +-
 3 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/drivers/media/platform/qcom/camss/camss-csiphy-2ph-1-0.c b/drivers/media/platform/qcom/camss/camss-csiphy-2ph-1-0.c
index 7325906..5f499be 100644
--- a/drivers/media/platform/qcom/camss/camss-csiphy-2ph-1-0.c
+++ b/drivers/media/platform/qcom/camss/camss-csiphy-2ph-1-0.c
@@ -86,7 +86,7 @@ static void csiphy_lanes_enable(struct csiphy_device *csiphy,
 {
 	struct csiphy_lanes_cfg *c = &cfg->csi2->lane_cfg;
 	u8 settle_cnt;
-	u8 val;
+	u8 val, l = 0;
 	int i = 0;
 
 	settle_cnt = csiphy_settle_cnt_calc(pixel_clock, bpp, c->num_data,
@@ -104,34 +104,38 @@ static void csiphy_lanes_enable(struct csiphy_device *csiphy,
 	val = cfg->combo_mode << 4;
 	writel_relaxed(val, csiphy->base + CAMSS_CSI_PHY_GLBL_RESET);
 
-	while (lane_mask) {
-		if (lane_mask & 0x1) {
-			writel_relaxed(0x10, csiphy->base +
-				       CAMSS_CSI_PHY_LNn_CFG2(i));
-			writel_relaxed(settle_cnt, csiphy->base +
-				       CAMSS_CSI_PHY_LNn_CFG3(i));
-			writel_relaxed(0x3f, csiphy->base +
-				       CAMSS_CSI_PHY_INTERRUPT_MASKn(i));
-			writel_relaxed(0x3f, csiphy->base +
-				       CAMSS_CSI_PHY_INTERRUPT_CLEARn(i));
-		}
-
-		lane_mask >>= 1;
-		i++;
+	for (i = 0; i <= c->num_data; i++) {
+		if (i == c->num_data)
+			l = c->clk.pos;
+		else
+			l = c->data[i].pos;
+
+		writel_relaxed(0x10, csiphy->base +
+			       CAMSS_CSI_PHY_LNn_CFG2(l));
+		writel_relaxed(settle_cnt, csiphy->base +
+			       CAMSS_CSI_PHY_LNn_CFG3(l));
+		writel_relaxed(0x3f, csiphy->base +
+			       CAMSS_CSI_PHY_INTERRUPT_MASKn(l));
+		writel_relaxed(0x3f, csiphy->base +
+			       CAMSS_CSI_PHY_INTERRUPT_CLEARn(l));
 	}
 }
 
-static void csiphy_lanes_disable(struct csiphy_device *csiphy, u8 lane_mask)
+static void csiphy_lanes_disable(struct csiphy_device *csiphy,
+				 struct csiphy_config *cfg)
 {
+	struct csiphy_lanes_cfg *c = &cfg->csi2->lane_cfg;
+	u8 l = 0;
 	int i = 0;
 
-	while (lane_mask) {
-		if (lane_mask & 0x1)
-			writel_relaxed(0x0, csiphy->base +
-				       CAMSS_CSI_PHY_LNn_CFG2(i));
+	for (i = 0; i <= c->num_data; i++) {
+		if (i == c->num_data)
+			l = c->clk.pos;
+		else
+			l = c->data[i].pos;
 
-		lane_mask >>= 1;
-		i++;
+		writel_relaxed(0x0, csiphy->base +
+			       CAMSS_CSI_PHY_LNn_CFG2(l));
 	}
 
 	writel_relaxed(0x0, csiphy->base + CAMSS_CSI_PHY_GLBL_PWR_CFG);
diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.c b/drivers/media/platform/qcom/camss/camss-csiphy.c
index 14a9a66..99686f9 100644
--- a/drivers/media/platform/qcom/camss/camss-csiphy.c
+++ b/drivers/media/platform/qcom/camss/camss-csiphy.c
@@ -292,9 +292,7 @@ static int csiphy_stream_on(struct csiphy_device *csiphy)
  */
 static void csiphy_stream_off(struct csiphy_device *csiphy)
 {
-	u8 lane_mask = csiphy_get_lane_mask(&csiphy->cfg.csi2->lane_cfg);
-
-	csiphy->ops->lanes_disable(csiphy, lane_mask);
+	csiphy->ops->lanes_disable(csiphy, &csiphy->cfg);
 }
 
 
diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.h b/drivers/media/platform/qcom/camss/camss-csiphy.h
index 8f61b7d..07e5906 100644
--- a/drivers/media/platform/qcom/camss/camss-csiphy.h
+++ b/drivers/media/platform/qcom/camss/camss-csiphy.h
@@ -51,7 +51,8 @@ struct csiphy_hw_ops {
 	void (*lanes_enable)(struct csiphy_device *csiphy,
 			     struct csiphy_config *cfg,
 			     u32 pixel_clock, u8 bpp, u8 lane_mask);
-	void (*lanes_disable)(struct csiphy_device *csiphy, u8 lane_mask);
+	void (*lanes_disable)(struct csiphy_device *csiphy,
+			      struct csiphy_config *cfg);
 	irqreturn_t (*isr)(int irq, void *dev);
 };
 
-- 
2.7.4


  parent reply	other threads:[~2018-06-22 15:38 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-22 15:33 [PATCH 00/32] Qualcomm Camera Subsystem driver - 8x96 support Todor Tomov
2018-06-22 15:33 ` [PATCH 01/32] doc-rst: Add packed Bayer raw14 pixel formats Todor Tomov
2018-06-22 15:33 ` [PATCH 02/32] media: v4l: Add new 2X8 10-bit grayscale media bus code Todor Tomov
2018-06-22 15:33 ` [PATCH 03/32] media: v4l: Add new 10-bit packed grayscale format Todor Tomov
2018-06-22 15:33 ` [PATCH 04/32] media: Rename CAMSS driver path Todor Tomov
2018-06-26 13:53   ` Sakari Ailus
2018-06-22 15:33 ` [PATCH 05/32] media: camss: Use SPDX license headers Todor Tomov
2018-06-22 15:33 ` [PATCH 06/32] media: camss: Fix OF node usage Todor Tomov
2018-06-22 15:33 ` [PATCH 07/32] media: camss: csiphy: Ensure clock mux config is done before the rest Todor Tomov
2018-06-22 15:33 ` [PATCH 08/32] media: camss: Unify the clock names Todor Tomov
2018-07-02  7:46   ` Hans Verkuil
2018-06-22 15:33 ` [PATCH 09/32] media: camss: csiphy: Update settle count calculation Todor Tomov
2018-06-22 15:33 ` [PATCH 10/32] media: camss: csid: Configure data type and decode format properly Todor Tomov
2018-06-22 15:33 ` [PATCH 11/32] media: camss: vfe: Fix to_vfe() macro member name Todor Tomov
2018-06-22 15:33 ` [PATCH 12/32] media: camss: vfe: Get line pointer as container of video_out Todor Tomov
2018-06-22 15:33 ` [PATCH 13/32] media: camss: vfe: Do not disable CAMIF when clearing its status Todor Tomov
2018-06-22 15:33 ` [PATCH 14/32] media: dt-bindings: media: qcom,camss: Fix whitespaces Todor Tomov
2018-07-03 19:36   ` Rob Herring
2018-06-22 15:33 ` [PATCH 15/32] media: dt-bindings: media: qcom,camss: Add 8996 bindings Todor Tomov
2018-07-03 19:51   ` Rob Herring
2018-06-22 15:33 ` [PATCH 16/32] media: camss: Add 8x96 resources Todor Tomov
2018-06-22 15:33 ` [PATCH 17/32] media: camss: Add basic runtime PM support Todor Tomov
2018-06-22 15:33 ` [PATCH 18/32] media: camss: csiphy: Split to hardware dependent and independent parts Todor Tomov
2018-06-22 15:33 ` Todor Tomov [this message]
2018-06-22 15:33 ` [PATCH 20/32] media: camss: csiphy: Add support for 8x96 Todor Tomov
2018-06-22 15:33 ` [PATCH 21/32] media: camss: csid: " Todor Tomov
2018-06-22 15:33 ` [PATCH 22/32] media: camss: ispif: " Todor Tomov
2018-06-22 15:33 ` [PATCH 23/32] media: camss: vfe: Split to hardware dependent and independent parts Todor Tomov
2018-06-22 15:33 ` [PATCH 24/32] media: camss: vfe: Add support for 8x96 Todor Tomov
2018-06-22 15:33 ` [PATCH 25/32] media: camss: Format configuration per hardware version Todor Tomov
2018-06-22 15:33 ` [PATCH 26/32] media: camss: vfe: Different format support on source pad Todor Tomov
2018-06-22 15:33 ` [PATCH 27/32] media: camss: vfe: Add support for UYVY output from VFE on 8x96 Todor Tomov
2018-06-22 15:33 ` [PATCH 28/32] media: camss: csid: Different format support on source pad Todor Tomov
2018-06-22 15:33 ` [PATCH 29/32] media: camss: csid: MIPI10 to Plain16 format conversion Todor Tomov
2018-06-22 15:33 ` [PATCH 30/32] media: camss: Add support for RAW MIPI14 on 8x96 Todor Tomov
2018-06-22 15:33 ` [PATCH 31/32] media: camss: Add support for 10-bit grayscale formats Todor Tomov
2018-06-22 15:33 ` [PATCH 32/32] media: doc: media/v4l-drivers: Update Qualcomm CAMSS driver document for 8x96 Todor Tomov
2018-07-02  8:01 ` [PATCH 00/32] Qualcomm Camera Subsystem driver - 8x96 support Hans Verkuil

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=1529681621-9682-20-git-send-email-todor.tomov@linaro.org \
    --to=todor.tomov@linaro.org \
    --cc=hans.verkuil@cisco.com \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@linux.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.