All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: Sakari Ailus <sakari.ailus@iki.fi>
Cc: sre@kernel.org, pali.rohar@gmail.com,
	linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	laurent.pinchart@ideasonboard.com, mchehab@kernel.org,
	ivo.g.dimitrov.75@gmail.com
Subject: Re: camera subdevice support was Re: [PATCH 1/4] v4l2: device_register_subdev_nodes: allow calling multiple times
Date: Sat, 4 Mar 2017 20:20:24 +0100	[thread overview]
Message-ID: <20170304192023.GB31766@amd> (raw)
In-Reply-To: <20170304123010.GT3220@valkosipuli.retiisi.org.uk>

[-- Attachment #1: Type: text/plain, Size: 3005 bytes --]

Čágo Belo Šílenci! :-)

> > +static int camera_subdev_parse(struct device *dev, struct v4l2_async_notifier *notifier,
> > +			       const char *key)
> > +{
> > +	struct device_node *node;
> > +	struct isp_async_subdev *isd;
> > +
> > +	printk("Looking for %s\n", key);
> > +	
> > +	node = of_parse_phandle(dev->of_node, key, 0);
> 
> There may be more than one flash associated with a sensor. Speaking of which
> --- how is it associated to the sensors?
> 
> One way to do this could be to simply move the flash property to the sensor
> OF node. We could have it here, too, if the flash was not associated with
> any sensor, but I doubt that will ever be needed.

I don't know what you mean here. Anyway, here's updated version.

Best regards,
								Pavel

diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c
index c80397a..22d0e4a 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -2162,10 +2162,57 @@ static int isp_fwnode_parse(struct device *dev, struct fwnode_handle *fwn,
 	return 0;
 }
 
+static int camera_subdev_parse(struct device *dev, struct v4l2_async_notifier *notifier,
+			       const char *key, int max)
+{
+	struct device_node *node;
+	struct isp_async_subdev *isd;
+	int num = 0;
+
+	printk("Looking for %s\n", key);
+
+	while (notifier->num_subdevs < max) {
+		node = of_parse_phandle(dev->of_node, key, num++);
+		if (!node)
+			return 0;
+
+		printk("Having subdevice: %p\n", node);
+		
+		isd = devm_kzalloc(dev, sizeof(*isd), GFP_KERNEL);
+		if (!isd)
+			return -ENOMEM;
+
+		notifier->subdevs[notifier->num_subdevs] = &isd->asd;
+
+		isd->asd.match.fwnode.fwn = of_fwnode_handle(node);
+		isd->asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
+		notifier->num_subdevs++;
+	}
+
+	return 0;
+}
+
+static int camera_subdevs_parse(struct device *dev, struct v4l2_async_notifier *notifier,
+				int max)
+{
+	int res;
+
+	res = camera_subdev_parse(dev, notifier, "flash", max);
+	if (res)
+		return res;
+
+	res = camera_subdev_parse(dev, notifier, "lens-focus", max);
+	if (res)
+		return res;
+	
+	return 0;
+}
+
 static int isp_fwnodes_parse(struct device *dev,
 			     struct v4l2_async_notifier *notifier)
 {
 	struct fwnode_handle *fwn = NULL;
+	int res;
 
 	notifier->subdevs = devm_kcalloc(
 		dev, ISP_MAX_SUBDEVS, sizeof(*notifier->subdevs), GFP_KERNEL);
@@ -2199,6 +2246,15 @@ static int isp_fwnodes_parse(struct device *dev,
 		notifier->num_subdevs++;
 	}
 
+	/* FIXME: missing put in the success path? */
+
+	res = camera_subdevs_parse(dev, notifier, ISP_MAX_SUBDEVS);
+	if (res)
+		goto error;
+
+	if (notifier->num_subdevs == ISP_MAX_SUBDEVS) {
+		printk("isp: Maybe too many devices?\n");
+	}
 	return notifier->num_subdevs;
 
 error:

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

  parent reply	other threads:[~2017-03-04 19:20 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-14 22:38 [PATCH 1/4] v4l2: device_register_subdev_nodes: allow calling multiple times Pavel Machek
2017-02-14 22:38 ` [PATCH 2/4] Core changes for CCP2/CSI1 support Pavel Machek
2017-02-14 22:39 ` [PATCH 3/4] smiapp: add CCP2 support Pavel Machek
2017-02-14 22:39 ` [PATCH 4/4] v4l: split lane parsing code Pavel Machek
2017-02-20 10:31 ` [PATCH 1/4] v4l2: device_register_subdev_nodes: allow calling multiple times Pavel Machek
2017-02-20 13:09   ` Sakari Ailus
2017-02-20 13:56     ` Sakari Ailus
2017-02-21 11:07       ` Pavel Machek
2017-02-21 11:11         ` Sakari Ailus
2017-02-23 22:52           ` Pavel Machek
2017-02-25  0:09           ` Pavel Machek
2017-02-25 13:44             ` Sakari Ailus
2017-02-25 21:53               ` camera subdevice support was " Pavel Machek
2017-02-25 22:56                 ` Pavel Machek
2017-02-25 23:17                 ` Sakari Ailus
2017-02-26  8:38                   ` Pavel Machek
2017-02-26 21:36                     ` Sakari Ailus
2017-03-04  8:55                   ` Pavel Machek
2017-03-04 12:30                     ` Sakari Ailus
2017-03-04 19:05                       ` Pavel Machek
2017-03-04 19:20                       ` Pavel Machek [this message]
2017-03-02  9:07               ` subdevice config into pointer (was Re: [PATCH 1/4] v4l2: device_register_subdev_nodes: allow calling multiple times) Pavel Machek
2017-03-02 14:16                 ` Sakari Ailus
2017-03-02 14:58                   ` Pavel Machek
2017-03-02 15:13                     ` Sakari Ailus
2017-03-03 23:24                       ` Pavel Machek
2017-03-02 18:39                   ` Laurent Pinchart
2017-03-02 21:03                     ` Pavel Machek
2017-03-02 21:18                     ` Sakari Ailus
2017-02-25 22:12           ` [PATCH 1/4] v4l2: device_register_subdev_nodes: allow calling multiple times Pavel Machek
2017-02-27 19:43             ` Pavel Machek
2017-02-27 20:54             ` Sakari Ailus
2017-02-28  9:17               ` Pavel Machek
2017-02-28 11:38               ` [PATCH] omap3isp: Parse CSI1 configuration from the device tree Pavel Machek

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=20170304192023.GB31766@amd \
    --to=pavel@ucw.cz \
    --cc=ivo.g.dimitrov.75@gmail.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=pali.rohar@gmail.com \
    --cc=sakari.ailus@iki.fi \
    --cc=sre@kernel.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.