omap3isp: add support for CSI1 bus
Commit Message
Hi!
> > + 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.
>
> > +
> > + 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.
It seems csiphy_routing_cfg_3430 is not called at all. I added
printks, but they don't trigger. If you have an idea what is going on
there, it would help...
Pavel
Comments
Hi,
On Wed, Feb 15, 2017 at 11:23:01AM +0100, Pavel Machek wrote:
> It seems csiphy_routing_cfg_3430 is not called at all. I added
> printks, but they don't trigger. If you have an idea what is going on
> there, it would help...
You added printk to csiphy_routing_cfg_3630 instead of csiphy_routing_cfg_3430
and N900 has OMAP3430. Function should be called when you start (or
stop) using the camera:
csiphy_routing_cfg_3430(...)
csiphy_routing_cfg(...)
omap3isp_csiphy_config(...)
omap3isp_csiphy_acquire(...) & omap3isp_csiphy_release(...)
ccp2_s_stream(...)
-- Sebastian
> diff --git a/drivers/media/platform/omap3isp/ispcsiphy.c b/drivers/media/platform/omap3isp/ispcsiphy.c
> index 6b814e1..fe9303a 100644
> --- a/drivers/media/platform/omap3isp/ispcsiphy.c
> +++ b/drivers/media/platform/omap3isp/ispcsiphy.c
> @@ -30,6 +30,8 @@ static void csiphy_routing_cfg_3630(struct isp_csiphy *phy,
> u32 reg;
> u32 shift, mode;
>
> + printk("routing cfg 3630: iface %d, %d\n", iface, ISP_INTERFACE_CCP2B_PHY1);
> +
> regmap_read(phy->isp->syscon, phy->isp->syscon_offset, ®);
>
> switch (iface) {
> @@ -74,6 +76,9 @@ static void csiphy_routing_cfg_3430(struct isp_csiphy *phy, u32 iface, bool on,
> u32 csirxfe = OMAP343X_CONTROL_CSIRXFE_PWRDNZ
> | OMAP343X_CONTROL_CSIRXFE_RESET;
>
> + /* FIXME: can this be used instead of if (isp->revision) in ispccp2.c? */
> +
> + printk("routing cfg: iface %d, %d\n", iface, ISP_INTERFACE_CCP2B_PHY1);
> /* Only the CCP2B on PHY1 is configurable. */
> if (iface != ISP_INTERFACE_CCP2B_PHY1)
> return;
> @@ -105,6 +110,7 @@ static void csiphy_routing_cfg(struct isp_csiphy *phy,
> enum isp_interface_type iface, bool on,
> bool ccp2_strobe)
> {
> + printk("csiphy_routing_cfg\n");
> 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)
On Wed 2017-02-15 17:57:46, Sebastian Reichel wrote:
> Hi,
>
> On Wed, Feb 15, 2017 at 11:23:01AM +0100, Pavel Machek wrote:
> > It seems csiphy_routing_cfg_3430 is not called at all. I added
> > printks, but they don't trigger. If you have an idea what is going on
> > there, it would help...
>
> You added printk to csiphy_routing_cfg_3630 instead of csiphy_routing_cfg_3430
> and N900 has OMAP3430. Function should be called when you start (or
> stop) using the camera:
>
> csiphy_routing_cfg_3430(...)
> csiphy_routing_cfg(...)
> omap3isp_csiphy_config(...)
> omap3isp_csiphy_acquire(...) & omap3isp_csiphy_release(...)
> ccp2_s_stream(...)
Take another look, I believe I added printk to both of them.
Thanks for the expected backtrace, that should help figuring it out.
> -- Sebastian
>
> > diff --git a/drivers/media/platform/omap3isp/ispcsiphy.c b/drivers/media/platform/omap3isp/ispcsiphy.c
> > index 6b814e1..fe9303a 100644
> > --- a/drivers/media/platform/omap3isp/ispcsiphy.c
> > +++ b/drivers/media/platform/omap3isp/ispcsiphy.c
> > @@ -30,6 +30,8 @@ static void csiphy_routing_cfg_3630(struct isp_csiphy *phy,
> > u32 reg;
> > u32 shift, mode;
> >
> > + printk("routing cfg 3630: iface %d, %d\n", iface, ISP_INTERFACE_CCP2B_PHY1);
> > +
> > regmap_read(phy->isp->syscon, phy->isp->syscon_offset, ®);
> >
> > switch (iface) {
> > @@ -74,6 +76,9 @@ static void csiphy_routing_cfg_3430(struct isp_csiphy *phy, u32 iface, bool on,
> > u32 csirxfe = OMAP343X_CONTROL_CSIRXFE_PWRDNZ
> > | OMAP343X_CONTROL_CSIRXFE_RESET;
> >
> > + /* FIXME: can this be used instead of if (isp->revision) in ispccp2.c? */
> > +
> > + printk("routing cfg: iface %d, %d\n", iface, ISP_INTERFACE_CCP2B_PHY1);
> > /* Only the CCP2B on PHY1 is configurable. */
> > if (iface != ISP_INTERFACE_CCP2B_PHY1)
> > return;
> > @@ -105,6 +110,7 @@ static void csiphy_routing_cfg(struct isp_csiphy *phy,
> > enum isp_interface_type iface, bool on,
> > bool ccp2_strobe)
> > {
> > + printk("csiphy_routing_cfg\n");
> > 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)
@@ -30,6 +30,8 @@ static void csiphy_routing_cfg_3630(struct isp_csiphy *phy,
u32 reg;
u32 shift, mode;
+ printk("routing cfg 3630: iface %d, %d\n", iface, ISP_INTERFACE_CCP2B_PHY1);
+
regmap_read(phy->isp->syscon, phy->isp->syscon_offset, ®);
switch (iface) {
@@ -74,6 +76,9 @@ static void csiphy_routing_cfg_3430(struct isp_csiphy *phy, u32 iface, bool on,
u32 csirxfe = OMAP343X_CONTROL_CSIRXFE_PWRDNZ
| OMAP343X_CONTROL_CSIRXFE_RESET;
+ /* FIXME: can this be used instead of if (isp->revision) in ispccp2.c? */
+
+ printk("routing cfg: iface %d, %d\n", iface, ISP_INTERFACE_CCP2B_PHY1);
/* Only the CCP2B on PHY1 is configurable. */
if (iface != ISP_INTERFACE_CCP2B_PHY1)
return;
@@ -105,6 +110,7 @@ static void csiphy_routing_cfg(struct isp_csiphy *phy,
enum isp_interface_type iface, bool on,
bool ccp2_strobe)
{
+ printk("csiphy_routing_cfg\n");
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)