From: Sakari Ailus <sakari.ailus@iki.fi>
To: Pavel Machek <pavel@ucw.cz>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
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: [PATCHv2] omap3isp: add support for CSI1 bus
Date: Thu, 2 Mar 2017 13:24:02 +0200 [thread overview]
Message-ID: <20170302112401.GF3220@valkosipuli.retiisi.org.uk> (raw)
In-Reply-To: <20170302101603.GE27818@amd>
Hi Pavel,
On Thu, Mar 02, 2017 at 11:16:04AM +0100, Pavel Machek wrote:
> Hi!
>
> > > > >> +++ 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.
> >
> > Ok, that's something I can do.
> >
> > But code is still somewhat "interesting". Code in omap3isp_csiphy_acquire()
> > assumes csi2, and I don't need most of it.. so I'll just not use it,
> > but it looks strange. I'll post new patch shortly.
>
> Ok, how about this one?
>
> Pavel
>
> omap3isp: add rest of CSI1 support
>
> CSI1 needs one more bit to be set up. Do just that.
>
> It is not as straightforward as I'd like, see the comments in the code
> for explanation.
>
> Signed-off-by: Pavel Machek <pavel@ucw.cz>
>
> index ca09523..b6e055e 100644
> --- a/drivers/media/platform/omap3isp/ispccp2.c
> +++ b/drivers/media/platform/omap3isp/ispccp2.c
> @@ -21,6 +23,7 @@
> #include <linux/mutex.h>
> #include <linux/uaccess.h>
> #include <linux/regulator/consumer.h>
> +#include <linux/regmap.h>
>
> #include "isp.h"
> #include "ispreg.h"
> @@ -160,6 +163,22 @@ static int ccp2_if_enable(struct isp_ccp2_device *ccp2, u8 enable)
> return ret;
> }
>
> + if (isp->phy_type == ISP_PHY_TYPE_3430) {
> + struct media_pad *pad;
> + struct v4l2_subdev *sensor;
> + const struct isp_ccp2_cfg *buscfg;
> +
> + pad = media_entity_remote_pad(&ccp2->pads[CCP2_PAD_SINK]);
> + sensor = media_entity_to_v4l2_subdev(pad->entity);
> + /* Struct isp_bus_cfg has union inside */
> + buscfg = &((struct isp_bus_cfg *)sensor->host_priv)->bus.ccp2;
> +
> + csiphy_routing_cfg_3430(&isp->isp_csiphy2,
> + ISP_INTERFACE_CCP2B_PHY1,
> + enable, !!buscfg->phy_layer,
> + buscfg->strobe_clk_pol);
You should do this through omap3isp_csiphy_acquire(), and not call
csiphy_routing_cfg_3430() directly from here.
> + }
> +
> /* Enable/Disable all the LCx channels */
> for (i = 0; i < CCP2_LCx_CHANS_NUM; i++)
> isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCx_CTRL(i),
> @@ -1137,10 +1159,19 @@ int omap3isp_ccp2_init(struct isp_device *isp)
> if (isp->revision == ISP_REVISION_2_0) {
> ccp2->vdds_csib = devm_regulator_get(isp->dev, "vdds_csib");
> if (IS_ERR(ccp2->vdds_csib)) {
> + if (PTR_ERR(ccp2->vdds_csib) == -EPROBE_DEFER)
> + return -EPROBE_DEFER;
This should go to a separate patch.
> dev_dbg(isp->dev,
> "Could not get regulator vdds_csib\n");
> ccp2->vdds_csib = NULL;
> }
> + /*
> + * If we set up ccp2->phy here,
> + * omap3isp_csiphy_acquire() will go ahead and assume
> + * csi2, dereferencing some null pointers.
> + *
> + * ccp2->phy = &isp->isp_csiphy2;
That needs to be fixed separately.
> + */
> } else if (isp->revision == ISP_REVISION_15_0) {
> ccp2->phy = &isp->isp_csiphy1;
> }
> diff --git a/drivers/media/platform/omap3isp/ispcsiphy.c b/drivers/media/platform/omap3isp/ispcsiphy.c
> index 871d4fe..897097b 100644
> --- a/drivers/media/platform/omap3isp/ispcsiphy.c
> +++ b/drivers/media/platform/omap3isp/ispcsiphy.c
> @@ -68,8 +68,8 @@ static void csiphy_routing_cfg_3630(struct isp_csiphy *phy,
> regmap_write(phy->isp->syscon, phy->isp->syscon_offset, reg);
> }
>
> -static void csiphy_routing_cfg_3430(struct isp_csiphy *phy, u32 iface, bool on,
> - bool ccp2_strobe)
> +void csiphy_routing_cfg_3430(struct isp_csiphy *phy, u32 iface, bool on,
> + bool ccp2_strobe, bool strobe_clk_pol)
> {
> u32 csirxfe = OMAP343X_CONTROL_CSIRXFE_PWRDNZ
> | OMAP343X_CONTROL_CSIRXFE_RESET;
> @@ -85,6 +85,9 @@ static void csiphy_routing_cfg_3430(struct isp_csiphy *phy, u32 iface, bool on,
>
> if (ccp2_strobe)
> csirxfe |= OMAP343X_CONTROL_CSIRXFE_SELFORM;
> +
> + if (strobe_clk_pol)
> + csirxfe |= OMAP343X_CONTROL_CSIRXFE_CSIB_INV;
>
> regmap_write(phy->isp->syscon, phy->isp->syscon_offset, csirxfe);
> }
> @@ -108,7 +111,7 @@ static void csiphy_routing_cfg(struct isp_csiphy *phy,
> if (phy->isp->phy_type == ISP_PHY_TYPE_3630 && on)
> return csiphy_routing_cfg_3630(phy, iface, ccp2_strobe);
> if (phy->isp->phy_type == ISP_PHY_TYPE_3430)
> - return csiphy_routing_cfg_3430(phy, iface, on, ccp2_strobe);
> + return csiphy_routing_cfg_3430(phy, iface, on, ccp2_strobe, false);
> }
>
> /*
> diff --git a/drivers/media/platform/omap3isp/ispcsiphy.h b/drivers/media/platform/omap3isp/ispcsiphy.h
> index 28b63b2..88c5c1e8 100644
> --- a/drivers/media/platform/omap3isp/ispcsiphy.h
> +++ b/drivers/media/platform/omap3isp/ispcsiphy.h
> @@ -40,4 +40,7 @@ int omap3isp_csiphy_acquire(struct isp_csiphy *phy);
> void omap3isp_csiphy_release(struct isp_csiphy *phy);
> int omap3isp_csiphy_init(struct isp_device *isp);
>
> +void csiphy_routing_cfg_3430(struct isp_csiphy *phy, u32 iface, bool on,
> + bool ccp2_strobe, bool strobe_clk_pol);
> +
> #endif /* OMAP3_ISP_CSI_PHY_H */
>
>
>
--
Kind regards,
Sakari Ailus
e-mail: sakari.ailus@iki.fi XMPP: sailus@retiisi.org.uk
next prev parent reply other threads:[~2017-03-02 13:08 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20161228183036.GA13139@amd>
[not found] ` <20170111225335.GA21553@amd>
[not found] ` <20170206094956.GA17974@amd>
[not found] ` <20170208083813.GG13854@valkosipuli.retiisi.org.uk>
2017-02-08 12:57 ` [PATCH] omap3isp: add support for CSI1 bus 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
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 [this message]
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
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=20170302112401.GF3220@valkosipuli.retiisi.org.uk \
--to=sakari.ailus@iki.fi \
--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=pavel@ucw.cz \
--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).