From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Sakari Ailus <sakari.ailus@iki.fi>,
mchehab@kernel.org, kernel list <linux-kernel@vger.kernel.org>,
ivo.g.dimitrov.75@gmail.com, sre@kernel.org,
pali.rohar@gmail.com, linux-media@vger.kernel.org
Subject: Re: [PATCH] omap3isp: add support for CSI1 bus
Date: Mon, 20 Feb 2017 02:59:53 +0200 [thread overview]
Message-ID: <2414221.XNA4JCFMRx@avalon> (raw)
In-Reply-To: <20170215094228.GA8586@amd>
Hi Pavel,
On Wednesday 15 Feb 2017 10:42:29 Pavel Machek wrote:
> Hi!
>
> >> diff --git a/drivers/media/platform/omap3isp/isp.c
> >> b/drivers/media/platform/omap3isp/isp.c index 0321d84..88bc7c6 100644
> >> --- a/drivers/media/platform/omap3isp/isp.c
> >> +++ b/drivers/media/platform/omap3isp/isp.c
> >> @@ -2024,21 +2024,92 @@ enum isp_of_phy {
> >> ISP_OF_PHY_CSIPHY2,
> >> };
> >>
> >> -static int isp_of_parse_node(struct device *dev, struct device_node
> >> *node,
> >> - struct isp_async_subdev *isd)
> >> +void __isp_of_parse_node_csi1(struct device *dev,
> >> + struct isp_ccp2_cfg *buscfg,
> >> + struct v4l2_of_endpoint *vep)
> >
> > This function isn't use anywhere else, you can merge it with
> > isp_of_parse_node_csi1().
>
> I'd prefer not to. First, it will be used separately in future, and
> second, expresions would be uglier.
Where will it be used ? As for the uglier part, I don't agree, otherwise I
wouldn't have proposed it.
> >> +{
> >> + buscfg->lanecfg.clk.pos = vep->bus.mipi_csi1.clock_lane;
> >> + buscfg->lanecfg.clk.pol =
> >> + vep->bus.mipi_csi1.lane_polarity[0];
> >> + dev_dbg(dev, "clock lane polarity %u, pos %u\n",
> >> + buscfg->lanecfg.clk.pol,
> >> + buscfg->lanecfg.clk.pos);
> >> +
> >> + buscfg->lanecfg.data[0].pos = vep->bus.mipi_csi2.data_lanes[0];
> >> + buscfg->lanecfg.data[0].pol =
> >> + vep->bus.mipi_csi2.lane_polarities[1];
> >
> > bus.mipi_csi2 ?
>
> Good catch. Fixed.
>
> >> - ret = v4l2_of_parse_endpoint(node, &vep);
> >> - if (ret)
> >> - return ret;
> >> + if (vep->base.port == ISP_OF_PHY_CSIPHY1)
> >> + buscfg->interface = ISP_INTERFACE_CSI2C_PHY1;
> >> + else
> >> + buscfg->interface = ISP_INTERFACE_CSI2A_PHY2;
> >
> > I would keep this code in the caller to avoid code duplication with
> > isp_of_parse_node_csi1().
>
> Take a closer look. Code in _csi1 is different.
>
> >> break;
> >>
> >> default:
> >> + return -1;
> >
> > Please use the appropriate error code.
>
> Ok.
>
> >> + return 0;
> >> +}
> >> +
> >> +static int isp_of_parse_node_endpoint(struct device *dev,
> >> + struct device_node *node,
> >> + struct isp_async_subdev *isd)
> >> +{
> >> + struct isp_bus_cfg *buscfg;
> >> + struct v4l2_of_endpoint vep;
> >> + int ret;
> >> +
> >> + isd->bus = devm_kzalloc(dev, sizeof(*isd->bus), GFP_KERNEL);
> >
> > Why do you now need to allocate this manually ?
>
> bus is now a pointer.
I've seen that, but why have you changed it ?
> >> + dev_dbg(dev, "parsing endpoint %s, interface %u\n", node->full_name,
> >> + vep.base.port);
> >> +
> >> + if (isp_endpoint_to_buscfg(dev, vep, buscfg))
> >
> > I'm fine splitting the CSI1/CSI2 parsing code to separate functions, but I
> > don't think there's a need to split isp_endpoint_to_buscfg(). You can keep
> > that part inline.
>
> I'd prefer smaller functions here. I tried to read the original and it
> was not too easy.
This function became a kzalloc (which I still don't see why you need it), a
call to v4l2_of_parse_endpoint(), and then isp_endpoint_to_buscfg(). That's
too small to be a function of its own. Please merge
isp_of_parse_node_endpoint() and isp_endpoint_to_buscfg().
> >> diff --git a/drivers/media/platform/omap3isp/ispccp2.c
> >> b/drivers/media/platform/omap3isp/ispccp2.c index ca09523..4edb55a
> >> 100644
> >> --- a/drivers/media/platform/omap3isp/ispccp2.c
> >> +++ b/drivers/media/platform/omap3isp/ispccp2.c
> >> @@ -160,6 +163,33 @@ static int ccp2_if_enable(struct isp_ccp2_device
> >> *ccp2, u8 enable) return ret;
> >>
> >> }
> >>
> >> + if (isp->revision == ISP_REVISION_2_0) {
> >
> > The isp_csiphy.c code checks phy->isp->phy_type for the same purpose,
> > shouldn't you use that too ?
>
> Do you want me to do phy->isp->phy_type == ISP_PHY_TYPE_3430 check
> here? Can do...
Yes that's what I meant.
> >> + buscfg = &((struct isp_bus_cfg *)sensor->host_priv)->bus.ccp2;
> >> +
> >> +
> >
> > One blank line is enough.
>
> Ok.
>
> >> + if (enable) {
> >> + csirxfe = OMAP343X_CONTROL_CSIRXFE_PWRDNZ |
> >> + OMAP343X_CONTROL_CSIRXFE_RESET;
> >> +
> >> + if (buscfg->phy_layer)
> >> + csirxfe |= OMAP343X_CONTROL_CSIRXFE_SELFORM;
> >> +
> >> + if (buscfg->strobe_clk_pol)
> >> + csirxfe |= OMAP343X_CONTROL_CSIRXFE_CSIB_INV;
> >> + } else
> >> + csirxfe = 0;
> >
> > You need curly braces for the else statement too.
>
> Easy enough.
>
> >> +
> >> + regmap_write(isp->syscon, isp->syscon_offset, csirxfe);
> >
> > Isn't this already configured by csiphy_routing_cfg_3430(), called through
> > omap3isp_csiphy_acquire() ? You'll need to add support for the
> > strobe/clock polarity there, but the rest should already be handled.
>
> Let me check...
>
> >> @@ -69,11 +69,15 @@
> >> * @V4L2_MBUS_PARALLEL: parallel interface with hsync and vsync
> >> * @V4L2_MBUS_BT656: parallel interface with embedded
> >> synchronisation, can
> >> * also be used for BT.1120
> > > + * @V4L2_MBUS_CSI1: MIPI CSI-1 serial interface
> > > + * @V4L2_MBUS_CCP2: CCP2 (Compact Camera Port 2)
> >
> > It would help if you could provide, in comments or in the commit message,
> > a few pointers to information about CSI-1 and CCP2.
>
> There's not much good information :-(.
>
> http://electronics.stackexchange.com/questions/134395/differences-between-mi
> pi-csi1-and-mipi-csi2
> >> /**
> >>
> >> + * struct v4l2_of_bus_csi1 - CSI-1/CCP2 data bus structure
> >> + * @clock_inv: polarity of clock/strobe signal
> >> + * false - not inverted, true - inverted
> >> + * @strobe: false - data/clock, true - data/strobe
> >> + * @data_lane: the number of the data lane
> >> + * @clock_lane: the number of the clock lane
> >> + */
> >> +struct v4l2_of_bus_mipi_csi1 {
> >> + bool clock_inv;
> >> + bool strobe;
> >> + bool lane_polarity[2];
> >
> > This field isn't documented.
>
> Yep, automatic checker already told me. Plus, similar field elsewhere
> is called "lane_polarities" but I believe "polarity" is a better name.
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2017-02-20 0:59 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-28 18:30 [PATCH] dt: bindings: Add support for CSI1 bus Pavel Machek
2017-01-02 7:00 ` Sakari Ailus
2017-01-11 21:38 ` Pavel Machek
2017-01-03 20:38 ` Rob Herring
2017-01-04 8:54 ` Sakari Ailus
2017-01-11 22:06 ` Pavel Machek
2017-01-11 22:19 ` Sakari Ailus
2017-01-11 22:53 ` [PATCHv2] " Pavel Machek
2017-01-11 23:55 ` Sebastian Reichel
2017-01-12 12:06 ` Baruch Siach
2017-01-19 21:37 ` Sakari Ailus
2017-01-19 21:49 ` Sakari Ailus
2017-01-20 7:59 ` Ivaylo Dimitrov
2017-01-20 11:46 ` Sakari Ailus
2017-02-03 11:50 ` Pavel Machek
2017-02-03 14:16 ` Sakari Ailus
2017-02-06 9:53 ` Pavel Machek
2017-02-06 9:49 ` Pavel Machek
2017-02-08 8:38 ` Sakari Ailus
2017-02-08 12:57 ` [PATCH] omap3isp: add " Pavel Machek
2017-02-08 18:32 ` kbuild test robot
2017-02-08 21:03 ` Laurent Pinchart
2017-02-15 9:42 ` Pavel Machek
2017-02-20 0:59 ` Laurent Pinchart [this message]
2017-02-20 12:06 ` [PATCH] omap3isp: avoid uninitialized memory Pavel Machek
2017-02-21 11:20 ` Sakari Ailus
2017-03-01 11:45 ` [media] omap3isp: Correctly set IO_OUT_SEL and VP_CLK_POL for CCP2 mode Pavel Machek
2017-03-03 11:13 ` kbuild test robot
2017-03-03 21:48 ` Pavel Machek
2017-03-10 1:24 ` [kbuild-all] " Ye Xiaolong
2017-03-10 2:49 ` Fengguang Wu
2017-03-04 15:15 ` Sakari Ailus
2017-03-04 19:44 ` Pavel Machek
2017-03-02 9:01 ` [PATCH] omap3isp: add support for CSI1 bus Pavel Machek
2017-03-02 10:16 ` [PATCHv2] " Pavel Machek
2017-03-02 11:24 ` Sakari Ailus
2017-03-02 12:38 ` Pavel Machek
2017-03-03 22:17 ` Sakari Ailus
2017-03-04 13:03 ` Sakari Ailus
2017-03-04 15:39 ` Sakari Ailus
2017-03-04 18:44 ` Laurent Pinchart
2017-04-26 21:19 ` [bug] omap3isp: missing support for ENUM_FMT Pavel Machek
2017-04-28 7:59 ` Sakari Ailus
2017-03-04 22:53 ` [PATCHv2] omap3isp: add support for CSI1 bus Pavel Machek
2017-03-05 14:13 ` Pavel Machek
2017-03-06 7:23 ` [PATCH] v4l2-fwnode: Fix clock lane parsing Pavel Machek
2017-03-10 22:54 ` Sakari Ailus
2017-06-13 12:22 ` v4l2-fwnode: status, plans for merge, any branch to merge against? Pavel Machek
2017-06-13 12:47 ` Sakari Ailus
2017-06-13 21:09 ` Pavel Machek
2017-06-14 11:06 ` Sakari Ailus
2017-06-14 19:41 ` Pavel Machek
2017-06-15 22:07 ` Sakari Ailus
2017-06-16 6:23 ` Pavel Machek
2017-06-15 22:22 ` n900 camera on v4.12-rc (was Re: v4l2-fwnode: status, plans for merge, any branch to merge against?) Pavel Machek
2017-06-15 22:23 ` [PATCH] omap3isp: fix compilation Pavel Machek
2017-06-16 8:03 ` Hans Verkuil
2017-06-16 11:59 ` Sakari Ailus
2017-07-04 15:08 ` v4l2-fwnode: status, plans for merge, any branch to merge against? Pavel Machek
2017-07-05 9:32 ` Sakari Ailus
2017-07-06 10:38 ` Pavel Machek
2017-07-11 16:12 ` Sakari Ailus
2017-07-12 16:32 ` Pavel Machek
2017-07-12 20:31 ` omap3isp: is capture mode working? what hardware? was " Pavel Machek
2017-03-06 7:57 ` [RFC] omap3isp: add support for CSI1 bus Pavel Machek
2017-03-10 13:41 ` Pavel Machek
2017-04-11 18:15 ` Pavel Machek
2017-05-03 7:43 ` [PATCHv2] " Sakari Ailus
2017-05-03 19:50 ` Pavel Machek
2017-05-03 20:24 ` Pavel Machek
2017-03-02 12:45 ` [PATCH] omap3isp: wait for regulators to come up Pavel Machek
2017-03-02 14:46 ` Laurent Pinchart
2017-03-04 15:33 ` Sakari Ailus
2017-02-15 10:23 ` [PATCH] omap3isp: add support for CSI1 bus Pavel Machek
2017-02-15 16:57 ` Sebastian Reichel
2017-02-15 17:06 ` Pavel Machek
2017-02-08 23:03 ` [PATCHv2] dt: bindings: Add " 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=2414221.XNA4JCFMRx@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=ivo.g.dimitrov.75@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@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).