Hi Sakari On Wed, Sep 26, 2018 at 7:26 AM Ricardo Ribalda Delgado <ricardo.ribalda@xxxxxxxxx> wrote: > > Hello Sakari > On Mon, Sep 24, 2018 at 10:32 PM Sakari Ailus > <sakari.ailus@xxxxxxxxxxxxxxx> wrote: > > > > Hi Ricardo, > > > > On Fri, Sep 21, 2018 at 12:15:55PM +0200, Ricardo Ribalda Delgado wrote: > > ... > > > > > +static struct reg_8 mode_1920x1080[]; > > > > > +static struct reg_8 mode_4096x2304[]; > > > > > > > > Const. Could you rearrange the bits to avoid the forward declarations? > > > Const done, but I prefer to keep the forward declaration. Otherwise > > > the long tables will "hide" the mode declaration. > > > > Well, I guess the long tables do "hide" a bunch of other stuff, too. :-) > > But... I agree there's no trivial way around those tables either. > > > > It appears I'm not the only one who's commented on the matter of the > > forward declaration. > > Ok, I will change it, Eppur si muove ;) > > > > ... > > > > > > > +static int imx214_probe(struct i2c_client *client) > > > > > +{ > > > > > + struct device *dev = &client->dev; > > > > > + struct imx214 *imx214; > > > > > + struct fwnode_handle *endpoint; > > > > > + int ret; > > > > > + static const s64 link_freq[] = { > > > > > + (IMX214_DEFAULT_PIXEL_RATE * 10LL) / 8, > > > > > > > > You should check the link frequency matches with that from the firmware. > > > > > > I am not sure what you mean here sorry. > > > > The system firmware holds safe frequencies for the CSI-2 bus on that > > particular system; you should check that the register lists are valid for > > that frequency. > > Can you point me to a driver that does this? Just for the example. Thanks > > ... > > > > > > > + imx214->pixel_rate = v4l2_ctrl_new_std(&imx214->ctrls, NULL, > > > > > + V4L2_CID_PIXEL_RATE, 0, > > > > > + IMX214_DEFAULT_PIXEL_RATE, 1, > > > > > + IMX214_DEFAULT_PIXEL_RATE); > > > > > + imx214->link_freq = v4l2_ctrl_new_int_menu(&imx214->ctrls, NULL, > > > > > + V4L2_CID_LINK_FREQ, > > > > > + ARRAY_SIZE(link_freq) - 1, > > > > > + 0, link_freq); > > > > > > > > Do I understand this correctly that the driver does not support setting > > > > e.g. exposure time or gain? Those are very basic features... > > > > > > > > > Yep :), this is just a first step. I do not have the register set from > > > the device :(. So I am reverse engineering a lot of things. > > > I will add more controls as I am done with them. > > > > Looking at the registers you have in the register list, the sensor's > > registers appear similar to those used by the smiapp driver (the old SMIA > > standard). > > > > I'd guess the same register would work for setting the exposure time. I'm > > less certain about the limits though. > > Thanks for the pointer! I will try this out and probably add it as a patch. > > > > > > > > > > > > > > You'll also need to ensure the s_ctrl() callback works without s_power() > > > > being called. My suggestion is to switch to PM runtime; see e.g. the ov1385 > > > > driver in the current media tree master. > > > > > > > > > There is one limitation with this chip on the dragonboard. I2c only > > > works if the camss is ON. Therefore whatever s_ctrl needs to be > > > cached and written at streamon. > > > > That's something that doesn't belong to this driver. It's the I涎 adapter > > driver / camss issue, and not necessarily related to drivers only. Is the > > I涎 controller part of the camss btw.? > > I am with you here. The i2c controller is a different driver but is > integrated with camss. Checkout > https://patchwork.kernel.org/patch/10569961/ I am interacting with > Todor and Vinod to enable the i2c port indepently with camss. At least > now it does not kill the port after an i2c timeout :) > > Will fix the fwd declaration and the csi-2 register. Then I wll upload > it to my github, try it on real hw next monday and send back to the > mailing list > > Thanks! > > > > > -- > > Regards, > > > > Sakari Ailus > > sakari.ailus@xxxxxxxxxxxxxxx > > > > -- > Ricardo Ribalda -- Ricardo Ribalda