Re: [PATCH 1/2] [media] imx214: Add imx214 camera sensor driver
From: Ricardo Ribalda Delgado
Date: Wed Sep 26 2018 - 01:27:00 EST
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.
>
> ...
>
> > > > + 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