All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Bakker <xc-racer2@live.ca>
To: kyungmin.park@samsung.com, s.nawrocki@samsung.com,
	mchehab@kernel.org, kgene@kernel.org, krzk@kernel.org,
	linux-media@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: devicetree@vger.kernel.org, robh+dt@kernel.org,
	Jonathan Bakker <xc-racer2@live.ca>
Subject: [PATCH v2 07/11] media: exynos4-is: Add support for multiple sensors on one port
Date: Thu, 30 Jul 2020 16:01:10 -0700	[thread overview]
Message-ID: <BN6PR04MB0660571351D03A3A4FEDCD2CA3710@BN6PR04MB0660.namprd04.prod.outlook.com> (raw)
In-Reply-To: <20200730230114.8572-1-xc-racer2@live.ca>

On some devices, there may be multiple camera sensors attached
to the same port.  Make sure we probe all of them, not just the
first one.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
Changes from v1:
- Separated parsing each endpoint into separate func
---
 drivers/media/platform/exynos4-is/media-dev.c | 28 +++++++++++++------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c
index 70b0a70840cf..6d9b8fe3ac79 100644
--- a/drivers/media/platform/exynos4-is/media-dev.c
+++ b/drivers/media/platform/exynos4-is/media-dev.c
@@ -394,21 +394,15 @@ static void fimc_md_pipelines_free(struct fimc_md *fmd)
 	}
 }
 
-/* Parse port node and register as a sub-device any sensor specified there. */
-static int fimc_md_parse_port_node(struct fimc_md *fmd,
-				   struct device_node *port)
+static int fimc_md_parse_one_endpoint(struct fimc_md *fmd,
+				   struct device_node *ep)
 {
 	int index = fmd->num_sensors;
 	struct fimc_source_info *pd = &fmd->sensor[index].pdata;
-	struct device_node *rem, *ep, *np;
+	struct device_node *rem, *np;
 	struct v4l2_fwnode_endpoint endpoint = { .bus_type = 0 };
 	int ret;
 
-	/* Assume here a port node can have only one endpoint node. */
-	ep = of_get_next_child(port, NULL);
-	if (!ep)
-		return 0;
-
 	ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep), &endpoint);
 	if (ret) {
 		of_node_put(ep);
@@ -482,6 +476,22 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd,
 	return 0;
 }
 
+/* Parse port node and register as a sub-device any sensor specified there. */
+static int fimc_md_parse_port_node(struct fimc_md *fmd,
+				   struct device_node *port)
+{
+	struct device_node *ep;
+	int ret;
+
+	for_each_child_of_node(port, ep) {
+		ret = fimc_md_parse_one_endpoint(fmd, ep);
+		if (ret < 0)
+			return ret;
+	}
+
+	return 0;
+}
+
 /* Register all SoC external sub-devices */
 static int fimc_md_register_sensor_entities(struct fimc_md *fmd)
 {
-- 
2.20.1


WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Bakker <xc-racer2@live.ca>
To: kyungmin.park@samsung.com, s.nawrocki@samsung.com,
	mchehab@kernel.org, kgene@kernel.org, krzk@kernel.org,
	linux-media@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: devicetree@vger.kernel.org, Jonathan Bakker <xc-racer2@live.ca>,
	robh+dt@kernel.org
Subject: [PATCH v2 07/11] media: exynos4-is: Add support for multiple sensors on one port
Date: Thu, 30 Jul 2020 16:01:10 -0700	[thread overview]
Message-ID: <BN6PR04MB0660571351D03A3A4FEDCD2CA3710@BN6PR04MB0660.namprd04.prod.outlook.com> (raw)
In-Reply-To: <20200730230114.8572-1-xc-racer2@live.ca>

On some devices, there may be multiple camera sensors attached
to the same port.  Make sure we probe all of them, not just the
first one.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
---
Changes from v1:
- Separated parsing each endpoint into separate func
---
 drivers/media/platform/exynos4-is/media-dev.c | 28 +++++++++++++------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c
index 70b0a70840cf..6d9b8fe3ac79 100644
--- a/drivers/media/platform/exynos4-is/media-dev.c
+++ b/drivers/media/platform/exynos4-is/media-dev.c
@@ -394,21 +394,15 @@ static void fimc_md_pipelines_free(struct fimc_md *fmd)
 	}
 }
 
