Hi, On Fri, Apr 20, 2018 at 11:44:18AM +0200, Daniel Mack wrote: > Add v4l2 controls to report the pixel and MIPI link rates of each mode. > The camss camera subsystem needs them to set up the correct hardware > clocks. > > Tested on msm8016 based hardware. > > Signed-off-by: Daniel Mack <daniel@xxxxxxxxxx> > --- > drivers/media/i2c/ov5640.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 77 insertions(+) > > diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c > index 96f1564abdf5..78669ed386cd 100644 > --- a/drivers/media/i2c/ov5640.c > +++ b/drivers/media/i2c/ov5640.c > @@ -91,6 +91,20 @@ > #define OV5640_REG_SDE_CTRL5 0x5585 > #define OV5640_REG_AVG_READOUT 0x56a1 > > +#define OV5640_LINK_FREQ_111 0 > +#define OV5640_LINK_FREQ_166 1 > +#define OV5640_LINK_FREQ_222 2 > +#define OV5640_LINK_FREQ_333 3 > +#define OV5640_LINK_FREQ_666 4 > + > +static const s64 link_freq_menu_items[] = { > + 111066666, > + 166600000, > + 222133333, > + 332200000, > + 666400000, > +}; > + > enum ov5640_mode_id { > OV5640_MODE_QCIF_176_144 = 0, > OV5640_MODE_QVGA_320_240, > @@ -167,12 +181,18 @@ struct ov5640_mode_info { > enum ov5640_downsize_mode dn_mode; > u32 width; > u32 height; > + u32 pixel_rate; > + u32 link_freq_idx; > const struct reg_value *reg_data; > u32 reg_data_size; > }; > > struct ov5640_ctrls { > struct v4l2_ctrl_handler handler; > + struct { > + struct v4l2_ctrl *link_freq; > + struct v4l2_ctrl *pixel_rate; > + }; > struct { > struct v4l2_ctrl *auto_exp; > struct v4l2_ctrl *exposure; > @@ -732,6 +752,8 @@ static const struct ov5640_mode_info ov5640_mode_init_data = { > .dn_mode = SUBSAMPLING, > .width = 640, > .height = 480, > + .pixel_rate = 27766666, > + .link_freq_idx = OV5640_LINK_FREQ_111, I'm not sure where this is coming from, but on a parallel sensor I have a quite different pixel rate. I have a serie ongoing that tries to deal with this, hopefully in order to get rid of all the clock setup done in the initialiasation array. See https://patchwork.linuxtv.org/patch/48710/ for the patch and https://www.spinics.net/lists/linux-media/msg132201.html for a discussion on what the clock tree might look like on a MIPI-CSI bus. Feel free to step in the discussion. Maxime -- Maxime Ripard, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
Attachment:
signature.asc
Description: PGP signature