All of lore.kernel.org
 help / color / mirror / Atom feed
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

  reply	other threads:[~2017-02-20  0:59 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
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
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=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 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.