Re: [RFC 13/17] omap3isp: Configure CSI-2 phy based on platform data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sakari,

On Saturday 07 January 2012 23:51:24 Sakari Ailus wrote:
> Laurent Pinchart wrote:
> > On Tuesday 20 December 2011 21:28:05 Sakari Ailus wrote:
> >> From: Sakari Ailus <sakari.ailus@xxxxxx>
> >> 
> >> Configure CSI-2 phy based on platform data in the ISP driver rather than
> >> in platform code.
> >> 
> >> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxx>

[snip]

> >> diff --git a/drivers/media/video/omap3isp/ispcsiphy.c
> >> b/drivers/media/video/omap3isp/ispcsiphy.c index 5be37ce..f027ece 100644
> >> --- a/drivers/media/video/omap3isp/ispcsiphy.c
> >> +++ b/drivers/media/video/omap3isp/ispcsiphy.c
> >> @@ -28,6 +28,8 @@
> >> 
> >>  #include <linux/device.h>
> >>  #include <linux/regulator/consumer.h>
> >> 
> >> +#include "../../../../arch/arm/mach-omap2/control.h"
> >> +
> > 
> > #include <mach/control.h>
> > 
> > (untested) ?
> 
> I'm afraid it won't work. The above directory isn't in any include path
> and likely shouldn't be. That file is included locally elsewhere, I
> believe.

You're right, I spoke too fast.

> I wonder what would be the right way to access that register definition
> I need from the file:
> 
> 	OMAP343X_CTRL_BASE
> 	OMAP3630_CONTROL_CAMERA_PHY_CTRL

Maybe the file (or part of it) should be moved to an include directory ?

> >>  #include "isp.h"
> >>  #include "ispreg.h"
> >>  #include "ispcsiphy.h"
> >> 
> >> @@ -138,15 +140,78 @@ static void csiphy_dphy_config(struct isp_csiphy
> >> *phy) isp_reg_writel(phy->isp, reg, phy->phy_regs, ISPCSIPHY_REG1);
> >> 
> >>  }
> >> 
> >> -static int csiphy_config(struct isp_csiphy *phy,
> >> -			 struct isp_csiphy_dphy_cfg *dphy,
> >> -			 struct isp_csiphy_lanes_cfg *lanes)
> >> +/*
> >> + * TCLK values are OK at their reset values
> >> + */
> >> +#define TCLK_TERM	0
> >> +#define TCLK_MISS	1
> >> +#define TCLK_SETTLE	14
> >> +
> >> +int omap3isp_csiphy_config(struct isp_device *isp,
> >> +			   struct v4l2_subdev *csi2_subdev,
> >> +			   struct v4l2_subdev *sensor,
> >> +			   struct v4l2_mbus_framefmt *sensor_fmt)
> >> 
> >>  {
> >> 
> >> +	struct isp_v4l2_subdevs_group *subdevs = sensor->host_priv;
> >> +	struct isp_csi2_device *csi2 = v4l2_get_subdevdata(csi2_subdev);
> >> +	struct isp_csiphy_dphy_cfg csi2phy;
> >> +	int csi2_ddrclk_khz;
> >> +	struct isp_csiphy_lanes_cfg *lanes;
> >> 
> >>  	unsigned int used_lanes = 0;
> >>  	unsigned int i;
> >> 
> >> +	u32 cam_phy_ctrl;
> >> +
> >> +	if (subdevs->interface == ISP_INTERFACE_CCP2B_PHY1
> >> +	    || subdevs->interface == ISP_INTERFACE_CCP2B_PHY2)
> >> +		lanes = subdevs->bus.ccp2.lanecfg;
> >> +	else
> >> +		lanes = subdevs->bus.csi2.lanecfg;
> > 
> > Shouldn't lane configuration be retrieved from the sensor instead ?
> > Sensors could use different lane configuration depending on the mode.
> > This could also be implemented later when needed, but I don't think it
> > would be too difficult to get it right now.
> 
> I think we'd first need to standardise the CSI-2 bus configuration. I
> don't see a practical need to make the lane configuration dynamic. You
> could just use a lower frequency to achieve the same if you really need to.
> 
> Ideally it might be nice to do but there's really nothing I know that
> required or even benefited from it --- at least for now.

Does this mean that lane configuration needs to be duplicated in board code, 
on for the SMIA++ platform data and one of the OMAP3 ISP platform data ?

-- 
Regards,

Laurent Pinchart
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux