devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stu Hsieh <stu.hsieh@mediatek.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>,
	Rob Herring <robh+dt@kernel.org>, CK Hu <ck.hu@mediatek.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Stu Hsieh <stu.hsieh@mediatek.com>,
	linux-media@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, srv_heupstream@mediatek.com
Subject: [PATCH v4 14/14] [media] mtk-mipicsi: add function to support SerDes for link number
Date: Tue, 4 Jun 2019 18:11:55 +0800	[thread overview]
Message-ID: <1559643115-15124-15-git-send-email-stu.hsieh@mediatek.com> (raw)
In-Reply-To: <1559643115-15124-1-git-send-email-stu.hsieh@mediatek.com>

This patch add function to support SerDes for link number.

Mt2712 can serve at most four camera link for each mipicsi port.
Therefore, driver need to know how many camera link in SerDes and
set the mipicsi HW to serve.

The value "link_reg" defined in dts, and use it to get the link status
for SerDes.

Signed-off-by: Stu Hsieh <stu.hsieh@mediatek.com>
---
 .../media/platform/mtk-mipicsi/mtk_mipicsi.c  | 53 ++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c b/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c
index 9b5983b39f2b..ab703e3469ca 100644
--- a/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c
+++ b/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c
@@ -143,6 +143,7 @@ struct mtk_mipicsi_subdev {
 	struct v4l2_async_subdev asd;
 	struct v4l2_subdev *subdev;
 	unsigned int max_vc;
+	u32 link_reg;
 };
 
 struct mtk_mipicsi_channel {
@@ -257,12 +258,37 @@ static const struct file_operations mtk_mipicsi_debug_fops = {
 };
 #endif /* CONFIG_DEBUG_FS */
 
+static int get_subdev_register(struct mtk_mipicsi_dev *mipicsi,
+			       struct v4l2_dbg_register *reg)
+{
+	struct v4l2_subdev *sd = mipicsi->mipicsi_sd.subdev;
+	struct device *dev = &mipicsi->pdev->dev;
+	int ret = 0;
+
+	reg->match.type = V4L2_CHIP_MATCH_SUBDEV;
+	reg->match.addr = 0;
+	ret = v4l2_subdev_call(sd, core, g_register, reg);
+	if (ret != 2) {
+		dev_err(dev, "mipicsi get des register 0x%llx fail, ret=%d\n",
+		reg->reg, ret);
+		return -EIO;
+	}
+
+	dev_info(dev, "read DES [reg/val/ret] is [0x%llx/0x%llx/%d]\n",
+		 reg->reg, reg->val, ret);
+
+	return ret;
+}
+
+
 static int get_subdev_link(struct mtk_mipicsi_dev *mipicsi,
 	unsigned int *link, u8 *link_reg_val)
 {
 	struct device *dev = &mipicsi->pdev->dev;
 	struct mtk_mipicsi_subdev *sd = &mipicsi->mipicsi_sd;
-
+	struct v4l2_dbg_register reg;
+	int ret = 0;
+	unsigned int index = 0;
 
 	if (sd->max_vc == 1) {
 		*link = 1;
@@ -274,6 +300,24 @@ static int get_subdev_link(struct mtk_mipicsi_dev *mipicsi,
 
 	dev_info(dev, "mtk mipicsi support %d channel\n", sd->max_vc);
 
+	memset(&reg, 0, sizeof(reg));
+	/*get camera link number*/
+	reg.reg = sd->link_reg;
+	ret = get_subdev_register(mipicsi, &reg);
+	if (ret < 0)
+		return ret;
+
+	*link = 0;
+	for (index = 0; index < sd->max_vc; index++) {
+		if ((reg.val & 0x01) == 0x01) {
+			*link += 1;
+			*link_reg_val |= (0x01 << index);
+		}
+		reg.val >>= 1;
+	}
+
+	dev_info(dev, "%u camera linked to sub device\n", *link);
+
 	return 0;
 }
 
@@ -1199,6 +1243,13 @@ static int mtk_mipicsi_node_parse(struct mtk_mipicsi_dev *mipicsi)
 		sd->max_vc = 1;
 	}
 
+	ret = of_property_read_u32(dev->of_node, "mediatek,serdes_link_reg",
+				   &sd->link_reg);
+	if (ret != 0) {
+		dev_info(dev, "not set mediatek,serdes_link_reg, can't read subdev link number\n");
+		sd->link_reg = 0x0;
+	}
+
 	/* get and parse seninf_mux_camsv */
 	camsv_num = of_count_phandle_with_args(dev->of_node,
 		"mediatek,seninf_mux_camsv", NULL);
-- 
2.18.0

      parent reply	other threads:[~2019-06-04 10:11 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-04 10:11 [PATCH v4 00/14] Add mediatek mipicsi driver for Mediatek SOC MT2712 Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 01/14] dt-bindings: Add binding for MT2712 MIPI-CSI2 Stu Hsieh
2019-06-10  2:34   ` CK Hu
2019-06-10  3:32     ` Tomasz Figa
2019-06-10  7:51       ` CK Hu
2019-06-10  7:58         ` Tomasz Figa
2019-08-26 14:05           ` Sakari Ailus
2019-06-04 10:11 ` [PATCH v4 02/14] dt-bindings: media: Add mipicsi common node " Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 03/14] dt-bindings: media: Add camsv " Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 04/14] [media] mtk-mipicsi: add mediatek mipicsi driver for mt2712 Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 05/14] [media] mtk-mipicsi: register the v4l2 device for mt2712 mipicsi Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 06/14] [media] mtk-mipicsi: enable/disable ana clk Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 07/14] [media] mtk-mipicsi: add function to get the number of subdev link Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 08/14] [media] mtk-mipicsi: enable/disable cmos for mt2712 Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 09/14] [media] mtk-mipicsi: add ISR for writing the data to buffer Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 10/14] [media] mtk-mipicsi: set the output address in HW reg Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 11/14] [media] mtk-mipicsi: add function to get the format Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 12/14] [media] mtk-mipicsi: add debug message for mipicsi driver Stu Hsieh
2019-06-04 10:11 ` [PATCH v4 13/14] [media] mtk-mipicsi: add debugfs " Stu Hsieh
2019-06-04 10:11 ` Stu Hsieh [this message]

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=1559643115-15124-15-git-send-email-stu.hsieh@mediatek.com \
    --to=stu.hsieh@mediatek.com \
    --cc=ck.hu@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=mchehab@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=srv_heupstream@mediatek.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;
as well as URLs for NNTP newsgroup(s).