msm: camera: Use correct type for function return code

Using an unsigned integer to hold the signed return code
is wrong. So fix it by using the correct type to hold the
return code.

CRs-fixed: 512824
Change-Id: I389732a9af740174b26c8c43946e638a1be0d2a2
Signed-off-by: Seemanta Dutta <seemanta@codeaurora.org>
msm: camera: Implements ISPIF HW reset.

1. Add version and ISPs number properties in DT ISPIF node
  ISPIF driver needs to know HW version of ISPIF module and number of
  ISPs to which it is connected in order to execute proper reset of
  ISPIF module. For this purpose, two optional properties for these
  are added to ISPIF node. Both properties are optional - if not
  present, ISPIF driver will use default values.

2. Resets ISPIF HW
  Force hardware reset during hardware start to ensure
  all the line buffers are cleared. Reset is done once after first
  open of the module. In order to reset module clocks of CSID and ISPs
  connected to it should be enabled.

Change-Id: I6570ea45d1211c66fe5d6e80d1d2faa019415b68
Signed-off-by: Petar Sivenov <psiven@codeaurora.org>

Conflicts:

	drivers/media/platform/msm/camera_v2/ispif/msm_ispif.h
msm: camera: Add in-sensor mode support for eeprom

Add in-sensor mode calibration support for eeprom.
User are able to write back calibration settings
via ioctrl interface of the sensor.

Change-Id: I5fbfa8967885b683e498fe670a0c36d58d4b44e7
Signed-off-by: Ju He <juhe@codeaurora.org>
msm: camera: Fix various small issues in cci driver

Remove some unused ioctl exposed, Also add
some bound checks for ioctl user params.

Change-Id: Ifdd441fdb25fd20b005c4e4e1ebe4e203f1216ac
CRs-Fixed: 511382
Signed-off-by: Hariram Purushothaman <hpurus@codeaurora.org>

Conflicts:

	drivers/media/platform/msm/camera_v2/sensor/cci/msm_cci.c
msm: camera_v2: CCI release resources in case of timeout

Turn off the CCI clocks and release gpio if reset timeout error is
received in function_msm_cci_init()

Change-Id: Ib4387ce08635e0b4e6458f225bd3013557d6b5fa
Signed-off-by: Evgeniy Borisov <eborisov@codeaurora.org>
msm: camera: solve twice request MCLK GPIO for camera

In 8x26 MTP/QRD design, main/front camera sensor shares
the same MCLK GPIO, the poweron may fails in some cases
Change the process to output a error message for driver
bringup state to make sure other gpio are handled properly.

Change-Id: I48ee01f32ae5d7e02d3efe8578a747f23a6d8a71
Signed-off-by: Su Liu <suliu@codeaurora.org>
msm: camera: Stream on optimization

Remove sleep in msm_csiphy_lane_config().

Change-Id: Ieede0ed325422c4323ffd69ddcbc20a36889c763
Signed-off-by: Evgeniy Borisov <eborisov@codeaurora.org>
msm: camera: Exit gracefully while camera daemon crashes

Add camera daemon shutdown handling in all camera
sub devices to exit camera gracefully and it helps
to restart camera.

Change-Id: I39643a16f100b873275efe3a0c6184fe54e52830
Signed-off-by: Suresh Vankadara <svankada@codeaurora.org>
msm: camera: increase the length of property array

Increase the length of property array as the pageen property may
be longer than 12.

Change-Id: I1b85e9b9eb01af991dd628a08ca5e334c0fdbc82
Signed-off-by: Wang Wenbin <wenbinw@codeaurora.org>
msm_sensor: fix vreg dt parsing logic

Previously, dt parsing code for sensor power up sequence assumes certain
value and order in "qcom,cam-vreg-name".  Such assumption can't be
enforced by dt itself.  It leads to kernel panic when enum value of a vreg
is larger than total number of specified vregs.

New implementation dynamically search and match available vregs, instead of
relying on order and enum assumptions.

Change-Id: Iea519f2e4b4d805fecf6dd699ade2af4a00caa43
Signed-off-by: Junjie Wu <junjiew@codeaurora.org>

Conflicts:

	drivers/media/platform/msm/camera_v2/sensor/eeprom/msm_eeprom.c
