Camera3: Enable torchlight for PMIC driver
Flash interface driver has changed, making
corresponding changes in HAL.
Bug: 21926212
Change-Id: I4c6203ace29c27eafb45a9e19a4be49e82de4121
diff --git a/QCamera2/util/QCameraFlash.cpp b/QCamera2/util/QCameraFlash.cpp
old mode 100644
new mode 100755
index ceef207..91f5430
--- a/QCamera2/util/QCameraFlash.cpp
+++ b/QCamera2/util/QCameraFlash.cpp
@@ -175,10 +175,15 @@
flashPath);
retVal = -EBUSY;
} else {
- struct msm_camera_led_cfg_t cfg;
- cfg.cfgtype = MSM_CAMERA_LED_INIT;
+ struct msm_flash_cfg_data_t cfg;
+ struct msm_flash_init_info_t init_info;
+ memset(&cfg, 0, sizeof(struct msm_flash_cfg_data_t));
+ memset(&init_info, 0, sizeof(struct msm_flash_init_info_t));
+ init_info.flash_driver_type = FLASH_DRIVER_DEFAULT;
+ cfg.cfg.flash_init_info = &init_info;
+ cfg.cfg_type = CFG_FLASH_INIT;
retVal = ioctl(m_flashFds[camera_id],
- VIDIOC_MSM_FLASH_LED_DATA_CFG,
+ VIDIOC_MSM_FLASH_CFG,
&cfg);
if (retVal < 0) {
ALOGE("%s: Unable to init flash for camera id: %d",
@@ -190,6 +195,7 @@
}
}
+ CDBG("%s: X, retVal = %d", __func__, retVal);
return retVal;
}
@@ -212,7 +218,7 @@
int32_t QCameraFlash::setFlashMode(const int camera_id, const bool mode)
{
int32_t retVal = 0;
- struct msm_camera_led_cfg_t cfg;
+ struct msm_flash_cfg_data_t cfg;
if (camera_id < 0 || camera_id >= MM_CAMERA_MAX_NUM_SENSORS) {
ALOGE("%s: Invalid camera id: %d", __func__, camera_id);
@@ -227,13 +233,19 @@
ALOGE("%s: called for uninited flash: %d", __func__, camera_id);
retVal = -EINVAL;
} else {
- cfg.cfgtype = mode ? MSM_CAMERA_LED_LOW : MSM_CAMERA_LED_OFF;
+ memset(&cfg, 0, sizeof(struct msm_flash_cfg_data_t));
+ for (int i = 0; i < MAX_LED_TRIGGERS; i++)
+ cfg.flash_current[i] = QCAMERA_TORCH_CURRENT_VALUE;
+ cfg.cfg_type = mode ? CFG_FLASH_LOW: CFG_FLASH_OFF;
+
retVal = ioctl(m_flashFds[camera_id],
- VIDIOC_MSM_FLASH_LED_DATA_CFG,
- &cfg);
- if (retVal == 0) {
+ VIDIOC_MSM_FLASH_CFG,
+ &cfg);
+ if (retVal < 0)
+ ALOGE("%s: Unable to change flash mode to %d for camera id: %d",
+ __func__, mode, camera_id);
+ else
m_flashOn[camera_id] = mode;
- }
}
return retVal;
}
@@ -265,10 +277,10 @@
} else {
setFlashMode(camera_id, false);
- struct msm_camera_led_cfg_t cfg;
- cfg.cfgtype = MSM_CAMERA_LED_RELEASE;
+ struct msm_flash_cfg_data_t cfg;
+ cfg.cfg_type = CFG_FLASH_RELEASE;
retVal = ioctl(m_flashFds[camera_id],
- VIDIOC_MSM_FLASH_LED_DATA_CFG,
+ VIDIOC_MSM_FLASH_CFG,
&cfg);
if (retVal < 0) {
ALOGE("%s: Failed to release flash for camera id: %d",
diff --git a/QCamera2/util/QCameraFlash.h b/QCamera2/util/QCameraFlash.h
old mode 100644
new mode 100755
index f86b6ee..16cab03
--- a/QCamera2/util/QCameraFlash.h
+++ b/QCamera2/util/QCameraFlash.h
@@ -38,6 +38,8 @@
namespace qcamera {
+#define QCAMERA_TORCH_CURRENT_VALUE 200
+
class QCameraFlash {
public:
static QCameraFlash& getInstance();