Re: [PATCH] ov5670: Add Omnivision OV5670 5M sensor support

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

 



Hi Chiranjeevi,

On Fri, May 26, 2017 at 01:19:59AM +0000, Rapolu, Chiranjeevi wrote:
> >> +/* Analog gain controls from sensor */
> >> +#define	ANALOG_GAIN_MIN		0
> >> +#define	ANALOG_GAIN_MAX		8191
> >> +#define	ANALOG_GAIN_STEP	1
> >> +#define	ANALOG_GAIN_DEFAULT	128
> >> +
> >> +/* Exposure controls from sensor */
> >> +#define	EXPOSURE_MIN		0
> >> +#define	EXPOSURE_MAX		1048575
> >> +#define	EXPOSURE_STEP		1
> >> +#define	EXPOSURE_DEFAULT	47232
> >
> >Are these values dependent on sensor configuration i.e. in the case of this
> >driver modes?
> >
> Default values for a given resolutions can be fine-tuned. I think it is up to
> the HAL/application as to what default exposure for a given resolution. Driver
> has the support to change per application.

How about the minimum and maximum values? Are they dependent on other
configuration?

...

> >> +/* Write a list of registers */
> >> +static int ov5670_write_regs(struct ov5670 *ov5670,
> >> +			     const struct ov5670_reg *regs,
> >> +			     int len)
> >
> >How about using unsigned int for len?
> >
> Now u32 len.
> >> +{
> >> +	struct i2c_client *client = v4l2_get_subdevdata(&ov5670->sd);
> >> +	int i;
> >
> >i as well.
> >
> Now u32 i

An insigned int should do. Types with explicit widths should be only used
when the exact value ranges is known, e.g. a 32-bit or 16-bit register.

...

> >> +static int ov5670_set_stream(struct v4l2_subdev *sd, int enable)
> >> +{
> >> +	struct ov5670 *ov5670 = to_ov5670(sd);
> >> +	int ret = 0;
> >> +
> >> +	mutex_lock(&ov5670->mutex);
> >> +	if (ov5670->streaming == enable) {
> >> +		mutex_unlock(&ov5670->mutex);
> >> +		return 0;
> >> +	}
> >> +	mutex_unlock(&ov5670->mutex);
> >> +
> >> +	if (enable) {
> >> +		ret = ov5670_prepare_streaming(ov5670);
> >
> >ov5670_prepare_streaming() and ov5670_start_streaming() are always called
> >sequientally. Could you combine the two?
> >
> >About locking --- you would likely benefit from an unlocked variant of
> >v4l2_ctrl_handler_setup(). I uploaded it here, let me know if it works for
> >you:
> >
> ><URL:https://git.linuxtv.org/sailus/media_tree.git/log/?h=ctrl-setup-unlocked>
> >
> Tried unlocked __v4l2_ctrl_handler_setup(), working fine, used.
> Can you push this patch?

Great! I sent it to the list a moment ago. :-)

> >> +static struct i2c_driver ov5670_i2c_driver = {
> >
> >const?
> >
> Made const

I later on figured out this was probably a bad suggestion. The driver
registration changes the i2c_driver struct, causing a compiler warning.

> >> +	.driver = {
> >> +		.name = "ov5670",
> >> +		.owner = THIS_MODULE,
> >> +		.pm = &ov5670_pm_ops,
> >> +		.acpi_match_table = ACPI_PTR(ov5670_acpi_ids),
> >> +	},
> >> +	.probe = ov5670_probe,
> >> +	.remove = ov5670_remove,
> >> +	.id_table = ov5670_id_table,
> >> +};
> >> +
> >> +module_i2c_driver(ov5670_i2c_driver);
> >> +
> >> +MODULE_AUTHOR("Rapolu, Chiranjeevi <chiranjeevi.rapolu@xxxxxxxxx>");
> >> +MODULE_AUTHOR("Yang, Hyungwoo <hyungwoo.yang@xxxxxxxxx>");
> >> +MODULE_AUTHOR("Pu, Yuning <yuning.pu@xxxxxxxxx>");
> >> +MODULE_DESCRIPTION("Omnivision ov5670 sensor driver");
> >> +MODULE_LICENSE("GPL");

-- 
Kind regards,

Sakari Ailus
e-mail: sakari.ailus@xxxxxx	XMPP: sailus@xxxxxxxxxxxxxx



[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