All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
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: Wed, 15 Feb 2017 10:42:29 +0100	[thread overview]
Message-ID: <20170215094228.GA8586@amd> (raw)
In-Reply-To: <10545906.Gxg3yScdu4@avalon>

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

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.

> > +{
> > +	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.

> > +	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.

> > 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...

> > +		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-mipi-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.

									Pavel

-- 
(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 --]

  reply	other threads:[~2017-02-15  9:42 UTC|newest]

Thread overview: 91+ 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-02  7:00   ` Sakari Ailus
2017-01-11 21:38   ` Pavel Machek
2017-01-03 20:38 ` Rob Herring
2017-01-03 20:38   ` Rob Herring
2017-01-04  8:54   ` Sakari Ailus
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 22:53   ` Pavel Machek
2017-01-11 23:55   ` Sebastian Reichel
2017-01-11 23:55     ` Sebastian Reichel
2017-01-12 12:06   ` Baruch Siach
2017-01-12 12:06     ` Baruch Siach
2017-01-19 21:37     ` Sakari Ailus
2017-01-19 21:49   ` Sakari Ailus
2017-01-19 21:49     ` Sakari Ailus
     [not found]     ` <20170119214905.GD3205-S+BSfZ9RZZmRSg0ZkenSGLdO1Tsj/99ntUK59QYPAWc@public.gmane.org>
2017-01-20  7:59       ` Ivaylo Dimitrov
2017-01-20  7:59         ` Ivaylo Dimitrov
     [not found]         ` <cf372233-f047-6e2c-01eb-02e30e6b2de5-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-20 11:46           ` Sakari Ailus
2017-01-20 11:46             ` Sakari Ailus
2017-02-03 11:50       ` Pavel Machek
2017-02-03 11:50         ` Pavel Machek
2017-02-03 14:16         ` Sakari Ailus
2017-02-03 14:16           ` Sakari Ailus
     [not found]           ` <20170203141649.GC12291-S+BSfZ9RZZmRSg0ZkenSGLdO1Tsj/99ntUK59QYPAWc@public.gmane.org>
2017-02-06  9:53             ` Pavel Machek
2017-02-06  9:53               ` Pavel Machek
2017-02-06  9:49   ` 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 [this message]
2017-02-20  0:59             ` Laurent Pinchart
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
2017-02-08 23:03       ` 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=20170215094228.GA8586@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.