static inline void ov5640_reset(struct ov5640 *sensor)
{
+ if (sensor->pwn_gpio < 0 || sensor->rst_gpio < 0)
+ return;
+
gpio_set_value_cansleep(sensor->pwn_gpio, 1);
gpio_set_value_cansleep(sensor->rst_gpio, 0);
udelay(5000);
static void ov5640_start(struct ov5640 *sensor)
{
ov5640_write_reg(sensor, 0x4800, 0x04);
+ ov5640_write_reg(sensor, 0x3008, 0x02);
ov5640_write_reg(sensor, 0x4202, 0x00);
/* Color bar control */
static void ov5640_stop(struct ov5640 *sensor)
{
ov5640_write_reg(sensor, 0x4202, 0x0f);
+ ov5640_write_reg(sensor, 0x3008, 0x42);
ov5640_write_reg(sensor, 0x4800, 0x24);
}
if (format->which == V4L2_SUBDEV_FORMAT_TRY)
return 0;
- init_device(sensor);
ret = ov5640_change_mode(sensor);
sensor->fmt = fmt;
ov5640_regulator_enable(&client->dev);
- ov5640_reset(sensor);
+ ov5640_power_down(sensor, 0);
retval = ov5640_read_reg(sensor, OV5640_CHIP_ID_HIGH_BYTE,
&chip_id_high);