Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp5216590ybi; Tue, 4 Jun 2019 03:15:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqxKn6lTO/tSKa9KRASqYKuN7ZEiYe+SWZbOH4KEuSE8CqRSEmY2mY6NZPMoDkLtwQ8o8Rp2 X-Received: by 2002:aa7:8dd6:: with SMTP id j22mr38306941pfr.192.1559643307846; Tue, 04 Jun 2019 03:15:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559643307; cv=none; d=google.com; s=arc-20160816; b=RReacxsBVdi3o+q+MCeh9zSjnKUYkgmiq3mEIj7hlrJNbjh5NBpkgUwQaQFxRQiqeM evVWEf9rAUz56D0ALPFojrapgPPu5mFGo8O1nUIu51g7dIihpmu9YDxdB6rmz+pjgOq+ WZ4ouilzQB2OAqlyDxtRkocpnQQnl9of3+Tc6IAOdP6jgbRmhmFjs5/FJHFlxqqv5crH 0iM0Hcbmml99pgl0AY1iXCTbi92pGeGicSfo5XHElyURlw0ZCDFyCdq6Fq+JLmwsv3j4 tm7dIviNfiYZB0SJb2mbAsRa5ruZp15D4QG3BidGlQ7sjVxj6BBsmjCoju2QhFvDVj+U 9nPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=Krqx+SUy1HOAV9Tac071mFO380k1FRg7FGk/m9ck/7U=; b=qEH3ruA+yKDFsXLaKGT5svnQ6s2F6A0dFSlW3HnGgA7vfTSzSv3UhZPUHGklpGlxBw Oma5hIDX0V81Tc5uFt966EFcwAyhJmTZ0Te7PPpmyiWXwE1s9Y+Nv/9zoPLRGet3PRl3 plDz67ZdSVD915zxRzNBaTy81CwA4yXJq3Z+WyypI5KIzj+WjSDnVJA965e/Q69RUeu1 87uzX/RDG7F20jGbomanKRs8oJvTO0r6NRTXjMnW+dCz48wDexPiOq4O3QRNX9uLGp2M 68tusNFMv3O59iM1njBGZRXt5RklQqtA1uwRANHpPC/VBGPGKLT4XC/Q8fgKWD3rZ9zg PGQQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id gb4si15907230plb.429.2019.06.04.03.14.50; Tue, 04 Jun 2019 03:15:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727487AbfFDKNE (ORCPT + 99 others); Tue, 4 Jun 2019 06:13:04 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:42698 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727256AbfFDKMO (ORCPT ); Tue, 4 Jun 2019 06:12:14 -0400 X-UUID: 507e439b8181492fba6365cbd70071ab-20190604 X-UUID: 507e439b8181492fba6365cbd70071ab-20190604 Received: from mtkmrs01.mediatek.inc [(172.21.131.159)] by mailgw02.mediatek.com (envelope-from ) (mhqrelay.mediatek.com ESMTP with TLS) with ESMTP id 767814066; Tue, 04 Jun 2019 18:12:06 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n2.mediatek.inc (172.21.101.79) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 4 Jun 2019 18:12:01 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 4 Jun 2019 18:12:01 +0800 From: Stu Hsieh To: Mauro Carvalho Chehab , Rob Herring , CK Hu CC: Mark Rutland , Matthias Brugger , Stu Hsieh , , , , , , Subject: [PATCH v4 07/14] [media] mtk-mipicsi: add function to get the number of subdev link Date: Tue, 4 Jun 2019 18:11:48 +0800 Message-ID: <1559643115-15124-8-git-send-email-stu.hsieh@mediatek.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1559643115-15124-1-git-send-email-stu.hsieh@mediatek.com> References: <1559643115-15124-1-git-send-email-stu.hsieh@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: F8EDD96C39312300CC9BE38EF59A9647DED5B847D22FF143A7A139D6D6217F8D2000:8 X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch add function to get subdev link. Mt2712 can serve at most four camera link for each mipicsi port. The number of link according to the value which is defined in dts, the string is "mediatek,mipicsi_max_vc". This value "max_vc" is the number of subdev link. Signed-off-by: Stu Hsieh --- .../media/platform/mtk-mipicsi/mtk_mipicsi.c | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c b/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c index f5cb29077022..ea1edbc6401b 100644 --- a/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c +++ b/drivers/media/platform/mtk-mipicsi/mtk_mipicsi.c @@ -120,6 +120,7 @@ struct mtk_mipicsi_subdev { struct device_node *node; struct v4l2_async_subdev asd; struct v4l2_subdev *subdev; + unsigned int max_vc; }; struct mtk_mipicsi_channel { @@ -153,6 +154,8 @@ struct mtk_mipicsi_dev { struct mtk_mipicsi_buf cam_buf[MAX_BUFFER_NUM]; struct list_head fb_list; bool streamon; + unsigned int link; + u8 link_reg_val; char drv_name[16]; u32 id; @@ -182,6 +185,25 @@ static const struct mtk_format mtk_mipicsi_formats[] = { }, }; +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; + + if (sd->max_vc == 1) { + *link = 1; + *link_reg_val = 0x1; + dev_info(dev, "mtk mipicsi support 1 channel\n"); + + return 0; + } + + dev_info(dev, "mtk mipicsi support %d channel\n", sd->max_vc); + + return 0; +} + static void mtk_mipicsi_ana_clk_enable(void __iomem *base, bool enable) { if (enable) { @@ -877,6 +899,7 @@ static int mtk_mipicsi_node_parse(struct mtk_mipicsi_dev *mipicsi) struct resource *res = NULL; struct device_node *common_node = NULL; struct platform_device *pdev = NULL; + struct mtk_mipicsi_subdev *sd = &mipicsi->mipicsi_sd; dev = &mipicsi->pdev->dev; pdev = mipicsi->pdev; @@ -891,6 +914,14 @@ static int mtk_mipicsi_node_parse(struct mtk_mipicsi_dev *mipicsi) (void)sprintf(mipicsi->drv_name, MTK_MIPICSI_DRV_NAME"%d", mipicsi->id); + /*get the number of virtual channel*/ + ret = of_property_read_u32(dev->of_node, "mediatek,mipicsi_max_vc", + &sd->max_vc); + if (ret != 0) { + dev_info(dev, "not set mediatek,mipicsi_max_vc, use default value 1\n"); + sd->max_vc = 1; + } + /* get and parse seninf_mux_camsv */ camsv_num = of_count_phandle_with_args(dev->of_node, "mediatek,seninf_mux_camsv", NULL); @@ -1165,6 +1196,8 @@ static int mtk_mipicsi_open(struct file *file) if (ret) v4l2_subdev_call(sd, core, s_power, 0); + get_subdev_link(mipicsi, &mipicsi->link, &mipicsi->link_reg_val); + pm_runtime_get_sync(&mipicsi->pdev->dev); fh_rel: -- 2.18.0