Hi Laurent,
On Sun, Mar 08, 2015 at 01:49:26AM +0200, Laurent Pinchart wrote:
> Hi Sakari,
>
> Thank you for the patch.
>
> On Saturday 07 March 2015 23:41:10 Sakari Ailus wrote:
> > Add lane_polarity field to struct v4l2_of_bus_mipi_csi2 and write the
> > contents of the lane polarity property to it. The field tells the polarity
> > of the physical lanes starting from the first one. Any unused lanes are
> > ignored, i.e. only the polarity of the used lanes is specified.
> >
> > Signed-off-by: Sakari Ailus <[email protected]>
> > ---
> > drivers/media/v4l2-core/v4l2-of.c | 21 ++++++++++++++++-----
> > include/media/v4l2-of.h | 3 +++
> > 2 files changed, 19 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/media/v4l2-core/v4l2-of.c
> > b/drivers/media/v4l2-core/v4l2-of.c index b4ed9a9..a7a855e 100644
> > --- a/drivers/media/v4l2-core/v4l2-of.c
> > +++ b/drivers/media/v4l2-core/v4l2-of.c
> > @@ -23,7 +23,6 @@ static void v4l2_of_parse_csi_bus(const struct device_node
> > *node, struct v4l2_of_endpoint *endpoint)
> > {
> > struct v4l2_of_bus_mipi_csi2 *bus = &endpoint->bus.mipi_csi2;
> > - u32 data_lanes[ARRAY_SIZE(bus->data_lanes)];
> > struct property *prop;
> > bool have_clk_lane = false;
> > unsigned int flags = 0;
> > @@ -34,14 +33,26 @@ static void v4l2_of_parse_csi_bus(const struct
> > device_node *node, const __be32 *lane = NULL;
> > int i;
> >
> > - for (i = 0; i < ARRAY_SIZE(data_lanes); i++) {
> > - lane = of_prop_next_u32(prop, lane, &data_lanes[i]);
> > + for (i = 0; i < ARRAY_SIZE(bus->data_lanes); i++) {
> > + lane = of_prop_next_u32(prop, lane, &v);
> > if (!lane)
> > break;
> > + bus->data_lanes[i] = v;
> > }
> > bus->num_data_lanes = i;
> > - while (i--)
> > - bus->data_lanes[i] = data_lanes[i];
> > + }
> > +
> > + prop = of_find_property(node, "lane-polarity", NULL);
> > + if (prop) {
> > + const __be32 *polarity = NULL;
> > + int i;
>
> Could you please use unsigned int instead of int as the loop index can't have
> negative value ? Feel free to fix the index in the previous loop too :-)
Fixed both.
> > +
> > + for (i = 0; i < ARRAY_SIZE(bus->lane_polarity); i++) {
> > + polarity = of_prop_next_u32(prop, polarity, &v);
> > + if (!polarity)
> > + break;
> > + bus->lane_polarity[i] = v;
> > + }
>
> Should we check that i == num_data_lines + 1 ?
Good question. I think I'd just replace this with
of_property_read_u32_array() instead, how about that? Then there would have
to be at least as many lane polarities defined as there are lanes (data and
clock). Defining more wouldn't be an error.
--
Regards,
Sakari Ailus
e-mail: [email protected] XMPP: [email protected]
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html