From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: pavel@ucw.cz, linux-media@vger.kernel.org
Subject: Re: [PATCH 2/7] omap3isp: Parse CSI1 configuration from the device tree
Date: Tue, 18 Jul 2017 12:07:59 +0300 [thread overview]
Message-ID: <1746594.69D4hAlVNH@avalon> (raw)
In-Reply-To: <20170717220116.17886-3-sakari.ailus@linux.intel.com>
Hi Sakari,
Thank you for the patch.
On Tuesday 18 Jul 2017 01:01:11 Sakari Ailus wrote:
> From: Pavel Machek <pavel@ucw.cz>
>
> Add support for parsing CSI1 configuration.
>
> Signed-off-by: Pavel Machek <pavel@ucw.cz>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> drivers/media/platform/omap3isp/isp.c | 106 ++++++++++++++++++--------
> drivers/media/platform/omap3isp/omap3isp.h | 1 +
> 2 files changed, 80 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/media/platform/omap3isp/isp.c
> b/drivers/media/platform/omap3isp/isp.c index 441eba1e02eb..80ed5a5f862a
> 100644
> --- a/drivers/media/platform/omap3isp/isp.c
> +++ b/drivers/media/platform/omap3isp/isp.c
> @@ -2017,6 +2017,7 @@ static int isp_fwnode_parse(struct device *dev, struct
> fwnode_handle *fwnode, struct v4l2_fwnode_endpoint vep;
> unsigned int i;
> int ret;
> + bool csi1 = false;
>
> ret = v4l2_fwnode_endpoint_parse(fwnode, &vep);
> if (ret)
> @@ -2045,41 +2046,92 @@ static int isp_fwnode_parse(struct device *dev,
> struct fwnode_handle *fwnode,
>
> case ISP_OF_PHY_CSIPHY1:
> case ISP_OF_PHY_CSIPHY2:
> - /* FIXME: always assume CSI-2 for now. */
> + switch (vep.bus_type) {
> + case V4L2_MBUS_CCP2:
> + case V4L2_MBUS_CSI1:
> + dev_dbg(dev, "csi1/ccp2 configuration\n");
Nitpicking, I would write it "CSI1/CCP2".
> + csi1 = true;
> + break;
> + case V4L2_MBUS_CSI2:
> + dev_dbg(dev, "csi2 configuration\n");
And "CSI2" here.
> + csi1 = false;
> + break;
> + default:
> + dev_err(dev, "unsupported bus type %u\n",
> + vep.bus_type);
> + return -EINVAL;
> + }
> +
> switch (vep.base.port) {
> case ISP_OF_PHY_CSIPHY1:
> - buscfg->interface = ISP_INTERFACE_CSI2C_PHY1;
> + if (csi1)
> + buscfg->interface = ISP_INTERFACE_CCP2B_PHY1;
> + else
> + buscfg->interface = ISP_INTERFACE_CSI2C_PHY1;
> break;
> case ISP_OF_PHY_CSIPHY2:
> - buscfg->interface = ISP_INTERFACE_CSI2A_PHY2;
> + if (csi1)
> + buscfg->interface = ISP_INTERFACE_CCP2B_PHY2;
> + else
> + buscfg->interface = ISP_INTERFACE_CSI2A_PHY2;
> break;
> }
> - buscfg->bus.csi2.lanecfg.clk.pos =
vep.bus.mipi_csi2.clock_lane;
> - buscfg->bus.csi2.lanecfg.clk.pol =
> - vep.bus.mipi_csi2.lane_polarities[0];
> - dev_dbg(dev, "clock lane polarity %u, pos %u\n",
> - buscfg->bus.csi2.lanecfg.clk.pol,
> - buscfg->bus.csi2.lanecfg.clk.pos);
> -
> - buscfg->bus.csi2.num_data_lanes =
> - vep.bus.mipi_csi2.num_data_lanes;
> -
> - for (i = 0; i < buscfg->bus.csi2.num_data_lanes; i++) {
> - buscfg->bus.csi2.lanecfg.data[i].pos =
> - vep.bus.mipi_csi2.data_lanes[i];
> - buscfg->bus.csi2.lanecfg.data[i].pol =
> - vep.bus.mipi_csi2.lane_polarities[i + 1];
> + if (csi1) {
> + buscfg->bus.ccp2.lanecfg.clk.pos =
> + vep.bus.mipi_csi1.clock_lane;
> + buscfg->bus.ccp2.lanecfg.clk.pol =
> + vep.bus.mipi_csi1.lane_polarity[0];
> + dev_dbg(dev, "clock lane polarity %u, pos %u\n",
> + buscfg->bus.ccp2.lanecfg.clk.pol,
> + buscfg->bus.ccp2.lanecfg.clk.pos);
> +
> + buscfg->bus.ccp2.lanecfg.data[0].pos =
> + vep.bus.mipi_csi1.data_lane;
> + buscfg->bus.ccp2.lanecfg.data[0].pol =
> + vep.bus.mipi_csi1.lane_polarity[1];
> +
> dev_dbg(dev, "data lane %u polarity %u, pos %u\n", i,
> - buscfg->bus.csi2.lanecfg.data[i].pol,
> - buscfg->bus.csi2.lanecfg.data[i].pos);
> + buscfg->bus.ccp2.lanecfg.data[0].pol,
> + buscfg->bus.ccp2.lanecfg.data[0].pos);
> +
> + buscfg->bus.ccp2.strobe_clk_pol =
> + vep.bus.mipi_csi1.clock_inv;
> + buscfg->bus.ccp2.phy_layer = vep.bus.mipi_csi1.strobe;
> + buscfg->bus.ccp2.ccp2_mode =
> + vep.bus_type == V4L2_MBUS_CCP2;
> + buscfg->bus.ccp2.vp_clk_pol = 1;
> +
> + buscfg->bus.ccp2.crc = 1;
> + } else {
> + buscfg->bus.csi2.lanecfg.clk.pos =
> + vep.bus.mipi_csi2.clock_lane;
> + buscfg->bus.csi2.lanecfg.clk.pol =
> + vep.bus.mipi_csi2.lane_polarities[0];
> + dev_dbg(dev, "clock lane polarity %u, pos %u\n",
> + buscfg->bus.csi2.lanecfg.clk.pol,
> + buscfg->bus.csi2.lanecfg.clk.pos);
> +
> + buscfg->bus.csi2.num_data_lanes =
> + vep.bus.mipi_csi2.num_data_lanes;
> +
> + for (i = 0; i < buscfg->bus.csi2.num_data_lanes; i++)
{
> + buscfg->bus.csi2.lanecfg.data[i].pos =
> + vep.bus.mipi_csi2.data_lanes[i];
> + buscfg->bus.csi2.lanecfg.data[i].pol =
> + vep.bus.mipi_csi2.lane_polarities[i +
1];
> + dev_dbg(dev,
> + "data lane %u polarity %u, pos %u\n",
i,
> + buscfg->bus.csi2.lanecfg.data[i].pol,
> + buscfg->bus.csi2.lanecfg.data[i].pos);
> + }
> + /*
> + * FIXME: now we assume the CRC is always there.
> + * Implement a way to obtain this information from the
> + * sensor. Frame descriptors, perhaps?
> + */
> +
Extra blank line. I would move it right before the comment.
With these small issues fixed,
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> + buscfg->bus.csi2.crc = 1;
> }
> -
> - /*
> - * FIXME: now we assume the CRC is always there.
> - * Implement a way to obtain this information from the
> - * sensor. Frame descriptors, perhaps?
> - */
> - buscfg->bus.csi2.crc = 1;
> break;
>
> default:
> diff --git a/drivers/media/platform/omap3isp/omap3isp.h
> b/drivers/media/platform/omap3isp/omap3isp.h index
> 3c26f9a3f508..672a9cf5aa4d 100644
> --- a/drivers/media/platform/omap3isp/omap3isp.h
> +++ b/drivers/media/platform/omap3isp/omap3isp.h
> @@ -108,6 +108,7 @@ struct isp_ccp2_cfg {
> unsigned int ccp2_mode:1;
> unsigned int phy_layer:1;
> unsigned int vpclk_div:2;
> + unsigned int vp_clk_pol:1;
> struct isp_csiphy_lanes_cfg lanecfg;
> };
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2017-07-18 9:07 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-17 22:01 [PATCH 0/7] Omap3isp CCP2 support Sakari Ailus
2017-07-17 22:01 ` [PATCH 1/7] omap3isp: Ignore endpoints with invalid configuration Sakari Ailus
2017-07-17 23:03 ` Sebastian Reichel
2017-07-18 19:37 ` Sakari Ailus
2017-07-18 9:02 ` Laurent Pinchart
2017-07-17 22:01 ` [PATCH 2/7] omap3isp: Parse CSI1 configuration from the device tree Sakari Ailus
2017-07-18 8:57 ` Sebastian Reichel
2017-07-18 9:07 ` Laurent Pinchart [this message]
2017-07-17 22:01 ` [PATCH 3/7] omap3isp: Correctly set IO_OUT_SEL and VP_CLK_POL for CCP2 mode Sakari Ailus
2017-07-17 22:01 ` [PATCH 4/7] omap3isp: Return -EPROBE_DEFER if the required regulators can't be obtained Sakari Ailus
2017-07-18 8:52 ` Sebastian Reichel
2017-07-18 9:09 ` Laurent Pinchart
2017-07-18 10:03 ` Pavel Machek
2017-07-18 10:08 ` Laurent Pinchart
2017-07-18 10:17 ` Sakari Ailus
2017-07-18 21:02 ` Pavel Machek
2017-07-18 21:16 ` Sakari Ailus
2017-07-18 21:27 ` Pavel Machek
2017-07-18 21:46 ` Sakari Ailus
2017-07-20 12:31 ` Pavel Machek
2017-07-17 22:01 ` [PATCH 5/7] omap3isp: Always initialise isp and mutex for csiphy1 Sakari Ailus
2017-07-17 22:01 ` [PATCH 6/7] omap3isp: Correctly put the last iterated endpoint fwnode always Sakari Ailus
2017-07-18 8:40 ` Laurent Pinchart
2017-07-18 19:40 ` Sakari Ailus
2017-07-17 22:01 ` [PATCH 7/7] omap3isp: Skip CSI-2 receiver initialisation in CCP2 configuration Sakari Ailus
2017-07-18 8:54 ` Laurent Pinchart
2017-07-18 19:41 ` Sakari Ailus
2017-07-18 10:25 ` [PATCH 0/7] Omap3isp CCP2 support 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=1746594.69D4hAlVNH@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=sakari.ailus@linux.intel.com \
/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.