From: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
To: sakari.ailus@iki.fi
Cc: sre@kernel.org, pali.rohar@gmail.com, pavel@ucw.cz,
linux-media@vger.kernel.org
Subject: [RFC PATCH 10/24] v4l: of: Separate lane parsing from CSI-2 bus parameter parsing
Date: Mon, 25 Apr 2016 00:08:10 +0300 [thread overview]
Message-ID: <1461532104-24032-11-git-send-email-ivo.g.dimitrov.75@gmail.com> (raw)
In-Reply-To: <1461532104-24032-1-git-send-email-ivo.g.dimitrov.75@gmail.com>
From: Sakari Ailus <sakari.ailus@iki.fi>
The CSI-1 will need these as well, separate them into a different function.
have_clk_lane and num_data_lanes arguments may be NULL; the CSI-1 bus will
have no use for them.
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
---
drivers/media/v4l2-core/v4l2-of.c | 60 +++++++++++++++++++++++++++++----------
1 file changed, 45 insertions(+), 15 deletions(-)
diff --git a/drivers/media/v4l2-core/v4l2-of.c b/drivers/media/v4l2-core/v4l2-of.c
index 5304137..60bbc5f 100644
--- a/drivers/media/v4l2-core/v4l2-of.c
+++ b/drivers/media/v4l2-core/v4l2-of.c
@@ -25,53 +25,83 @@ enum v4l2_of_bus_type {
V4L2_OF_BUS_TYPE_PARALLEL,
};
-static int v4l2_of_parse_csi2_bus(const struct device_node *node,
- struct v4l2_of_endpoint *endpoint)
+static int v4l2_of_parse_lanes(const struct device_node *node,
+ unsigned char *clock_lane,
+ bool *have_clk_lane,
+ unsigned char *data_lanes,
+ bool *lane_polarities,
+ unsigned short *__num_data_lanes,
+ unsigned int max_data_lanes)
{
- struct v4l2_of_bus_mipi_csi2 *bus = &endpoint->bus.mipi_csi2;
struct property *prop;
- bool have_clk_lane = false;
- unsigned int flags = 0;
+ unsigned short num_data_lanes = 0;
u32 v;
prop = of_find_property(node, "data-lanes", NULL);
if (prop) {
const __be32 *lane = NULL;
- unsigned int i;
- for (i = 0; i < ARRAY_SIZE(bus->data_lanes); i++) {
+ for (num_data_lanes = 0; num_data_lanes < max_data_lanes;
+ num_data_lanes++) {
lane = of_prop_next_u32(prop, lane, &v);
if (!lane)
break;
- bus->data_lanes[i] = v;
+ data_lanes[num_data_lanes] = v;
}
- bus->num_data_lanes = i;
}
+ if (__num_data_lanes)
+ *__num_data_lanes = num_data_lanes;
prop = of_find_property(node, "lane-polarities", NULL);
if (prop) {
const __be32 *polarity = NULL;
unsigned int i;
- for (i = 0; i < ARRAY_SIZE(bus->lane_polarities); i++) {
+ for (i = 0; i < 1 + max_data_lanes; i++) {
polarity = of_prop_next_u32(prop, polarity, &v);
if (!polarity)
break;
- bus->lane_polarities[i] = v;
+ lane_polarities[i] = v;
}
- if (i < 1 + bus->num_data_lanes /* clock + data */) {
+ if (i < 1 + num_data_lanes /* clock + data */) {
pr_warn("%s: too few lane-polarities entries (need %u, got %u)\n",
- node->full_name, 1 + bus->num_data_lanes, i);
+ node->full_name, 1 + num_data_lanes, i);
return -EINVAL;
}
}
+ if (have_clk_lane)
+ *have_clk_lane = false;
+
if (!of_property_read_u32(node, "clock-lanes", &v)) {
- bus->clock_lane = v;
- have_clk_lane = true;
+ *clock_lane = v;
+ if (have_clk_lane)
+ *have_clk_lane = true;
}
+ return 0;
+}
+
+static int v4l2_of_parse_csi2_bus(const struct device_node *node,
+ struct v4l2_of_endpoint *endpoint)
+{
+ struct v4l2_of_bus_mipi_csi2 *bus = &endpoint->bus.mipi_csi2;
+ bool have_clk_lane = false;
+ unsigned int flags = 0;
+ int rval;
+ u32 v;
+
+ rval = v4l2_of_parse_lanes(node, &bus->clock_lane, &have_clk_lane,
+ bus->data_lanes, bus->lane_polarities,
+ &bus->num_data_lanes,
+ ARRAY_SIZE(bus->data_lanes));
+ if (rval)
+ return rval;
+
+ BUILD_BUG_ON(1 + ARRAY_SIZE(bus->data_lanes)
+ != ARRAY_SIZE(bus->lane_polarities));
+
if (of_get_property(node, "clock-noncontinuous", &v))
flags |= V4L2_MBUS_CSI2_NONCONTINUOUS_CLOCK;
else if (have_clk_lane || bus->num_data_lanes > 0)
--
1.9.1
next prev parent reply other threads:[~2016-04-24 21:10 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20160420081427.GZ32125@valkosipuli.retiisi.org.uk>
2016-04-24 21:08 ` [RFC PATCH 00/24] Make Nokia N900 cameras working Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 01/24] V4L fixes Ivaylo Dimitrov
2016-04-24 22:05 ` Pavel Machek
2016-04-25 7:29 ` Hans Verkuil
2016-04-25 13:25 ` Sakari Ailus
2016-04-25 16:32 ` Ivaylo Dimitrov
2016-04-29 7:41 ` Sakari Ailus
2016-04-24 21:08 ` [RFC PATCH 02/24] smiaregs: Generic i2c register writing Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 03/24] et8ek8: Toshiba 5MP sensor driver Ivaylo Dimitrov
2016-05-01 10:44 ` Sakari Ailus
2016-05-01 12:31 ` Ivaylo Dimitrov
2016-05-01 12:32 ` Ivaylo Dimitrov
2016-05-01 12:50 ` Ivaylo Dimitrov
2016-05-01 13:41 ` Sakari Ailus
2016-05-03 14:50 ` [PATCH] [media]: Driver for Toshiba et8ek8 5MP sensor Ivaylo Dimitrov
2016-05-22 10:07 ` Ivaylo Dimitrov
2016-05-24 11:19 ` Pavel Machek
2016-06-04 19:16 ` Ivaylo Dimitrov
2016-06-06 9:04 ` Sylwester Nawrocki
2016-05-25 21:45 ` Sakari Ailus
2016-06-04 19:54 ` Ivaylo Dimitrov
2016-06-09 23:13 ` Sakari Ailus
2016-04-24 21:08 ` [RFC PATCH 04/24] smiapp-pll: Take existing divisor into account in minimum divisor check Ivaylo Dimitrov
2016-05-01 10:45 ` Sakari Ailus
2016-05-03 18:25 ` Ivaylo Dimitrov
2016-05-24 9:09 ` Pali Rohár
2016-05-24 10:17 ` Pavel Machek
2016-04-24 21:08 ` [RFC PATCH 05/24] smiapp: Add smiapp_has_quirk() to tell whether a quirk is implemented Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 06/24] smiapp: Add quirk control support Ivaylo Dimitrov
2016-05-01 10:46 ` Sakari Ailus
2016-05-03 18:32 ` Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 07/24] v4l: of: Call CSI2 bus csi2, not csi Ivaylo Dimitrov
2016-04-29 13:22 ` Pavel Machek
2016-04-24 21:08 ` [RFC PATCH 08/24] v4l: of: Obtain data bus type from bus-type property Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 09/24] v4l: Add CSI1 and CCP2 bus type to enum v4l2_mbus_type Ivaylo Dimitrov
2016-04-29 13:27 ` Pavel Machek
2016-04-24 21:08 ` Ivaylo Dimitrov [this message]
2016-04-24 21:08 ` [RFC PATCH 11/24] dt: bindings: v4l: Add bus-type video interface property Ivaylo Dimitrov
2016-04-29 13:28 ` Pavel Machek
2016-04-24 21:08 ` [RFC PATCH 12/24] dt: bindings: Add CSI1/CCP2 related properties to video-interfaces.txt Ivaylo Dimitrov
2016-04-29 13:39 ` Pavel Machek
2016-04-24 21:08 ` [RFC PATCH 13/24] v4l: of: Support CSI-1 and CCP2 busses Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 14/24] media: et8ek8: add device tree binding document Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 15/24] media: add subdev type for bus switch Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 16/24] media: video-bus-switch: new driver Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 17/24] smiapp: add CCP2 support Ivaylo Dimitrov
2016-05-01 10:57 ` Sakari Ailus
2016-04-24 21:08 ` [RFC PATCH 18/24] v4l2-async: per notifier locking Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 19/24] v4l2_device_register_subdev_nodes: allow calling multiple times Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 20/24] ARM: dts: omap3-n900: enable cameras Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 21/24] omap3isp: dt: Add support for CSI1/CCP2 busses Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 22/24] [media] omap3isp: Correctly set IO_OUT_SEL and VP_CLK_POL for CCP2 mode Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 23/24] [media] omap3isp: Make sure CSI1 interface is enabled in CPP2 mode Ivaylo Dimitrov
2016-04-24 21:08 ` [RFC PATCH 24/24] ARM: dts: omap3-n900: enable cameras - remove invalid entry Ivaylo Dimitrov
2016-04-24 21:55 ` [RFC PATCH 00/24] Make Nokia N900 cameras working Pavel Machek
2016-04-25 6:33 ` Ivaylo Dimitrov
2016-04-25 17:09 ` Pavel Machek
2016-04-25 17:21 ` Ivaylo Dimitrov
2016-04-27 21:07 ` Pavel Machek
2016-04-25 10:40 ` Pali Rohár
2016-04-25 14:06 ` Pavel Machek
2016-04-25 14:09 ` Hans Verkuil
2016-04-27 21:09 ` Pavel Machek
2016-04-25 14:14 ` Pali Rohár
2016-04-25 17:14 ` Pali Rohár
2016-04-25 16:58 ` Pavel Machek
2016-04-25 17:17 ` Ivaylo Dimitrov
2016-04-25 18:40 ` Pavel Machek
2016-04-25 19:17 ` Ivaylo Dimitrov
2016-04-25 20:41 ` Pavel Machek
2016-04-25 20:53 ` Ivaylo Dimitrov
2016-04-25 22:07 ` Pavel Machek
2016-04-26 4:21 ` Ivaylo Dimitrov
2016-04-27 8:30 ` Pavel Machek
2016-04-27 3:08 ` Sebastian Reichel
2016-04-27 5:05 ` Ivaylo Dimitrov
2016-04-27 6:57 ` Ivaylo Dimitrov
2016-04-27 16:42 ` Sebastian Reichel
2016-04-27 16:45 ` Pavel Machek
2016-04-27 16:59 ` Sebastian Reichel
2016-05-02 7:06 ` Pavel Machek
2016-04-27 17:12 ` Ивайло Димитров
2016-04-27 19:05 ` Pavel Machek
2016-04-29 0:05 ` Sebastian Reichel
2016-04-29 17:45 ` Sebastian Reichel
2016-04-29 18:44 ` Ivaylo Dimitrov
2016-05-01 10:37 ` Sakari Ailus
2016-05-01 9:03 ` Pavel Machek
2016-04-27 20:30 ` Pavel Machek
2016-06-17 16:42 ` Nokia N900 cameras -- pipeline setup in python (was Re: [RFC PATCH 00/24] Make Nokia N900 cameras working) Pavel Machek
2016-06-17 17:12 ` Pavel Machek
2016-06-20 17:00 ` Pavel Machek
2016-06-20 20:59 ` Sakari Ailus
2016-06-21 18:05 ` Pavel Machek
2016-06-22 7:22 ` Sakari Ailus
2016-06-22 11:18 ` Pavel Machek
2016-07-01 7:31 ` square-only image on Nokia N900 camera " Pavel Machek
2016-07-01 8:50 ` Pavel Machek
2016-07-01 11:01 ` Pavel Machek
2016-07-01 19:40 ` Pavel Machek
2016-06-24 16:21 ` [RFC PATCH 00/24] Make Nokia N900 cameras working Pavel Machek
2016-08-27 13:48 ` fcam-dev support for new kernels -- " 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=1461532104-24032-11-git-send-email-ivo.g.dimitrov.75@gmail.com \
--to=ivo.g.dimitrov.75@gmail.com \
--cc=linux-media@vger.kernel.org \
--cc=pali.rohar@gmail.com \
--cc=pavel@ucw.cz \
--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 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).