Re: [PATCH v2] ov10635: Add OmniVision ov10635 SoC camera driver

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

 



Hi Jean-Philippe,

Thanks for the review.

<snip>
> > +static const struct ov10635_reg ov10635_regs_enable[] = {
> > +       { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 
> 0x3042, 0xf0 },
> > +       { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 
> 0x3042, 0xf0 },
> > +       { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 
> 0x3042, 0xf0 },
> > +       { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 
> 0x3042, 0xf0 },
> > +       { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 
> 0x3042, 0xf0 },
> > +       { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 
> 0x3042, 0xf0 },
> > +       { 0x3042, 0xf0 }, { 0x3042, 0xf0 }, { 0x301b, 0xf0 }, { 
> 0x301c, 0xf0 },
> > +       { 0x301a, 0xf0 },
> > +};
> 
> Register 0x3042 is only touched by the enable part, not by the "change
> mode" part
> I think you could move the {0x3042, 0xf0} sequence in the
> standard_regs array, and keep
> only the 0x301b, 0x301c, 0x301a registers.
I tried this, but it doesn't work. You have to write to the 0x3042 
register after other setup writes.

> By the way, did you test with a single write ? There is the same
> sequence in ov5642
> init, so I believe it is copy pasted in every omnivision init. Is it
> actually useful ?
I tried this & a single write works so I'll change this. iirc, it was 
taken from a reference set of writes from OmniVision. 

<snip>
> > +static int ov10635_video_probe(struct i2c_client *client)
> > +{
> > +       struct ov10635_priv *priv = to_ov10635(client);
> > +       u8 pid, ver;
> > +       int ret;
> > +
> > +       /* Program all the 'standard' registers */
> > +       ret = ov10635_set_regs(client, ov10635_regs_default,
> > +               ARRAY_SIZE(ov10635_regs_default));
> > +       if (ret)
> > +               return ret;
> > +
> > +       /* check and show product ID and manufacturer ID */
> > +       ret = ov10635_reg_read(client, OV10635_PID, &pid);
> > +       if (ret)
> > +               return ret;
> > +       ret = ov10635_reg_read(client, OV10635_VER, &ver);
> > +       if (ret)
> > +               return ret;
> > +
> > +       if (OV10635_VERSION(pid, ver) != OV10635_VERSION_REG) {
> > +               dev_err(&client->dev, "Product ID error %x:%x\n", pid, 
ver);
> > +               return -ENODEV;
> > +       }
> 
> Shouldn't the order be reversed here ?
> iow, first chek chip id register, then proceed with the register init ?
Good point! I'll fix this.

Thanks
Phil
--
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