Skip to content

Commit

Permalink
[media] smiapp: Use 8-bit reads only before identifying the sensor
Browse files Browse the repository at this point in the history
Some sensors only allow 8-bit access, so use safe 8-bit access before the
sensor has been identified.

Signed-off-by: Sakari Ailus <sakari.ailus@maxwell.research.nokia.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Sakari Ailus authored and Mauro Carvalho Chehab committed May 20, 2012
1 parent ceb9e30 commit 98add8e
Showing 1 changed file with 34 additions and 29 deletions.
63 changes: 34 additions & 29 deletions drivers/media/video/smiapp/smiapp-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2197,51 +2197,56 @@ static int smiapp_identify_module(struct v4l2_subdev *subdev)
minfo->name = SMIAPP_NAME;

/* Module info */
rval = smiapp_read(sensor, SMIAPP_REG_U8_MANUFACTURER_ID,
&minfo->manufacturer_id);
rval = smiapp_read_8only(sensor, SMIAPP_REG_U8_MANUFACTURER_ID,
&minfo->manufacturer_id);
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U16_MODEL_ID,
&minfo->model_id);
rval = smiapp_read_8only(sensor, SMIAPP_REG_U16_MODEL_ID,
&minfo->model_id);
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U8_REVISION_NUMBER_MAJOR,
&minfo->revision_number_major);
rval = smiapp_read_8only(sensor,
SMIAPP_REG_U8_REVISION_NUMBER_MAJOR,
&minfo->revision_number_major);
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U8_REVISION_NUMBER_MINOR,
&minfo->revision_number_minor);
rval = smiapp_read_8only(sensor,
SMIAPP_REG_U8_REVISION_NUMBER_MINOR,
&minfo->revision_number_minor);
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U8_MODULE_DATE_YEAR,
&minfo->module_year);
rval = smiapp_read_8only(sensor,
SMIAPP_REG_U8_MODULE_DATE_YEAR,
&minfo->module_year);
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U8_MODULE_DATE_MONTH,
&minfo->module_month);
rval = smiapp_read_8only(sensor,
SMIAPP_REG_U8_MODULE_DATE_MONTH,
&minfo->module_month);
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U8_MODULE_DATE_DAY,
&minfo->module_day);
rval = smiapp_read_8only(sensor, SMIAPP_REG_U8_MODULE_DATE_DAY,
&minfo->module_day);

/* Sensor info */
if (!rval)
rval = smiapp_read(sensor,
SMIAPP_REG_U8_SENSOR_MANUFACTURER_ID,
&minfo->sensor_manufacturer_id);
rval = smiapp_read_8only(sensor,
SMIAPP_REG_U8_SENSOR_MANUFACTURER_ID,
&minfo->sensor_manufacturer_id);
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U16_SENSOR_MODEL_ID,
&minfo->sensor_model_id);
rval = smiapp_read_8only(sensor,
SMIAPP_REG_U16_SENSOR_MODEL_ID,
&minfo->sensor_model_id);
if (!rval)
rval = smiapp_read(sensor,
SMIAPP_REG_U8_SENSOR_REVISION_NUMBER,
&minfo->sensor_revision_number);
rval = smiapp_read_8only(sensor,
SMIAPP_REG_U8_SENSOR_REVISION_NUMBER,
&minfo->sensor_revision_number);
if (!rval)
rval = smiapp_read(sensor,
SMIAPP_REG_U8_SENSOR_FIRMWARE_VERSION,
&minfo->sensor_firmware_version);
rval = smiapp_read_8only(sensor,
SMIAPP_REG_U8_SENSOR_FIRMWARE_VERSION,
&minfo->sensor_firmware_version);

/* SMIA */
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U8_SMIA_VERSION,
&minfo->smia_version);
rval = smiapp_read_8only(sensor, SMIAPP_REG_U8_SMIA_VERSION,
&minfo->smia_version);
if (!rval)
rval = smiapp_read(sensor, SMIAPP_REG_U8_SMIAPP_VERSION,
&minfo->smiapp_version);
rval = smiapp_read_8only(sensor, SMIAPP_REG_U8_SMIAPP_VERSION,
&minfo->smiapp_version);

if (rval) {
dev_err(&client->dev, "sensor detection failed\n");
Expand Down

0 comments on commit 98add8e

Please sign in to comment.