On Mon, Dec 21, 2015 at 1:54 PM, Grygorii Strashko <grygorii.strashko@xxxxxx> wrote: > The ov2659 driver performs device detection and initialization in the > following way: > - send reset command REG_SOFTWARE_RESET > - load array of predefined register's setting (~150 values) > - read device version REG_SC_CHIP_ID_H/REG_SC_CHIP_ID_L > - check version and exit if invalid. > > As result, for not connected device there will be >~150 i2c transactions > executed before device version checking and exit (there are no > failures detected because ov2659 declared as I2C_CLIENT_SCCB and NACKs > are ignored in this case). > > Let's fix that by checking the chip version first and start > initialization only if it's supported. > > Cc: Benoit Parrot <bparrot@xxxxxx> > Signed-off-by: Grygorii Strashko <grygorii.strashko@xxxxxx> Acked-by: Lad, Prabhakar <prabhakar.csengg@xxxxxxxxx> Cheers, --Prabhakar Lad > --- > drivers/media/i2c/ov2659.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/media/i2c/ov2659.c b/drivers/media/i2c/ov2659.c > index 49109f4..9b7b78c 100644 > --- a/drivers/media/i2c/ov2659.c > +++ b/drivers/media/i2c/ov2659.c > @@ -1321,10 +1321,6 @@ static int ov2659_detect(struct v4l2_subdev *sd) > } > usleep_range(1000, 2000); > > - ret = ov2659_init(sd, 0); > - if (ret < 0) > - return ret; > - > /* Check sensor revision */ > ret = ov2659_read(client, REG_SC_CHIP_ID_H, &pid); > if (!ret) > @@ -1338,8 +1334,10 @@ static int ov2659_detect(struct v4l2_subdev *sd) > dev_err(&client->dev, > "Sensor detection failed (%04X, %d)\n", > id, ret); > - else > + else { > dev_info(&client->dev, "Found OV%04X sensor\n", id); > + ret = ov2659_init(sd, 0); > + } > } > > return ret; > -- > 2.6.4 > -- 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