-/* Parse port node and register as a sub-device any sensor specified there. */
-static int fimc_md_parse_port_node(struct fimc_md *fmd,
-				   struct device_node *port)
+static int fimc_md_parse_one_endpoint(struct fimc_md *fmd,
+				   struct device_node *ep)
 {
 	int index = fmd->num_sensors;
 	struct fimc_source_info *pd = &fmd->sensor[index].pdata;
-	struct device_node *rem, *ep, *np;
+	struct device_node *rem, *np;
 	struct v4l2_fwnode_endpoint endpoint = { .bus_type = 0 };
 	int ret;
 
-	/* Assume here a port node can have only one endpoint node. */
-	ep = of_get_next_child(port, NULL);
-	if (!ep)
-		return 0;
-
 	ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep), &endpoint);
 	if (ret) {
 		of_node_put(ep);
@@ -482,6 +476,22 @@ static int fimc_md_parse_port_node(struct fimc_md *fmd,
 	return 0;
 }
 
+/* Parse port node and register as a sub-device any sensor specified there. */
+static int fimc_md_parse_port_node(struct fimc_md *fmd,
+				   struct device_node *port)
+{
+	struct device_node *ep;
+	int ret;
+
+	for_each_child_of_node(port, ep) {
+		ret = fimc_md_parse_one_endpoint(fmd, ep);
+		if (ret < 0)
+			return ret;
+	}
+
+	return 0;
+}
+
 /* Register all SoC external sub-devices */
 static int fimc_md_register_sensor_entities(struct fimc_md *fmd)
 {
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2020-07-30 23:02 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200730230114.8572-1-xc-racer2@live.ca>
2020-07-30 23:01 ` [PATCH v2 01/11] media: exynos4-is: Remove static driver data for S5PV210 FIMC variants Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 02/11] media: exynos4-is: Request syscon only if ISP writeback is present Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 03/11] media: exynos4-is: Fix nullptr when no CSIS device present Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 04/11] media: exynos4-is: Correct missing entity function initialization Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-31  9:41   ` Sylwester Nawrocki
2020-07-31  9:41     ` Sylwester Nawrocki
2020-07-30 23:01 ` [PATCH v2 05/11] media: exynos4-is: Properly set JPEG options for parallel ports Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 06/11] media: exynos4-is: Use global num_sensors rather than local index Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-31  9:44   ` Sylwester Nawrocki
2020-07-31  9:44     ` Sylwester Nawrocki
2020-07-30 23:01 ` Jonathan Bakker [this message]
2020-07-30 23:01   ` [PATCH v2 07/11] media: exynos4-is: Add support for multiple sensors on one port Jonathan Bakker
2020-07-31  9:49   ` Sylwester Nawrocki
2020-07-31  9:49     ` Sylwester Nawrocki
2020-07-30 23:01 ` [PATCH v2 08/11] media: exynos4-is: Remove inh_sensor_ctrls Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 09/11] media: exynos4-is: Remove unused struct member input_index Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-30 23:01 ` [PATCH v2 10/11] media: exynos4-is: Handle duplicate calls to vidioc_streamoff Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-31  9:54   ` Sylwester Nawrocki
2020-07-31  9:54     ` Sylwester Nawrocki
2020-07-30 23:01 ` [PATCH v2 11/11] dt-bindings: media: Correct samsung-fimc parallel port numbering Jonathan Bakker
2020-07-30 23:01   ` Jonathan Bakker
2020-07-31  9:59   ` Sylwester Nawrocki
2020-07-31  9:59     ` Sylwester Nawrocki
2020-07-31 22:43   ` Rob Herring
2020-07-31 22:43     ` Rob Herring

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=BN6PR04MB0660571351D03A3A4FEDCD2CA3710@BN6PR04MB0660.namprd04.prod.outlook.com \
    --to=xc-racer2@live.ca \
    --cc=devicetree@vger.kernel.org \
    --cc=kgene@kernel.org \
    --cc=krzk@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=s.nawrocki@samsung.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.