Problem description:
- ar0832_set_alternate_addr writes to registers thus should be
protected by a lock
- ar0832_power_on will not release the mutex lock in an error case
Fix description:
- Do not unlock ar0832_camera_lock until ar0832_set_alternate_addr is
done
- Release ar0832_camera_lock in a regulator error case as well
Bug
1039067
Reviewed-on: http://git-master/r/130407
(cherry picked from commit
8be77fd1a61a1c93c04f1f141f1df91d24b5e54d)
Change-Id: Ic93a0a729a7df4ae704658a1774f7f5dfbb438bd
Signed-off-by: Sang-Hun Lee <sanlee@nvidia.com>
Reviewed-on: http://git-master/r/133398
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Thomas Cherry <tcherry@nvidia.com>
Rebase-Id: R5294f69c4273a4f90e075509c45182273a383675
dev->pdata->power_on(dev->is_stereo);
}
dev->brd_power_cnt++;
- mutex_unlock(&dev->ar0832_camera_lock);
/* Change slave address */
if (i2c_client->addr)
ret = ar0832_set_alternate_addr(i2c_client);
+ mutex_unlock(&dev->ar0832_camera_lock);
return 0;
fail_regulator_2v8_reg:
fail_regulator_1v8_reg:
regulator_put(dev->power_rail.sen_1v8_reg);
dev->power_rail.sen_1v8_reg = NULL;
+ mutex_unlock(&dev->ar0832_camera_lock);
return ret;
}