msm: camera: eeprom: add gpio enable vdig support in eeprom probe

Add support for sensor power up through gpio enable vdig in eeprom
probe.

Change-Id: I84e1bc5a7278bac29db4575fa9fe69f3e464bedc
Signed-off-by: Wang Wenbin <wenbinw@codeaurora.org>
msm: camera: Bound check num_cid from userspace in csid driver

Upper and lower bound checks are enforced for num_cid
which is passed from userspace with lower as 1 and
max of 16.

Change-Id: Ic5456289cb2f2b4ea17610a7672eb2c5225b7954
Signed-off-by: Hariram Purushothaman <hpurus@codeaurora.org>
msm: camera: Change CCI I2C write interface

Every CCI I2C write involves one I2C transaction to CCI core.
Since CCI queue has maximum of 64 words, Write CCI commands
to CCI core and handle it in hardware.

Change-Id: Ic3b03bf70b1a5a23d4bdd42d2cbf8528fa8bd413
Signed-off-by: Sreesudhan Ramakrish Ramkumar <srramku@codeaurora.org>
msm: camera: Fix various small issues in sensor driver

Add size check for zero the userspace arguments
before passing to kzalloc. Upper bound will be
max to uint16_t as these changes between different
sensors.

CRs-fixed: 507874
Change-Id: I13fb5740ab83c5719244d012a27d50abb26083d0
Signed-off-by: Hariram Purushothaman <hpurus@codeaurora.org>
msm:camera: Add support for LED flash as i2c node

Add LED flash driver for adp1660 as i2c node.
Create v4l2 node and add control logic for i2c
LED Flash driver.

Change-Id: Iccdd341c280e58dfa5b374d06b16c2d9d344f748
Signed-off-by: Lokesh Kumar Aakulu <lkumar@codeaurora.org>

Conflicts:

	arch/arm/mach-msm/board-8610-gpiomux.c
	drivers/media/platform/msm/camera_v2/sensor/flash/msm_led_flash.h
msm: ledflash: Add Debugfs node for I2c based led flash

Add debugfs node for ledflash to power on/off led.

Change-Id: I788bf61b2d47ed8bd58dc28fe185f21f8ffcd375
Signed-off-by: Lokesh Kumar Aakulu <lkumar@codeaurora.org>
msm: camera: add LED torch driver

User space should access the proper torch led sysfs node whose
driver is implemented according to led trigger frame work, so
camera need to provide such a node.

CRs-Fixed: 537513
Change-Id: I67458c16bf823824896051b93a6eb3067d5ae993
Signed-off-by: Xu Kai <kaixu@codeaurora.org>
msm: camera: Add in-sensor mode support for eeprom

Add in-sensor mode calibration support for eeprom.
User are able to the back calibration settings
via i2c interface of the sensor.

Change-Id: I9332ea08f1100bed44c00ac455d07d8ea2b2ee27
Signed-off-by: Wei Ding <weiding@codeaurora.org>

Conflicts:

	drivers/media/platform/msm/camera_v2/sensor/eeprom/msm_eeprom.c
msm: camera_v2: Don't touch CCI if camera daemon crashed.

If daemon crashes, refrain from writing to the CCI. This is needed
because these writes will not wait in a process crash scenario and can
potentially leave the CCI in a bad state.

Change-Id: I785cb4af8dc3893b8a7f11e1d1c2a2e1ad775665
Signed-off-by: Satyavaraprasad Yerramsetti <satyav@codeaurora.org>
Signed-off-by: Satyavaraprasad Yerramsetti <satyav@codeaurora.org>
msm: camera: Reset CCI core based on I2C MASTER

CCI core is used by camera sensor, actuator and EEPROM. CCI core gets
reset first time when either one of hardware modules initializes it.
But, as per hardware requirement sensor has to be powered up before
CCI can be reset. This imposes limitation in the sequence in which
camera is opened. To remove this limitation, initialize CCI core
only for corresponding I2C MASTER everytime either of the hardware
modules initilizes it.

Change-Id: If2d7cc26fe23533243714839e6375f73d5efd4f2
Signed-off-by: Sreesudhan Ramakrish Ramkumar <srramku@codeaurora.org>