aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video')
-rw-r--r--drivers/media/video/exynos/fimc-is/fimc-is-core.c15
-rw-r--r--drivers/media/video/exynos/fimc-is/fimc-is-core.h26
-rw-r--r--drivers/media/video/exynos/fimc-is/fimc-is-helper.c85
-rw-r--r--drivers/media/video/exynos/fimc-is/fimc-is-param.h12
-rw-r--r--drivers/media/video/exynos/fimc-is/fimc-is-v4l2.c14
-rw-r--r--drivers/media/video/exynos/fimc-is/fimc-is-video.c22
-rw-r--r--drivers/media/video/exynos/fimc-lite/fimc-lite-core.c14
-rw-r--r--drivers/media/video/mhl/Kconfig4
-rw-r--r--drivers/media/video/mhl/sii9234.c225
-rw-r--r--drivers/media/video/mhl/sii9234_driver.h6
-rw-r--r--[-rwxr-xr-x]drivers/media/video/s5c73m3_spi.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/s5k5bafx.h0
-rw-r--r--drivers/media/video/samsung/Kconfig7
-rw-r--r--drivers/media/video/samsung/Makefile18
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/jpeg_v2x/jpeg_dev.c0
-rw-r--r--drivers/media/video/samsung/mali/Kconfig8
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/Makefile_module0
l---------drivers/media/video/samsung/mali/arch1
l---------drivers/media/video/samsung/mali/arch-debug1
-rw-r--r--drivers/media/video/samsung/mali/arch-debug/config.h154
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/arch-pb-virtex5-m300/config.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/arch-pegasus-m400/config.h0
l---------drivers/media/video/samsung/mali/arch-release1
-rw-r--r--drivers/media/video/samsung/mali/arch-release/config.h154
-rw-r--r--drivers/media/video/samsung/mali/arch/config.h154
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_block_allocator.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_block_allocator.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_device_pause_resume.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_device_pause_resume.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_gp.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_gp_scheduler.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_hw_core.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_hw_core.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_kernel_core.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_kernel_mem_os.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_kernel_utilization.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_kernel_utilization.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_mem_validation.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_osk_bitops.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_osk_list.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_osk_mali.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_pm.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_pp.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_pp_scheduler.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_scheduler.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_scheduler.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_session.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_user_settings_db.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/common/mali_user_settings_db.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/license/gpl/mali_kernel_license.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_kernel_ioctl.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_kernel_linux.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_kernel_pm.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_kernel_sysfs.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_linux_pm.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_linux_pm_testsuite.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_atomics.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_math.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_memory.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_misc.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_notification.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_specific.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_time.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_osk_timers.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_ukk_gp.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_ukk_mem.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/linux/mali_ukk_vsync.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/platform/default/mali_platform.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/platform/orion-m400/mali_platform.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/readme.txt0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.h0
-rw-r--r--drivers/media/video/samsung/mfc5x/Kconfig12
-rw-r--r--drivers/media/video/samsung/mfc5x/SsbSipMfcApi.h19
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc.h4
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_buf.c287
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_buf.h10
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_dec.c90
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_dec.h5
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_dev.c119
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_dev.h6
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_enc.c205
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_enc.h1
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_inst.c1
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_inst.h9
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_interface.h6
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_mem.c39
-rw-r--r--drivers/media/video/samsung/mfc5x/mfc_shm.h2
-rw-r--r--drivers/media/video/samsung/ump/Kconfig8
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/Makefile.common0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/Makefile_module0
l---------drivers/media/video/samsung/ump/arch1
l---------drivers/media/video/samsung/ump/arch-debug1
-rw-r--r--drivers/media/video/samsung/ump/arch-debug/config.h22
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/arch-pb-virtex5/config.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/arch-pegasus-m400/config.h0
l---------drivers/media/video/samsung/ump/arch-release1
-rw-r--r--drivers/media/video/samsung/ump/arch-release/config.h22
-rw-r--r--drivers/media/video/samsung/ump/arch/config.h22
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/linux/license/gpl/ump_kernel_license.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_dedicated.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_os.h0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/linux/ump_osk_atomics.c0
-rwxr-xr-x[-rw-r--r--]drivers/media/video/samsung/ump/linux/ump_osk_misc.c0
-rw-r--r--drivers/media/video/slp_db8131m.c796
-rw-r--r--drivers/media/video/slp_db8131m.h100
-rw-r--r--drivers/media/video/slp_db8131m_setfile.h2264
-rw-r--r--drivers/media/video/slp_s5c73m3.c3415
-rw-r--r--drivers/media/video/slp_s5c73m3.h516
-rw-r--r--drivers/media/video/slp_s5k4ecgx.c2335
-rw-r--r--drivers/media/video/slp_s5k4ecgx.h195
-rw-r--r--drivers/media/video/slp_s5k4ecgx_setfile.h7308
123 files changed, 1139 insertions, 17603 deletions
diff --git a/drivers/media/video/exynos/fimc-is/fimc-is-core.c b/drivers/media/video/exynos/fimc-is/fimc-is-core.c
index 59da8d1..58b0fbc 100644
--- a/drivers/media/video/exynos/fimc-is/fimc-is-core.c
+++ b/drivers/media/video/exynos/fimc-is/fimc-is-core.c
@@ -357,6 +357,10 @@ static int fimc_is_probe(struct platform_device *pdev)
snprintf(v4l2_dev->name, sizeof(v4l2_dev->name),
"%s.isp", dev_name(&dev->pdev->dev));
ret = v4l2_device_register(NULL, v4l2_dev);
+ if (ret) {
+ v4l2_err(v4l2_dev, "Failed to register v4l2 device\n");
+ goto err_vd_reg;
+ }
snprintf(dev->video[FIMC_IS_VIDEO_NUM_BAYER].vd.name,
sizeof(dev->video[FIMC_IS_VIDEO_NUM_BAYER].vd.name),
@@ -385,10 +389,8 @@ static int fimc_is_probe(struct platform_device *pdev)
ret = video_register_device(&dev->video[FIMC_IS_VIDEO_NUM_BAYER].vd,
VFL_TYPE_GRABBER, 30);
- if (ret) {
- v4l2_err(v4l2_dev, "Failed to register video device\n");
- goto err_vd_reg;
- }
+ if (ret)
+ goto p_err_device_register;
printk(KERN_INFO "FIMC-IS Video node :: ISP %d minor : %d\n",
dev->video[FIMC_IS_VIDEO_NUM_BAYER].vd.num,
@@ -412,6 +414,7 @@ static int fimc_is_probe(struct platform_device *pdev)
dev->pdata->clk_get(pdev);
} else {
err("#### failed to Get Clock####\n");
+ ret = -EINVAL;
goto p_err_init_mem;
}
/* Init v4l2 sub device */
@@ -464,11 +467,11 @@ static int fimc_is_probe(struct platform_device *pdev)
return 0;
p_err_init_mem:
- free_irq(dev->irq1, dev);
#if defined(CONFIG_VIDEO_EXYNOS_FIMC_IS_BAYER)
err_vd_reg:
- video_device_release(&dev->video[FIMC_IS_VIDEO_NUM_BAYER].vd);
+p_err_device_register:
#endif
+ free_irq(dev->irq1, dev);
p_err_req_irq:
p_err_get_irq:
iounmap(dev->regs);
diff --git a/drivers/media/video/exynos/fimc-is/fimc-is-core.h b/drivers/media/video/exynos/fimc-is/fimc-is-core.h
index 1309e96..82be1a1 100644
--- a/drivers/media/video/exynos/fimc-is/fimc-is-core.h
+++ b/drivers/media/video/exynos/fimc-is/fimc-is-core.h
@@ -63,7 +63,7 @@
#define FIMC_IS_A5_MEM_SIZE 0x00A00000
#define FIMC_IS_REGION_SIZE 0x5000
-#define FIMC_IS_DEBUG_REGION_ADDR 0x00840000
+#define FIMC_IS_DEBUG_REGION_ADDR 0x0084B000
#define FIMC_IS_SHARED_REGION_ADDR 0x008C0000
#define FIMC_IS_FW_INFO_LENGTH 32
#define FIMC_IS_FW_VERSION_LENGTH 7
@@ -77,13 +77,23 @@
#define GED_FD_RANGE 1000
-#define BUS_LOCK_FREQ_L0 400200
-#define BUS_LOCK_FREQ_L1 267200
-#define BUS_LOCK_FREQ_L2 267160
-#define BUS_LOCK_FREQ_L3 160160
-#define BUS_LOCK_FREQ_L4 133133
-#define BUS_LOCK_FREQ_L5 100100
-
+#ifdef CONFIG_MACH_T0
+#define BUS_LOCK_FREQ_L0 440293
+#define BUS_LOCK_FREQ_L1 440220
+#define BUS_LOCK_FREQ_L2 293220
+#define BUS_LOCK_FREQ_L3 293176
+#define BUS_LOCK_FREQ_L4 176176
+#define BUS_LOCK_FREQ_L5 147147
+#define BUS_LOCK_FREQ_L6 110110
+#else
+#define BUS_LOCK_FREQ_L0 400266
+#define BUS_LOCK_FREQ_L1 400200
+#define BUS_LOCK_FREQ_L2 267200
+#define BUS_LOCK_FREQ_L3 267160
+#define BUS_LOCK_FREQ_L4 160160
+#define BUS_LOCK_FREQ_L5 133133
+#define BUS_LOCK_FREQ_L6 100100
+#endif
/* A5 debug message setting */
#define FIMC_IS_DEBUG_MSG 0x3F
#define FIMC_IS_DEBUG_LEVEL 3
diff --git a/drivers/media/video/exynos/fimc-is/fimc-is-helper.c b/drivers/media/video/exynos/fimc-is/fimc-is-helper.c
index ef0d163..8cac853 100644
--- a/drivers/media/video/exynos/fimc-is/fimc-is-helper.c
+++ b/drivers/media/video/exynos/fimc-is/fimc-is-helper.c
@@ -31,6 +31,7 @@
#include <linux/gpio.h>
#include <linux/gpio_event.h>
#include <plat/gpio-cfg.h>
+#include <plat/cpu.h>
#include "fimc-is-core.h"
#include "fimc-is-regs.h"
@@ -1039,18 +1040,46 @@ void fimc_is_hw_open_sensor(struct fimc_is_dev *dev, u32 id, u32 sensor_index)
writel(id, dev->regs + ISSR1);
switch (sensor_index) {
case SENSOR_S5K3H2_CSI_A:
+ sensor_ext = (struct sensor_open_extended *)
+ &dev->is_p_region->shared;
+ sensor_ext->actuator_type = 1;
+ sensor_ext->mclk = 0;
+ sensor_ext->mipi_lane_num = 0;
+ sensor_ext->mipi_speed = 0;
+ sensor_ext->fast_open_sensor = 0;
+ sensor_ext->self_calibration_mode = 0;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
+ fimc_is_mem_cache_clean((void *)dev->is_p_region,
+ IS_PARAM_SIZE);
dev->af.use_af = 1;
dev->sensor.sensor_type = SENSOR_S5K3H2_CSI_A;
writel(SENSOR_NAME_S5K3H2, dev->regs + ISSR2);
writel(SENSOR_CONTROL_I2C0, dev->regs + ISSR3);
- writel(0x0, dev->regs + ISSR4);
+ writel(virt_to_phys(sensor_ext), dev->regs + ISSR4);
break;
case SENSOR_S5K3H2_CSI_B:
+ sensor_ext = (struct sensor_open_extended *)
+ &dev->is_p_region->shared;
+ sensor_ext->actuator_type = 1;
+ sensor_ext->mclk = 0;
+ sensor_ext->mipi_lane_num = 0;
+ sensor_ext->mipi_speed = 0;
+ sensor_ext->fast_open_sensor = 0;
+ sensor_ext->self_calibration_mode = 0;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
+ fimc_is_mem_cache_clean((void *)dev->is_p_region,
+ IS_PARAM_SIZE);
dev->af.use_af = 1;
dev->sensor.sensor_type = SENSOR_S5K3H2_CSI_B;
writel(SENSOR_NAME_S5K3H2, dev->regs + ISSR2);
writel(SENSOR_CONTROL_I2C1, dev->regs + ISSR3);
- writel(0x0, dev->regs + ISSR4);
+ writel(virt_to_phys(sensor_ext), dev->regs + ISSR4);
break;
case SENSOR_S5K6A3_CSI_A:
sensor_ext = (struct sensor_open_extended *)
@@ -1061,6 +1090,10 @@ void fimc_is_hw_open_sensor(struct fimc_is_dev *dev, u32 id, u32 sensor_index)
sensor_ext->mipi_speed = 0;
sensor_ext->fast_open_sensor = 0;
sensor_ext->self_calibration_mode = 1;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
fimc_is_mem_cache_clean((void *)dev->is_p_region,
IS_PARAM_SIZE);
dev->af.use_af = 0;
@@ -1078,6 +1111,10 @@ void fimc_is_hw_open_sensor(struct fimc_is_dev *dev, u32 id, u32 sensor_index)
sensor_ext->mipi_speed = 0;
sensor_ext->fast_open_sensor = 0;
sensor_ext->self_calibration_mode = 1;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
fimc_is_mem_cache_clean((void *)dev->is_p_region,
IS_PARAM_SIZE);
dev->af.use_af = 0;
@@ -1095,6 +1132,10 @@ void fimc_is_hw_open_sensor(struct fimc_is_dev *dev, u32 id, u32 sensor_index)
sensor_ext->mipi_speed = 0;
sensor_ext->fast_open_sensor = 0;
sensor_ext->self_calibration_mode = 0;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
fimc_is_mem_cache_clean((void *)dev->is_p_region,
IS_PARAM_SIZE);
dev->af.use_af = 1;
@@ -1112,6 +1153,10 @@ void fimc_is_hw_open_sensor(struct fimc_is_dev *dev, u32 id, u32 sensor_index)
sensor_ext->mipi_speed = 0;
sensor_ext->fast_open_sensor = 0;
sensor_ext->self_calibration_mode = 0;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
fimc_is_mem_cache_clean((void *)dev->is_p_region,
IS_PARAM_SIZE);
dev->af.use_af = 1;
@@ -1121,18 +1166,46 @@ void fimc_is_hw_open_sensor(struct fimc_is_dev *dev, u32 id, u32 sensor_index)
writel(virt_to_phys(sensor_ext), dev->regs + ISSR4);
break;
case SENSOR_S5K4E5_CSI_A:
+ sensor_ext = (struct sensor_open_extended *)
+ &dev->is_p_region->shared;
+ sensor_ext->actuator_type = 1;
+ sensor_ext->mclk = 0;
+ sensor_ext->mipi_lane_num = 0;
+ sensor_ext->mipi_speed = 0;
+ sensor_ext->fast_open_sensor = 0;
+ sensor_ext->self_calibration_mode = 0;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
+ fimc_is_mem_cache_clean((void *)dev->is_p_region,
+ IS_PARAM_SIZE);
dev->af.use_af = 1;
dev->sensor.sensor_type = SENSOR_S5K4E5_CSI_A;
writel(SENSOR_NAME_S5K4E5, dev->regs + ISSR2);
writel(SENSOR_CONTROL_I2C0, dev->regs + ISSR3);
- writel(0x0, dev->regs + ISSR4);
+ writel(virt_to_phys(sensor_ext), dev->regs + ISSR4);
break;
case SENSOR_S5K4E5_CSI_B:
+ sensor_ext = (struct sensor_open_extended *)
+ &dev->is_p_region->shared;
+ sensor_ext->actuator_type = 1;
+ sensor_ext->mclk = 0;
+ sensor_ext->mipi_lane_num = 0;
+ sensor_ext->mipi_speed = 0;
+ sensor_ext->fast_open_sensor = 0;
+ sensor_ext->self_calibration_mode = 0;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
+ fimc_is_mem_cache_clean((void *)dev->is_p_region,
+ IS_PARAM_SIZE);
dev->af.use_af = 1;
dev->sensor.sensor_type = SENSOR_S5K4E5_CSI_B;
writel(SENSOR_NAME_S5K4E5, dev->regs + ISSR2);
writel(SENSOR_CONTROL_I2C1, dev->regs + ISSR3);
- writel(0x0, dev->regs + ISSR4);
+ writel(virt_to_phys(sensor_ext), dev->regs + ISSR4);
break;
case SENSOR_S5K6A3_CSI_B_CUSTOM:
sensor_ext = (struct sensor_open_extended *)
@@ -1143,6 +1216,10 @@ void fimc_is_hw_open_sensor(struct fimc_is_dev *dev, u32 id, u32 sensor_index)
sensor_ext->mipi_speed = 0;
sensor_ext->fast_open_sensor = 6;
sensor_ext->self_calibration_mode = 1;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ sensor_ext->i2c_sclk = 88000000;
+ else
+ sensor_ext->i2c_sclk = 80000000;
fimc_is_mem_cache_clean((void *)dev->is_p_region,
IS_PARAM_SIZE);
dev->af.use_af = 0;
diff --git a/drivers/media/video/exynos/fimc-is/fimc-is-param.h b/drivers/media/video/exynos/fimc-is/fimc-is-param.h
index 9383c4a..b978e16 100644
--- a/drivers/media/video/exynos/fimc-is/fimc-is-param.h
+++ b/drivers/media/video/exynos/fimc-is/fimc-is-param.h
@@ -14,7 +14,7 @@
#ifndef FIMC_IS_PARAMS_H_
#define FIMC_IS_PARAMS_H_
-#define IS_REGION_VER 122 /* IS REGION VERSION 1.22 */
+#define IS_REGION_VER 124 /* IS REGION VERSION 1.24 */
/* MACROs */
#define IS_SET_PARAM_BIT(dev, num) \
@@ -237,6 +237,8 @@
(dev->is_p_region->parameter.isp.dma1_output.buffer_address = x)
#define IS_ISP_SET_PARAM_DMA_OUTPUT1_NODIFY_DMA_DONE(dev, x) \
(dev->is_p_region->parameter.isp.dma1_output.notify_dma_done = x)
+#define IS_ISP_SET_PARAM_DMA_OUTPUT1_MASK(dev, x) \
+ (dev->is_p_region->parameter.isp.dma1_output.dma_out_mask = x)
#define IS_ISP_SET_PARAM_DMA_OUTPUT1_ERR(dev, x) \
(dev->is_p_region->parameter.isp.dma1_output.err = x)
@@ -260,6 +262,8 @@
(dev->is_p_region->parameter.isp.dma2_output.buffer_address = x)
#define IS_ISP_SET_PARAM_DMA_OUTPUT2_NODIFY_DMA_DONE(dev, x) \
(dev->is_p_region->parameter.isp.dma2_output.notify_dma_done = x)
+#define IS_ISP_SET_PARAM_DMA_OUTPUT2_MASK(dev, x) \
+ (dev->is_p_region->parameter.isp.dma2_output.dma_out_mask = x)
#define IS_ISP_SET_PARAM_DMA_OUTPUT2_ERR(dev, x) \
(dev->is_p_region->parameter.isp.dma2_output.err = x)
@@ -1228,7 +1232,8 @@ struct param_dma_output {
u32 buffer_number;
u32 buffer_address;
u32 notify_dma_done;
- u32 reserved[PARAMETER_MAX_MEMBER-11];
+ u32 dma_out_mask;
+ u32 reserved[PARAMETER_MAX_MEMBER-12];
u32 err;
};
@@ -1697,5 +1702,8 @@ struct sensor_open_extended {
u32 fast_open_sensor;
/* Activatiing sensor self calibration mode (6A3) */
u32 self_calibration_mode;
+ /* This field is to adjust I2c clock based on ACLK200 */
+ /* This value is varied in case of rev 0.2 */
+ u32 i2c_sclk;
};
#endif
diff --git a/drivers/media/video/exynos/fimc-is/fimc-is-v4l2.c b/drivers/media/video/exynos/fimc-is/fimc-is-v4l2.c
index aa60198..066885f 100644
--- a/drivers/media/video/exynos/fimc-is/fimc-is-v4l2.c
+++ b/drivers/media/video/exynos/fimc-is/fimc-is-v4l2.c
@@ -373,7 +373,7 @@ int fimc_is_s_power(struct v4l2_subdev *sd, int on)
}
#if defined(CONFIG_BUSFREQ_OPP) || defined(CONFIG_BUSFREQ_LOCK_WRAPPER)
/* lock bus frequency */
- dev_lock(is_dev->bus_dev, dev, BUS_LOCK_FREQ_L0);
+ dev_lock(is_dev->bus_dev, dev, BUS_LOCK_FREQ_L1);
#endif
fimc_is_hw_set_low_poweroff(is_dev, false);
ret = pm_runtime_get_sync(dev);
@@ -618,7 +618,7 @@ static int fimc_is_reset(struct v4l2_subdev *sd, u32 val)
/* Restart */
#if defined(CONFIG_BUSFREQ_OPP) || defined(CONFIG_BUSFREQ_LOCK_WRAPPER)
/* lock bus frequency */
- dev_lock(is_dev->bus_dev, dev, BUS_LOCK_FREQ_L0);
+ dev_lock(is_dev->bus_dev, dev, BUS_LOCK_FREQ_L1);
#endif
fimc_is_hw_set_low_poweroff(is_dev, false);
ret = pm_runtime_get_sync(dev);
@@ -816,6 +816,16 @@ static int fimc_is_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
case V4L2_CID_IS_FW_DEBUG_REGION_ADDR:
ctrl->value = dev->mem.base + FIMC_IS_DEBUG_REGION_ADDR;
break;
+#if defined(CONFIG_SLP)
+#define FRONT_CAM_STANDARD_REVISION 0x0b
+ case V4L2_CID_PHYSICAL_ROTATION:
+ if (system_rev > FRONT_CAM_STANDARD_REVISION || \
+ system_rev == 0x04 || system_rev == 0x06)
+ ctrl->value = IS_ROTATION_270;
+ else
+ ctrl->value = IS_ROTATION_90;
+ break;
+#endif
default:
return -EINVAL;
}
diff --git a/drivers/media/video/exynos/fimc-is/fimc-is-video.c b/drivers/media/video/exynos/fimc-is/fimc-is-video.c
index 85080af..6b81bb9 100644
--- a/drivers/media/video/exynos/fimc-is/fimc-is-video.c
+++ b/drivers/media/video/exynos/fimc-is/fimc-is-video.c
@@ -45,6 +45,11 @@
static struct fimc_is_fmt fimc_is_formats[] = {
{
+ .name = "Bayer8",
+ .fourcc = V4L2_PIX_FMT_SGRBG8,
+ .flags = 1,
+ },
+ {
.name = "Bayer10",
.fourcc = V4L2_PIX_FMT_SGRBG10,
.flags = 1,
@@ -233,6 +238,21 @@ static int fimc_is_isp_video_s_fmt_mplane(struct file *file, void *priv,
pix = &f->fmt.pix_mp;
switch (f->fmt.pix.pixelformat) {
+ case V4L2_PIX_FMT_SGRBG8:
+ width = pix->width - is_dev->sensor.offset_x;
+ height = pix->height - is_dev->sensor.offset_y;
+ IS_ISP_SET_PARAM_DMA_OUTPUT2_CMD(is_dev,
+ DMA_OUTPUT_COMMAND_DISABLE);
+ IS_ISP_SET_PARAM_DMA_OUTPUT2_WIDTH(is_dev, width);
+ IS_ISP_SET_PARAM_DMA_OUTPUT2_HEIGHT(is_dev, height);
+ IS_ISP_SET_PARAM_DMA_OUTPUT2_FORMAT(is_dev,
+ DMA_OUTPUT_FORMAT_BAYER);
+ IS_ISP_SET_PARAM_DMA_OUTPUT2_BITWIDTH(is_dev,
+ DMA_OUTPUT_BIT_WIDTH_8BIT);
+ IS_ISP_SET_PARAM_DMA_OUTPUT2_PLANE(is_dev, DMA_OUTPUT_PLANE_1);
+ IS_ISP_SET_PARAM_DMA_OUTPUT2_ORDER(is_dev,
+ DMA_OUTPUT_ORDER_GB_BG);
+ break;
case V4L2_PIX_FMT_SGRBG10:
width = pix->width - is_dev->sensor.offset_x;
height = pix->height - is_dev->sensor.offset_y;
@@ -518,6 +538,8 @@ static int fimc_is_isp_start_streaming(struct vb2_queue *q)
+ 32 * sizeof(u32));
IS_ISP_SET_PARAM_DMA_OUTPUT2_NODIFY_DMA_DONE(is_dev,
DMA_OUTPUT_NOTIFY_DMA_DONE_ENBABLE);
+ /* All buffers are available to write image data */
+ IS_ISP_SET_PARAM_DMA_OUTPUT2_MASK(is_dev, 0xFFFFFFFF);
IS_SET_PARAM_BIT(is_dev, PARAM_ISP_DMA2_OUTPUT);
IS_INC_PARAM_NUM(is_dev);
diff --git a/drivers/media/video/exynos/fimc-lite/fimc-lite-core.c b/drivers/media/video/exynos/fimc-lite/fimc-lite-core.c
index eddbf1d..011787c 100644
--- a/drivers/media/video/exynos/fimc-lite/fimc-lite-core.c
+++ b/drivers/media/video/exynos/fimc-lite/fimc-lite-core.c
@@ -2021,7 +2021,7 @@ static int flite_probe(struct platform_device *pdev)
pdev->name);
if (!regs_res) {
dev_err(&pdev->dev, "Failed to request io memory region\n");
- goto err_resource;
+ goto err_flite;
}
flite->regs_res = regs_res;
@@ -2044,8 +2044,10 @@ static int flite_probe(struct platform_device *pdev)
}
sd = kzalloc(sizeof(*sd), GFP_KERNEL);
- if (!sd)
- goto err_irq;
+ if (!sd) {
+ ret = -ENOMEM;
+ goto err_irq;
+ }
v4l2_subdev_init(sd, &flite_subdev_ops);
snprintf(sd->name, sizeof(sd->name), "flite-subdev.%d", flite->id);
@@ -2062,13 +2064,13 @@ static int flite_probe(struct platform_device *pdev)
mutex_init(&flite->lock);
flite->mdev = flite_get_capture_md(MDEV_CAPTURE);
if (IS_ERR_OR_NULL(flite->mdev))
- goto err_irq;
+ goto err_device_register;
flite_dbg("mdev = 0x%08x", (u32)flite->mdev);
ret = flite_register_video_device(flite);
if (ret)
- goto err_irq;
+ goto err_device_register;
/* Get mipi-csis subdev ptr using mdev */
flite->sd_csis = flite->mdev->csis_sd[flite->id];
@@ -2130,6 +2132,8 @@ err_vfd_alloc:
media_entity_cleanup(&flite->vfd->entity);
video_device_release(flite->vfd);
#endif
+err_device_register:
+ kfree(sd);
err_irq:
free_irq(flite->irq, flite);
err_reg_unmap:
diff --git a/drivers/media/video/mhl/Kconfig b/drivers/media/video/mhl/Kconfig
index f4ff2873..2dac8dd 100644
--- a/drivers/media/video/mhl/Kconfig
+++ b/drivers/media/video/mhl/Kconfig
@@ -27,4 +27,8 @@ config SAMSUNG_WORKAROUND_HPD_GLANCE
depends on (SAMSUNG_MHL || MHL_SII9234) && (CPU_EXYNOS4210 || CPU_EXYNOS4212 || CPU_EXYNOS4412)
default y
+config SAMSUNG_MHL_UNPOWERED
+ bool "Use source vbus for mhl dongle if no external power"
+ depends on (SAMSUNG_MHL || MHL_SII9234)
+ default n
endmenu
diff --git a/drivers/media/video/mhl/sii9234.c b/drivers/media/video/mhl/sii9234.c
index 8ca25c6..c728ea3 100644
--- a/drivers/media/video/mhl/sii9234.c
+++ b/drivers/media/video/mhl/sii9234.c
@@ -49,11 +49,16 @@
/*///////////////////////// definition area //////////////////////*/
/*////////////////////////////////////////////////////////////////////////////*/
-#define __CONFIG_USE_TIMER__
+#define __CONFIG_USE_TIMER__
#define __CONFIG_RSEN_LOST_PATCH__
-/* #define __CONFIG_MHL_SWING_LEVEL__ */
+/* #define __CONFIG_MHL_SWING_LEVEL__ */
#define __CONFIG_SS_FACTORY__
#define __CONFIG_MHL_DEBUG__
+#if defined(CONFIG_MACH_T0) || defined(CONFIG_MACH_M3)
+# define __CONFIG_MHL_VER_1_2__
+#else
+# define __CONFIG_MHL_VER_1_1__
+#endif
/* #define __SII9234_MUTEX_DEBUG__ */
/*////////////////////////////////////////////////////////////////////////////*/
/*////////////////// dependence hader file area //////////////////////*/
@@ -176,7 +181,7 @@ static struct workqueue_struct *sii9234_msc_wq;
#endif
static struct cbus_packet cbus_pkt_buf[CBUS_PKT_BUF_COUNT];
-#ifdef __CONFIG_USE_TIMER__
+#ifdef __CONFIG_USE_TIMER__
static int cbus_command_abort_state;
#endif
@@ -207,6 +212,11 @@ static void goto_d3(void);
void sii9234_wake_lock(void)
{
struct sii9234_data *sii9234 = dev_get_drvdata(sii9244_mhldev);
+ if (!sii9234 || !sii9234->pdata) {
+ pr_err("[ERROR] %s() MHL driver has not initailized.\n",
+ __func__);
+ return;
+ }
wake_lock(&sii9234->mhl_wake_lock);
pr_debug("%s()\n", __func__);
}
@@ -215,6 +225,11 @@ EXPORT_SYMBOL(sii9234_wake_lock);
void sii9234_wake_unlock(void)
{
struct sii9234_data *sii9234 = dev_get_drvdata(sii9244_mhldev);
+ if (!sii9234 || !sii9234->pdata) {
+ pr_err("[ERROR] %s() MHL driver has not initailized.\n",
+ __func__);
+ return;
+ }
wake_unlock(&sii9234->mhl_wake_lock);
pr_debug("%s()\n", __func__);
}
@@ -222,62 +237,71 @@ EXPORT_SYMBOL(sii9234_wake_unlock);
#endif
#ifdef __CONFIG_MHL_SWING_LEVEL__
-static ssize_t sii9234_swing_test_show(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t size)
+static ssize_t sii9234_swing_test_show(struct class *class,
+ struct class_attribute *attr,
+ char *buf)
{
struct sii9234_data *sii9234 = dev_get_drvdata(sii9244_mhldev);
- return sprintf(buf, "mhl_show_value : 0x%x\n",
- sii9234->pdata->swing_level);
+ return sprintf(buf, "mhl_show_value : 0%o(0x%x)\n",
+ sii9234->pdata->swing_level, sii9234->pdata->swing_level);
}
-static ssize_t sii9234_swing_test_store(struct device *dev,
- struct device_attribute *attr,
+static ssize_t sii9234_swing_test_store(struct class *class,
+ struct class_attribute *attr,
const char *buf, size_t size)
{
struct sii9234_data *sii9234 = dev_get_drvdata(sii9244_mhldev);
-
- char temp[4] = { 0, };
const char *p = buf;
- int data, clk;
- unsigned int value;
-
- while (*p != '\0') {
- if (!isspace(*p))
- strncat(temp, p, 1);
- p++;
- }
+ int data, clk, ret;
+ unsigned int base, value;
- if (strlen(temp) != 2)
- return -EINVAL;
+ if (p[0] == '0' && (p[1] == 'x' || p[1] == 'X'))
+ base = 16;
+ else
+ base = 8;
- kstrtoul(temp, 10, &value);
- data = value / 10;
- clk = value % 10;
- sii9234->pdata->swing_level = 0xc0;
- sii9234->pdata->swing_level = sii9234->pdata->swing_level
- | (data << 3) | clk;
- sprintf(buf, "mhl_store_value : 0x%x\n", sii9234->pdata->swing_level);
+ ret = kstrtouint(p, base, &value);
+ printk(KERN_INFO "\n%s(): ret = %d, value = %d(=0%o=0x%x)\n", __func__,
+ ret, value, value, value);
+ if (ret != 0 || value < 0 || value > 0xff) {
+ printk(KERN_INFO "[ERROR] %s(): The value is invald!",
+ __func__);
+ return size;
+ }
+ data = value & 070;
+ clk = value & 07;
+ sii9234->pdata->swing_level = 0300 | data | clk;
+ printk(KERN_INFO "%s(): mhl_store_value : 0%o(0x%x)\n", __func__,
+ sii9234->pdata->swing_level, sii9234->pdata->swing_level);
return size;
}
-static CLASS_ATTR(swing, 0664,
- sii9234_swing_test_show, sii9234_swing_test_store);
+static CLASS_ATTR(swing, 0666,
+ sii9234_swing_test_show, sii9234_swing_test_store);
#endif
-#ifdef CONFIG_SAMSUNG_USE_11PIN_CONNECTOR
-# if !defined(CONFIG_MACH_P4NOTE)
+#if defined(CONFIG_SAMSUNG_USE_11PIN_CONNECTOR) && !defined(CONFIG_MACH_P4NOTE)
static int is_mhl_cable_connected(void)
{
# ifdef CONFIG_SAMSUNG_SMARTDOCK
- if (max77693_muic_get_status1_adc_value() == ADC_SMARTDOCK)
- return 1;
- else
-# endif
+ if (max77693_muic_get_status1_adc_value() == ADC_SMARTDOCK)
+ return 1;
+ else
+ return max77693_muic_get_status1_adc1k_value();
+# else
return max77693_muic_get_status1_adc1k_value();
+# endif
}
#endif
+#ifdef CONFIG_SAMSUNG_WORKAROUND_HPD_GLANCE
+bool sii9234_is_mhl_power_state_on(void)
+{
+ struct sii9234_data *sii9234 = dev_get_drvdata(sii9244_mhldev);
+ pr_info("%s(): %s\n", __func__,
+ sii9234->pdata->power_state ? "Yes" : "No");
+ return sii9234->pdata->power_state == 1;
+}
#endif
u8 mhl_onoff_ex(bool onoff)
@@ -318,10 +342,6 @@ u8 mhl_onoff_ex(bool onoff)
if (sii9234->pdata->hw_onoff)
sii9234->pdata->hw_onoff(0);
-#ifdef CONFIG_SAMSUNG_WORKAROUND_HPD_GLANCE
- mhl_hpd_handler(false);
-#endif
-
#ifdef CONFIG_SAMSUNG_USE_11PIN_CONNECTOR
#if !defined(CONFIG_MACH_P4NOTE)
ret = is_mhl_cable_connected();
@@ -679,8 +699,13 @@ static int sii9234_cbus_init(struct sii9234_data *sii9234)
/*To meet cts 6.3.10.1 spec */
if (ret < 0)
goto i2c_error_exit;
+#if defined(__CONFIG_MHL_VER_1_1__)
ret = cbus_write_reg(sii9234, 0x80 + DEVCAP_MHL_VERSION, 0x11);
/*mhl version 1.1 */
+#elif defined(__CONFIG_MHL_VER_1_2__)
+ ret = cbus_write_reg(sii9234, 0x80 + DEVCAP_MHL_VERSION, 0x12);
+ /*mhl version 1.2 */
+#endif
if (ret < 0)
goto i2c_error_exit;
ret = cbus_write_reg(sii9234, 0x80 + DEVCAP_DEV_CAT, 0x02);
@@ -696,8 +721,13 @@ static int sii9234_cbus_init(struct sii9234_data *sii9234)
/* YCbCr444, RGB444 */
if (ret < 0)
goto i2c_error_exit;
+#ifdef CONFIG_VIDEO_TVOUT_5_1CH_AUDIO
ret = cbus_write_reg(sii9234, 0x80 + DEVCAP_AUD_LINK_MODE, 0x03);
/* 8ch, 2ch */
+#else
+ ret = cbus_write_reg(sii9234, 0x80 + DEVCAP_AUD_LINK_MODE, 0x01);
+ /* 2ch */
+#endif
if (ret < 0)
goto i2c_error_exit;
ret = cbus_write_reg(sii9234, 0x80 + DEVCAP_VIDEO_TYPE, 0);
@@ -1434,11 +1464,6 @@ static void goto_d3(void)
sii9234->rsen = false;
-#if defined(CONFIG_SAMSUNG_WORKAROUND_HPD_GLANCE) &&\
- defined(CONFIG_HAS_EARLYSUSPEND)
- if (!sii9234->suspend_state)
- mhl_hpd_handler(false);
-#endif
memset(cbus_pkt_buf, 0x00, sizeof(cbus_pkt_buf));
ret = sii9234_power_init(sii9234);
@@ -1610,6 +1635,7 @@ static void goto_d3(void)
return;
exit:
pr_err("[ERROR] %s() error terminated!\n", __func__);
+ schedule_work(&sii9234->mhl_end_work);
return;
}
@@ -2250,7 +2276,7 @@ static int sii9234_detection_callback(void)
pr_info("sii9234: Detection failed");
if (sii9234->state == STATE_DISCONNECTED) {
pr_cont(" (timeout)");
- sii9234->pdata->power_state = 0;
+ schedule_work(&sii9234->mhl_end_work);
} else if (sii9234->state == STATE_DISCOVERY_FAILED)
pr_cont(" (discovery failed)");
else if (sii9234->state == NO_MHL_STATUS)
@@ -2260,8 +2286,12 @@ static int sii9234_detection_callback(void)
pr_cont("\n");
/*mhl spec: 8.3.3, if discovery failed, must retry discovering */
+#ifdef CONFIG_SAMSUNG_USE_11PIN_CONNECTOR
if ((sii9234->state == STATE_DISCOVERY_FAILED) &&
(sii9234->rgnd == RGND_1K)) {
+#else
+ if ((sii9234->state == STATE_DISCOVERY_FAILED)) {
+#endif
pr_cont("Discovery failed but RGND_1K impedence"
" restart detection_callback");
@@ -2276,7 +2306,7 @@ static int sii9234_detection_callback(void)
pr_info("sii9234: Detection failed");
if (sii9234->state == STATE_DISCONNECTED) {
pr_cont(" (timeout)");
- sii9234->pdata->power_state = 0;
+ schedule_work(&sii9234->mhl_end_work);
} else if (sii9234->state == STATE_DISCOVERY_FAILED)
pr_cont(" (discovery failed)");
else if (sii9234->state == NO_MHL_STATUS)
@@ -2286,8 +2316,12 @@ static int sii9234_detection_callback(void)
pr_cont("\n");
/*mhl spec: 8.3.3, if discovery failed, must retry discovering */
+#ifdef CONFIG_SAMSUNG_USE_11PIN_CONNECTOR
if ((sii9234->state == STATE_DISCOVERY_FAILED) &&
(sii9234->rgnd == RGND_1K)) {
+#else
+ if ((sii9234->state == STATE_DISCOVERY_FAILED)) {
+#endif
pr_cont("Discovery failed but RGND_1K impedence"
" restart detection_callback");
@@ -3344,7 +3378,7 @@ static irqreturn_t sii9234_irq_thread(int irq, void *data)
* as per Page 0,0x79 Register
*/
sii9234->mhl_status_value.sink_hpd = true;
-#ifdef __CONFIG_USE_TIMER__
+#ifdef __CONFIG_USE_TIMER__
if (cbus_command_abort_state == 1) {
pr_debug("cbus_command_mod_timer\n");
mod_timer(&sii9234->cbus_command_timer,
@@ -3412,7 +3446,7 @@ static irqreturn_t sii9234_irq_thread(int irq, void *data)
* or MHL cable disconnection
* TODO: Define the below mhl_disconnection()
*/
-#ifdef __CONFIG_USE_TIMER__
+#ifdef __CONFIG_USE_TIMER__
del_timer(&sii9234->cbus_command_timer);
#endif
msleep(T_SRC_RXSENSE_DEGLITCH);
@@ -3450,7 +3484,7 @@ static irqreturn_t sii9234_irq_thread(int irq, void *data)
cbus_resp_abort_error(sii9234);
if (cbus_intr1 & MSC_REQ_ABORT) {
-#ifdef __CONFIG_USE_TIMER__
+#ifdef __CONFIG_USE_TIMER__
cbus_write_reg(sii9234, CBUS_INTR1_ENABLE_REG, 0);
cbus_req_abort_error(sii9234);
cbus_write_reg(sii9234, CBUS_INTR1_ENABLE_REG, 0xFF);
@@ -3516,7 +3550,13 @@ static irqreturn_t sii9234_irq_thread(int irq, void *data)
if (mhl_poweroff) {
if (sii9234_callback_sched != 0) {
sii9234_disable_irq();
- schedule_work(&sii9234->mhl_d3_work);
+ if (sii9234->pdata->factory_test == 0) {
+ schedule_work(&sii9234->mhl_d3_work);
+ pr_info("%s() normal goto_d3\n", __func__);
+ } else {
+ pr_info("%s() skip goto_d3\n", __func__);
+ mhl_onoff_ex(0);
+ }
}
}
return IRQ_HANDLED;
@@ -3561,7 +3601,31 @@ static ssize_t sysfs_check_mhl_command(struct class *class,
return size;
}
-static CLASS_ATTR(test_result, 0664, sysfs_check_mhl_command, NULL);
+static ssize_t sysfs_check_factory_store(struct class *class,
+ struct class_attribute *attr, const char *buf, size_t size)
+{
+ struct sii9234_data *sii9234 = dev_get_drvdata(sii9244_mhldev);
+ const char *p = buf;
+ u8 value = 0;
+
+ if (p[0] == '1')
+ value = 1;
+ else
+ value = 0;
+
+ sii9234->pdata->factory_test = value;
+
+ if (sii9234->pdata->factory_test == 1)
+ pr_info("sii9234: in factory mode\n");
+ else
+ pr_info("sii9234: not factory mode\n");
+
+ return size;
+
+}
+
+static CLASS_ATTR(test_result, 0664, sysfs_check_mhl_command,
+ sysfs_check_factory_store);
#endif /*__CONFIG_SS_FACTORY__*/
static ssize_t sysfs_mhl_read_reg_show(struct device *dev,
@@ -3715,6 +3779,9 @@ static void sii9234_extcon_work(struct work_struct *work)
sii9234->extcon_attached ? "attached" : "detached");
if (sii9234->extcon_attached) {
+#ifdef CONFIG_JACK_MON
+ jack_event_handler("hdmi", 1);
+#endif
#ifdef CONFIG_SAMSUNG_MHL
#ifdef CONFIG_MACH_MIDAS
sii9234_wake_lock();
@@ -3723,6 +3790,9 @@ static void sii9234_extcon_work(struct work_struct *work)
#endif
} else {
+#ifdef CONFIG_JACK_MON
+ jack_event_handler("hdmi", 0);
+#endif
#ifdef CONFIG_SAMSUNG_MHL
mhl_onoff_ex(false);
#ifdef CONFIG_MACH_MIDAS
@@ -3815,6 +3885,7 @@ static int __devinit sii9234_mhl_tx_i2c_probe(struct i2c_client *client,
goto err_exit1;
}
sii9234->pdata->mhl_tx_client = client;
+ sii9234->pdata->factory_test = 0;
init_waitqueue_head(&sii9234->wq);
mutex_init(&sii9234->lock);
@@ -3847,14 +3918,6 @@ static int __devinit sii9234_mhl_tx_i2c_probe(struct i2c_client *client,
pr_debug("%s(): wake lock is initialized.\n", __func__);
#endif
- ret = request_threaded_irq(client->irq, NULL, sii9234_irq_thread,
- IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
- "sii9234", sii9234);
- if (ret < 0)
- goto err_exit1;
-
- atomic_set(&sii9234->is_irq_enabled, false);
- disable_irq(client->irq);
#ifdef __SII9234_IRQ_DEBUG__
en_irq = 0;
#endif
@@ -3866,6 +3929,7 @@ static int __devinit sii9234_mhl_tx_i2c_probe(struct i2c_client *client,
printk(KERN_ERR
"[ERROR] %s() workqueue create fail\n", __func__);
ret = -ENOMEM;
+ goto err_msc_wq;
}
INIT_WORK(&sii9234->msc_work, sii9234_process_msc_work);
#endif
@@ -3877,17 +3941,27 @@ static int __devinit sii9234_mhl_tx_i2c_probe(struct i2c_client *client,
printk(KERN_ERR "[ERROR] %s() tmds_offon"
" workqueue create fail\n", __func__);
ret = -ENOMEM;
+ goto err_tmds_offon_wq;
}
INIT_WORK(&sii9234->tmds_offon_work, sii9234_tmds_offon_work);
#endif
+ ret = request_threaded_irq(client->irq, NULL, sii9234_irq_thread,
+ IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
+ "sii9234", sii9234);
+ if (ret < 0)
+ goto err_exit_after_irq;
+
+ atomic_set(&sii9234->is_irq_enabled, false);
+ disable_irq(client->irq);
+
#if defined(__CONFIG_SS_FACTORY__) || defined(__CONFIG_MHL_SWING_LEVEL__)
pr_info("sii9234 : create mhl sysfile\n");
sec_mhl = class_create(THIS_MODULE, "mhl");
if (IS_ERR(sec_mhl)) {
pr_err("[ERROR] Failed to create class(sec_mhl)!\n");
- goto err_exit1;
+ goto err_exit_after_irq;
}
#endif
@@ -3912,12 +3986,14 @@ static int __devinit sii9234_mhl_tx_i2c_probe(struct i2c_client *client,
sii9234->cbus_pkt.command = CBUS_IDLE;
sii9234->cbus_pkt.offset = DEVCAP_DEV_STATE;
+#ifdef __CONFIG_USE_TIMER__
init_timer(&sii9234->cbus_command_timer);
sii9234->cbus_command_timer.function = mhl_cbus_command_timer;
sii9234->cbus_command_timer.data = (unsigned int)NULL;
sii9234->cbus_command_timer.expires = 0xffffffffL;
add_timer(&sii9234->cbus_command_timer);
+#endif
#ifdef CONFIG_SII9234_RCP
/* indicate that we generate key events */
set_bit(EV_KEY, input->evbit);
@@ -3965,6 +4041,11 @@ static int __devinit sii9234_mhl_tx_i2c_probe(struct i2c_client *client,
#ifdef __CONFIG_TMDS_OFFON_WORKAROUND__
sii9234->tmds_state = 0;
#endif
+#if defined(CONFIG_SAMSUNG_WORKAROUND_HPD_GLANCE) &&\
+ !defined(CONFIG_SAMSUNG_MHL_9290)
+ is_mhl_power_state_on = sii9234_is_mhl_power_state_on;
+#endif
+
return 0;
#ifdef CONFIG_EXTCON
@@ -3972,6 +4053,9 @@ err_extcon:
extcon_unregister_interest(&sii9234->extcon_dev);
#endif
err_exit2c:
+#ifdef __CONFIG_USE_TIMER__
+ del_timer(&sii9234->cbus_command_timer);
+#endif
#ifdef __CONFIG_MHL_SWING_LEVEL__
class_remove_file(sec_mhl, &class_attr_swing);
#endif
@@ -3983,12 +4067,25 @@ err_extcon:
#if defined(__CONFIG_SS_FACTORY__) || defined(__CONFIG_MHL_SWING_LEVEL__)
class_destroy(sec_mhl);
#endif
- err_exit1:
+err_exit_after_irq:
+ free_irq(client->irq, sii9234);
+#ifdef __CONFIG_TMDS_OFFON_WORKAROUND__
+err_tmds_offon_wq:
+ destroy_workqueue(sii9234_tmds_offon_wq);
+#endif
+
+#ifdef __MHL_NEW_CBUS_MSC_CMD__
+err_msc_wq:
+ destroy_workqueue(sii9234_msc_wq);
+#endif
+
+err_exit1:
#ifdef CONFIG_SII9234_RCP
input_free_device(input);
#endif
- err_exit0:
+err_exit0:
kfree(sii9234);
+ sii9234 = NULL;
return ret;
}
diff --git a/drivers/media/video/mhl/sii9234_driver.h b/drivers/media/video/mhl/sii9234_driver.h
index 081e5f6..437d053 100644
--- a/drivers/media/video/mhl/sii9234_driver.h
+++ b/drivers/media/video/mhl/sii9234_driver.h
@@ -34,6 +34,10 @@
#define __CONFIG_TMDS_OFFON_WORKAROUND__
#endif
+#ifndef __CONFIG_USE_TIMER__
+#define __CONFIG_USE_TIMER__
+#endif
+
#ifndef CONFIG_SII9234_RCP
#define CONFIG_SII9234_RCP 1
#include <linux/input.h>
@@ -533,7 +537,9 @@ struct sii9234_data {
#ifdef __CONFIG_TMDS_OFFON_WORKAROUND__
struct work_struct tmds_offon_work;
#endif
+#ifdef __CONFIG_USE_TIMER__
struct timer_list cbus_command_timer;
+#endif
#ifdef CONFIG_MACH_MIDAS
struct wake_lock mhl_wake_lock;
#endif
diff --git a/drivers/media/video/s5c73m3_spi.c b/drivers/media/video/s5c73m3_spi.c
index 0b537cb..0b537cb 100755..100644
--- a/drivers/media/video/s5c73m3_spi.c
+++ b/drivers/media/video/s5c73m3_spi.c
diff --git a/drivers/media/video/s5k5bafx.h b/drivers/media/video/s5k5bafx.h
index 00f4c88..00f4c88 100644..100755
--- a/drivers/media/video/s5k5bafx.h
+++ b/drivers/media/video/s5k5bafx.h
diff --git a/drivers/media/video/samsung/Kconfig b/drivers/media/video/samsung/Kconfig
index 8421224..7ae9e6a 100644
--- a/drivers/media/video/samsung/Kconfig
+++ b/drivers/media/video/samsung/Kconfig
@@ -17,11 +17,8 @@ if CPU_EXYNOS4210 || CPU_EXYNOS4212 || CPU_EXYNOS4412
source "drivers/media/video/samsung/fimc/Kconfig"
source "drivers/media/video/samsung/tvout/Kconfig"
source "drivers/media/video/samsung/mfc5x/Kconfig"
- source "drivers/media/video/samsung/ump/Kconfig"
- source "drivers/media/video/samsung/tsi/Kconfig"
-endif
-if (CPU_EXYNOS4210 || CPU_EXYNOS4212 || CPU_EXYNOS4412) && !SLP
- source "drivers/media/video/samsung/mali/Kconfig"
+ source "drivers/media/video/samsung/mali/Kconfig"
+ source "drivers/media/video/samsung/ump/Kconfig"
endif
config VIDEO_FIMG2D
diff --git a/drivers/media/video/samsung/Makefile b/drivers/media/video/samsung/Makefile
index 639d3bc..e9905d2 100644
--- a/drivers/media/video/samsung/Makefile
+++ b/drivers/media/video/samsung/Makefile
@@ -12,26 +12,8 @@ obj-$(CONFIG_VIDEO_FIMG2D3X) += fimg2d3x/
obj-$(CONFIG_VIDEO_FIMG2D4X) += fimg2d4x/
endif
-ifeq ($(CONFIG_MACH_U1), y)
obj-$(CONFIG_VIDEO_UMP) += ump/
-else ifeq ($(CONFIG_MACH_SMDKC210), y)
-obj-$(CONFIG_VIDEO_UMP) += ump/
-else ifeq ($(CONFIG_MACH_SMDKV310), y)
-obj-$(CONFIG_VIDEO_UMP) += ump/
-else
-obj-$(CONFIG_VIDEO_UMP) += ump/
-endif
-
obj-$(CONFIG_VIDEO_TSI) += tsi/
-
-ifeq ($(CONFIG_MACH_U1), y)
-obj-$(CONFIG_VIDEO_MALI400MP) += mali/
-else ifeq ($(CONFIG_MACH_SMDKC210), y)
-obj-$(CONFIG_VIDEO_MALI400MP) += mali/
-else ifeq ($(CONFIG_MACH_SMDKV310), y)
obj-$(CONFIG_VIDEO_MALI400MP) += mali/
-else
-obj-$(CONFIG_VIDEO_MALI400MP) += mali/
-endif
EXTRA_CFLAGS += -Idrivers/media/video
diff --git a/drivers/media/video/samsung/jpeg_v2x/jpeg_dev.c b/drivers/media/video/samsung/jpeg_v2x/jpeg_dev.c
index eb026ab..eb026ab 100644..100755
--- a/drivers/media/video/samsung/jpeg_v2x/jpeg_dev.c
+++ b/drivers/media/video/samsung/jpeg_v2x/jpeg_dev.c
diff --git a/drivers/media/video/samsung/mali/Kconfig b/drivers/media/video/samsung/mali/Kconfig
index ae9bd7d..1736eed 100644
--- a/drivers/media/video/samsung/mali/Kconfig
+++ b/drivers/media/video/samsung/mali/Kconfig
@@ -38,6 +38,14 @@ int "Dedicated Memory Size"
default "128"
---help---
This value is dedicated memory size of Mali GPU(unit is MByte).
+
+config MALI_R3P1_LSI
+ bool "Uses the R3P1 as a kernel module"
+ depends on VIDEO_MALI400MP
+ default n
+ ---help---
+ This uses the r3p1 as a MALI kernel module
+
# For DEBUG
config VIDEO_MALI400MP_DEBUG
diff --git a/drivers/media/video/samsung/mali/Makefile_module b/drivers/media/video/samsung/mali/Makefile_module
index 4fb0226..4fb0226 100644..100755
--- a/drivers/media/video/samsung/mali/Makefile_module
+++ b/drivers/media/video/samsung/mali/Makefile_module
diff --git a/drivers/media/video/samsung/mali/arch b/drivers/media/video/samsung/mali/arch
new file mode 120000
index 0000000..58ffbe7
--- /dev/null
+++ b/drivers/media/video/samsung/mali/arch
@@ -0,0 +1 @@
+arch-release \ No newline at end of file
diff --git a/drivers/media/video/samsung/mali/arch-debug b/drivers/media/video/samsung/mali/arch-debug
new file mode 120000
index 0000000..0ed0909
--- /dev/null
+++ b/drivers/media/video/samsung/mali/arch-debug
@@ -0,0 +1 @@
+arch-pegasus-m400/ \ No newline at end of file
diff --git a/drivers/media/video/samsung/mali/arch-debug/config.h b/drivers/media/video/samsung/mali/arch-debug/config.h
deleted file mode 100644
index d5196c3..0000000
--- a/drivers/media/video/samsung/mali/arch-debug/config.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2010-2012 ARM Limited. All rights reserved.
- *
- * This program is free software and is provided to you under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
- *
- * A copy of the licence is included with the program, and can also be obtained from Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef __ARCH_CONFIG_H__
-#define __ARCH_CONFIG_H__
-
-/* Configuration for the EB platform with ZBT memory enabled */
-/*zepplin added 2010.08.17 for orion configuration*/
-#define MALI_BASE_ADDR 0x13000000
-#define GP_ADDR MALI_BASE_ADDR
-#define L2_ADDR MALI_BASE_ADDR+0x1000
-#define PMU_ADDR MALI_BASE_ADDR+0x2000
-#define GP_MMU_ADDR MALI_BASE_ADDR+0x3000
-#define PP0_MMU_ADDR MALI_BASE_ADDR+0x4000
-#define PP1_MMU_ADDR MALI_BASE_ADDR+0x5000
-#define PP2_MMU_ADDR MALI_BASE_ADDR+0x6000
-#define PP3_MMU_ADDR MALI_BASE_ADDR+0x7000
-#define PP0_ADDR MALI_BASE_ADDR+0x8000
-#define PP1_ADDR MALI_BASE_ADDR+0xA000
-#define PP2_ADDR MALI_BASE_ADDR+0xC000
-#define PP3_ADDR MALI_BASE_ADDR+0xE000
-
-/*for mmu and os memory*/
-#define MEM_BASE_ADDR 0x40000000
-#define MEM_TOTAL_SIZE 0x40000000
-#define MEM_MALI_OS_SIZE 0x40000000
-
-/*for dedicated memory*/
-//#define MEM_MALI_BASE 0x58000000
-//#define MEM_MALI_SIZE 0x08000000
-#define MEM_MALI_SIZE CONFIG_MALI_MEM_SIZE*1024*1024
-#define MEM_MALI_BASE 0x80000000 - MEM_MALI_SIZE
-
-static _mali_osk_resource_t arch_configuration [] =
-{
- {
- .type = MALI400GP,
- .description = "Mali-400 GP",
- .base = GP_ADDR,
- .irq = IRQ_GP_3D,
- .mmu_id = 1
- },
- {
- .type = MALI400PP,
- .base = PP0_ADDR,
- .irq = IRQ_PP0_3D,
- .description = "Mali-400 PP 0",
- .mmu_id = 2
- },
- {
- .type = MALI400PP,
- .base = PP1_ADDR,
- .irq = IRQ_PP1_3D,
- .description = "Mali-400 PP 1",
- .mmu_id = 3
- },
- {
- .type = MALI400PP,
- .base = PP2_ADDR,
- .irq = IRQ_PP2_3D,
- .description = "Mali-400 PP 2",
- .mmu_id = 4
- },
- {
- .type = MALI400PP,
- .base = PP3_ADDR,
- .irq = IRQ_PP3_3D,
- .description = "Mali-400 PP 3",
- .mmu_id = 5
- },
-#if USING_MMU
- {
- .type = MMU,
- .base = GP_MMU_ADDR,
- .irq = IRQ_GPMMU_3D,
- .description = "Mali-400 MMU for GP",
- .mmu_id = 1
- },
- {
- .type = MMU,
- .base = PP0_MMU_ADDR,
- .irq = IRQ_PPMMU0_3D,
- .description = "Mali-400 MMU for PP 0",
- .mmu_id = 2
- },
- {
- .type = MMU,
- .base = PP1_MMU_ADDR,
- .irq = IRQ_PPMMU1_3D,
- .description = "Mali-400 MMU for PP 1",
- .mmu_id = 3
- },
- {
- .type = MMU,
- .base = PP2_MMU_ADDR,
- .irq = IRQ_PPMMU2_3D,
- .description = "Mali-400 MMU for PP 2",
- .mmu_id = 4
- },
- {
- .type = MMU,
- .base = PP3_MMU_ADDR,
- .irq = IRQ_PPMMU3_3D,
- .description = "Mali-400 MMU for PP 3",
- .mmu_id = 5
- },
-#if USING_OS_MEMORY
- {
- .type = OS_MEMORY,
- .description = "System Memory",
- .size = MEM_MALI_OS_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE
- },
-#endif
-#if USING_DED /* Dedicated Memory */
- {
- .type = MEMORY,
- .description = "Dedicated Memory",
- .base = MEM_MALI_BASE,
- .size = MEM_MALI_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#endif/* if USING_OS_MEMORY*/
- {
- .type = MEM_VALIDATION,
- .description = "memory validation",
- .base = MEM_BASE_ADDR,
- .size = MEM_TOTAL_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#else /* Not using MMU */
- {
- .type = MEMORY,
- .description = "Dedicated Memory",
- .base = MEM_MALI_BASE,
- .size = MEM_MALI_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#endif
- {
- .type = MALI400L2,
- .base = L2_ADDR,
- .description = "Mali-400 L2 cache"
- },
-};
-
-#endif /* __ARCH_CONFIG_H__ */
diff --git a/drivers/media/video/samsung/mali/arch-pb-virtex5-m300/config.h b/drivers/media/video/samsung/mali/arch-pb-virtex5-m300/config.h
index e579526..e579526 100644..100755
--- a/drivers/media/video/samsung/mali/arch-pb-virtex5-m300/config.h
+++ b/drivers/media/video/samsung/mali/arch-pb-virtex5-m300/config.h
diff --git a/drivers/media/video/samsung/mali/arch-pegasus-m400/config.h b/drivers/media/video/samsung/mali/arch-pegasus-m400/config.h
index d5196c3..d5196c3 100644..100755
--- a/drivers/media/video/samsung/mali/arch-pegasus-m400/config.h
+++ b/drivers/media/video/samsung/mali/arch-pegasus-m400/config.h
diff --git a/drivers/media/video/samsung/mali/arch-release b/drivers/media/video/samsung/mali/arch-release
new file mode 120000
index 0000000..0ed0909
--- /dev/null
+++ b/drivers/media/video/samsung/mali/arch-release
@@ -0,0 +1 @@
+arch-pegasus-m400/ \ No newline at end of file
diff --git a/drivers/media/video/samsung/mali/arch-release/config.h b/drivers/media/video/samsung/mali/arch-release/config.h
deleted file mode 100644
index d5196c3..0000000
--- a/drivers/media/video/samsung/mali/arch-release/config.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2010-2012 ARM Limited. All rights reserved.
- *
- * This program is free software and is provided to you under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
- *
- * A copy of the licence is included with the program, and can also be obtained from Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef __ARCH_CONFIG_H__
-#define __ARCH_CONFIG_H__
-
-/* Configuration for the EB platform with ZBT memory enabled */
-/*zepplin added 2010.08.17 for orion configuration*/
-#define MALI_BASE_ADDR 0x13000000
-#define GP_ADDR MALI_BASE_ADDR
-#define L2_ADDR MALI_BASE_ADDR+0x1000
-#define PMU_ADDR MALI_BASE_ADDR+0x2000
-#define GP_MMU_ADDR MALI_BASE_ADDR+0x3000
-#define PP0_MMU_ADDR MALI_BASE_ADDR+0x4000
-#define PP1_MMU_ADDR MALI_BASE_ADDR+0x5000
-#define PP2_MMU_ADDR MALI_BASE_ADDR+0x6000
-#define PP3_MMU_ADDR MALI_BASE_ADDR+0x7000
-#define PP0_ADDR MALI_BASE_ADDR+0x8000
-#define PP1_ADDR MALI_BASE_ADDR+0xA000
-#define PP2_ADDR MALI_BASE_ADDR+0xC000
-#define PP3_ADDR MALI_BASE_ADDR+0xE000
-
-/*for mmu and os memory*/
-#define MEM_BASE_ADDR 0x40000000
-#define MEM_TOTAL_SIZE 0x40000000
-#define MEM_MALI_OS_SIZE 0x40000000
-
-/*for dedicated memory*/
-//#define MEM_MALI_BASE 0x58000000
-//#define MEM_MALI_SIZE 0x08000000
-#define MEM_MALI_SIZE CONFIG_MALI_MEM_SIZE*1024*1024
-#define MEM_MALI_BASE 0x80000000 - MEM_MALI_SIZE
-
-static _mali_osk_resource_t arch_configuration [] =
-{
- {
- .type = MALI400GP,
- .description = "Mali-400 GP",
- .base = GP_ADDR,
- .irq = IRQ_GP_3D,
- .mmu_id = 1
- },
- {
- .type = MALI400PP,
- .base = PP0_ADDR,
- .irq = IRQ_PP0_3D,
- .description = "Mali-400 PP 0",
- .mmu_id = 2
- },
- {
- .type = MALI400PP,
- .base = PP1_ADDR,
- .irq = IRQ_PP1_3D,
- .description = "Mali-400 PP 1",
- .mmu_id = 3
- },
- {
- .type = MALI400PP,
- .base = PP2_ADDR,
- .irq = IRQ_PP2_3D,
- .description = "Mali-400 PP 2",
- .mmu_id = 4
- },
- {
- .type = MALI400PP,
- .base = PP3_ADDR,
- .irq = IRQ_PP3_3D,
- .description = "Mali-400 PP 3",
- .mmu_id = 5
- },
-#if USING_MMU
- {
- .type = MMU,
- .base = GP_MMU_ADDR,
- .irq = IRQ_GPMMU_3D,
- .description = "Mali-400 MMU for GP",
- .mmu_id = 1
- },
- {
- .type = MMU,
- .base = PP0_MMU_ADDR,
- .irq = IRQ_PPMMU0_3D,
- .description = "Mali-400 MMU for PP 0",
- .mmu_id = 2
- },
- {
- .type = MMU,
- .base = PP1_MMU_ADDR,
- .irq = IRQ_PPMMU1_3D,
- .description = "Mali-400 MMU for PP 1",
- .mmu_id = 3
- },
- {
- .type = MMU,
- .base = PP2_MMU_ADDR,
- .irq = IRQ_PPMMU2_3D,
- .description = "Mali-400 MMU for PP 2",
- .mmu_id = 4
- },
- {
- .type = MMU,
- .base = PP3_MMU_ADDR,
- .irq = IRQ_PPMMU3_3D,
- .description = "Mali-400 MMU for PP 3",
- .mmu_id = 5
- },
-#if USING_OS_MEMORY
- {
- .type = OS_MEMORY,
- .description = "System Memory",
- .size = MEM_MALI_OS_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE
- },
-#endif
-#if USING_DED /* Dedicated Memory */
- {
- .type = MEMORY,
- .description = "Dedicated Memory",
- .base = MEM_MALI_BASE,
- .size = MEM_MALI_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#endif/* if USING_OS_MEMORY*/
- {
- .type = MEM_VALIDATION,
- .description = "memory validation",
- .base = MEM_BASE_ADDR,
- .size = MEM_TOTAL_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#else /* Not using MMU */
- {
- .type = MEMORY,
- .description = "Dedicated Memory",
- .base = MEM_MALI_BASE,
- .size = MEM_MALI_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#endif
- {
- .type = MALI400L2,
- .base = L2_ADDR,
- .description = "Mali-400 L2 cache"
- },
-};
-
-#endif /* __ARCH_CONFIG_H__ */
diff --git a/drivers/media/video/samsung/mali/arch/config.h b/drivers/media/video/samsung/mali/arch/config.h
deleted file mode 100644
index d5196c3..0000000
--- a/drivers/media/video/samsung/mali/arch/config.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2010-2012 ARM Limited. All rights reserved.
- *
- * This program is free software and is provided to you under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
- *
- * A copy of the licence is included with the program, and can also be obtained from Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef __ARCH_CONFIG_H__
-#define __ARCH_CONFIG_H__
-
-/* Configuration for the EB platform with ZBT memory enabled */
-/*zepplin added 2010.08.17 for orion configuration*/
-#define MALI_BASE_ADDR 0x13000000
-#define GP_ADDR MALI_BASE_ADDR
-#define L2_ADDR MALI_BASE_ADDR+0x1000
-#define PMU_ADDR MALI_BASE_ADDR+0x2000
-#define GP_MMU_ADDR MALI_BASE_ADDR+0x3000
-#define PP0_MMU_ADDR MALI_BASE_ADDR+0x4000
-#define PP1_MMU_ADDR MALI_BASE_ADDR+0x5000
-#define PP2_MMU_ADDR MALI_BASE_ADDR+0x6000
-#define PP3_MMU_ADDR MALI_BASE_ADDR+0x7000
-#define PP0_ADDR MALI_BASE_ADDR+0x8000
-#define PP1_ADDR MALI_BASE_ADDR+0xA000
-#define PP2_ADDR MALI_BASE_ADDR+0xC000
-#define PP3_ADDR MALI_BASE_ADDR+0xE000
-
-/*for mmu and os memory*/
-#define MEM_BASE_ADDR 0x40000000
-#define MEM_TOTAL_SIZE 0x40000000
-#define MEM_MALI_OS_SIZE 0x40000000
-
-/*for dedicated memory*/
-//#define MEM_MALI_BASE 0x58000000
-//#define MEM_MALI_SIZE 0x08000000
-#define MEM_MALI_SIZE CONFIG_MALI_MEM_SIZE*1024*1024
-#define MEM_MALI_BASE 0x80000000 - MEM_MALI_SIZE
-
-static _mali_osk_resource_t arch_configuration [] =
-{
- {
- .type = MALI400GP,
- .description = "Mali-400 GP",
- .base = GP_ADDR,
- .irq = IRQ_GP_3D,
- .mmu_id = 1
- },
- {
- .type = MALI400PP,
- .base = PP0_ADDR,
- .irq = IRQ_PP0_3D,
- .description = "Mali-400 PP 0",
- .mmu_id = 2
- },
- {
- .type = MALI400PP,
- .base = PP1_ADDR,
- .irq = IRQ_PP1_3D,
- .description = "Mali-400 PP 1",
- .mmu_id = 3
- },
- {
- .type = MALI400PP,
- .base = PP2_ADDR,
- .irq = IRQ_PP2_3D,
- .description = "Mali-400 PP 2",
- .mmu_id = 4
- },
- {
- .type = MALI400PP,
- .base = PP3_ADDR,
- .irq = IRQ_PP3_3D,
- .description = "Mali-400 PP 3",
- .mmu_id = 5
- },
-#if USING_MMU
- {
- .type = MMU,
- .base = GP_MMU_ADDR,
- .irq = IRQ_GPMMU_3D,
- .description = "Mali-400 MMU for GP",
- .mmu_id = 1
- },
- {
- .type = MMU,
- .base = PP0_MMU_ADDR,
- .irq = IRQ_PPMMU0_3D,
- .description = "Mali-400 MMU for PP 0",
- .mmu_id = 2
- },
- {
- .type = MMU,
- .base = PP1_MMU_ADDR,
- .irq = IRQ_PPMMU1_3D,
- .description = "Mali-400 MMU for PP 1",
- .mmu_id = 3
- },
- {
- .type = MMU,
- .base = PP2_MMU_ADDR,
- .irq = IRQ_PPMMU2_3D,
- .description = "Mali-400 MMU for PP 2",
- .mmu_id = 4
- },
- {
- .type = MMU,
- .base = PP3_MMU_ADDR,
- .irq = IRQ_PPMMU3_3D,
- .description = "Mali-400 MMU for PP 3",
- .mmu_id = 5
- },
-#if USING_OS_MEMORY
- {
- .type = OS_MEMORY,
- .description = "System Memory",
- .size = MEM_MALI_OS_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE
- },
-#endif
-#if USING_DED /* Dedicated Memory */
- {
- .type = MEMORY,
- .description = "Dedicated Memory",
- .base = MEM_MALI_BASE,
- .size = MEM_MALI_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#endif/* if USING_OS_MEMORY*/
- {
- .type = MEM_VALIDATION,
- .description = "memory validation",
- .base = MEM_BASE_ADDR,
- .size = MEM_TOTAL_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#else /* Not using MMU */
- {
- .type = MEMORY,
- .description = "Dedicated Memory",
- .base = MEM_MALI_BASE,
- .size = MEM_MALI_SIZE,
- .flags = _MALI_CPU_WRITEABLE | _MALI_CPU_READABLE | _MALI_PP_READABLE | _MALI_PP_WRITEABLE | _MALI_GP_READABLE | _MALI_GP_WRITEABLE | _MALI_MMU_READABLE | _MALI_MMU_WRITEABLE
- },
-#endif
- {
- .type = MALI400L2,
- .base = L2_ADDR,
- .description = "Mali-400 L2 cache"
- },
-};
-
-#endif /* __ARCH_CONFIG_H__ */
diff --git a/drivers/media/video/samsung/mali/common/mali_block_allocator.c b/drivers/media/video/samsung/mali/common/mali_block_allocator.c
index 269e662..269e662 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_block_allocator.c
+++ b/drivers/media/video/samsung/mali/common/mali_block_allocator.c
diff --git a/drivers/media/video/samsung/mali/common/mali_block_allocator.h b/drivers/media/video/samsung/mali/common/mali_block_allocator.h
index d3f0f9b..d3f0f9b 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_block_allocator.h
+++ b/drivers/media/video/samsung/mali/common/mali_block_allocator.h
diff --git a/drivers/media/video/samsung/mali/common/mali_device_pause_resume.c b/drivers/media/video/samsung/mali/common/mali_device_pause_resume.c
index 6af1279..6af1279 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_device_pause_resume.c
+++ b/drivers/media/video/samsung/mali/common/mali_device_pause_resume.c
diff --git a/drivers/media/video/samsung/mali/common/mali_device_pause_resume.h b/drivers/media/video/samsung/mali/common/mali_device_pause_resume.h
index 6be75b0..6be75b0 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_device_pause_resume.h
+++ b/drivers/media/video/samsung/mali/common/mali_device_pause_resume.h
diff --git a/drivers/media/video/samsung/mali/common/mali_gp.h b/drivers/media/video/samsung/mali/common/mali_gp.h
index 3175b75..3175b75 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_gp.h
+++ b/drivers/media/video/samsung/mali/common/mali_gp.h
diff --git a/drivers/media/video/samsung/mali/common/mali_gp_scheduler.h b/drivers/media/video/samsung/mali/common/mali_gp_scheduler.h
index ef58509..ef58509 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_gp_scheduler.h
+++ b/drivers/media/video/samsung/mali/common/mali_gp_scheduler.h
diff --git a/drivers/media/video/samsung/mali/common/mali_hw_core.c b/drivers/media/video/samsung/mali/common/mali_hw_core.c
index 0b08622..0b08622 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_hw_core.c
+++ b/drivers/media/video/samsung/mali/common/mali_hw_core.c
diff --git a/drivers/media/video/samsung/mali/common/mali_hw_core.h b/drivers/media/video/samsung/mali/common/mali_hw_core.h
index c797804..c797804 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_hw_core.h
+++ b/drivers/media/video/samsung/mali/common/mali_hw_core.h
diff --git a/drivers/media/video/samsung/mali/common/mali_kernel_core.h b/drivers/media/video/samsung/mali/common/mali_kernel_core.h
index d424c48..d424c48 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_kernel_core.h
+++ b/drivers/media/video/samsung/mali/common/mali_kernel_core.h
diff --git a/drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.c b/drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.c
index b9f05ca..b9f05ca 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.c
+++ b/drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.c
diff --git a/drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.h b/drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.h
index 82ed94d..82ed94d 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.h
+++ b/drivers/media/video/samsung/mali/common/mali_kernel_descriptor_mapping.h
diff --git a/drivers/media/video/samsung/mali/common/mali_kernel_mem_os.h b/drivers/media/video/samsung/mali/common/mali_kernel_mem_os.h
index 0946169..0946169 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_kernel_mem_os.h
+++ b/drivers/media/video/samsung/mali/common/mali_kernel_mem_os.h
diff --git a/drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.c b/drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.c
index 1377560..1377560 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.c
+++ b/drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.c
diff --git a/drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.h b/drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.h
index cda74c3..cda74c3 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.h
+++ b/drivers/media/video/samsung/mali/common/mali_kernel_memory_engine.h
diff --git a/drivers/media/video/samsung/mali/common/mali_kernel_utilization.c b/drivers/media/video/samsung/mali/common/mali_kernel_utilization.c
index a374dbf..a374dbf 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_kernel_utilization.c
+++ b/drivers/media/video/samsung/mali/common/mali_kernel_utilization.c
diff --git a/drivers/media/video/samsung/mali/common/mali_kernel_utilization.h b/drivers/media/video/samsung/mali/common/mali_kernel_utilization.h
index 1f60517..1f60517 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_kernel_utilization.h
+++ b/drivers/media/video/samsung/mali/common/mali_kernel_utilization.h
diff --git a/drivers/media/video/samsung/mali/common/mali_mem_validation.h b/drivers/media/video/samsung/mali/common/mali_mem_validation.h
index 2043b44..2043b44 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_mem_validation.h
+++ b/drivers/media/video/samsung/mali/common/mali_mem_validation.h
diff --git a/drivers/media/video/samsung/mali/common/mali_osk_bitops.h b/drivers/media/video/samsung/mali/common/mali_osk_bitops.h
index f262f7d..f262f7d 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_osk_bitops.h
+++ b/drivers/media/video/samsung/mali/common/mali_osk_bitops.h
diff --git a/drivers/media/video/samsung/mali/common/mali_osk_list.h b/drivers/media/video/samsung/mali/common/mali_osk_list.h
index a8d15f2..a8d15f2 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_osk_list.h
+++ b/drivers/media/video/samsung/mali/common/mali_osk_list.h
diff --git a/drivers/media/video/samsung/mali/common/mali_osk_mali.h b/drivers/media/video/samsung/mali/common/mali_osk_mali.h
index 427fcc8..427fcc8 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_osk_mali.h
+++ b/drivers/media/video/samsung/mali/common/mali_osk_mali.h
diff --git a/drivers/media/video/samsung/mali/common/mali_pm.h b/drivers/media/video/samsung/mali/common/mali_pm.h
index d4ccfde..d4ccfde 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_pm.h
+++ b/drivers/media/video/samsung/mali/common/mali_pm.h
diff --git a/drivers/media/video/samsung/mali/common/mali_pp.h b/drivers/media/video/samsung/mali/common/mali_pp.h
index 9b425a0..9b425a0 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_pp.h
+++ b/drivers/media/video/samsung/mali/common/mali_pp.h
diff --git a/drivers/media/video/samsung/mali/common/mali_pp_scheduler.h b/drivers/media/video/samsung/mali/common/mali_pp_scheduler.h
index 48eb3bd..48eb3bd 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_pp_scheduler.h
+++ b/drivers/media/video/samsung/mali/common/mali_pp_scheduler.h
diff --git a/drivers/media/video/samsung/mali/common/mali_scheduler.c b/drivers/media/video/samsung/mali/common/mali_scheduler.c
index 52159a0..52159a0 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_scheduler.c
+++ b/drivers/media/video/samsung/mali/common/mali_scheduler.c
diff --git a/drivers/media/video/samsung/mali/common/mali_scheduler.h b/drivers/media/video/samsung/mali/common/mali_scheduler.h
index 74f0947..74f0947 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_scheduler.h
+++ b/drivers/media/video/samsung/mali/common/mali_scheduler.h
diff --git a/drivers/media/video/samsung/mali/common/mali_session.h b/drivers/media/video/samsung/mali/common/mali_session.h
index b47c340..b47c340 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_session.h
+++ b/drivers/media/video/samsung/mali/common/mali_session.h
diff --git a/drivers/media/video/samsung/mali/common/mali_user_settings_db.c b/drivers/media/video/samsung/mali/common/mali_user_settings_db.c
index 681c2b0..681c2b0 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_user_settings_db.c
+++ b/drivers/media/video/samsung/mali/common/mali_user_settings_db.c
diff --git a/drivers/media/video/samsung/mali/common/mali_user_settings_db.h b/drivers/media/video/samsung/mali/common/mali_user_settings_db.h
index fbb9415..fbb9415 100644..100755
--- a/drivers/media/video/samsung/mali/common/mali_user_settings_db.h
+++ b/drivers/media/video/samsung/mali/common/mali_user_settings_db.h
diff --git a/drivers/media/video/samsung/mali/linux/license/gpl/mali_kernel_license.h b/drivers/media/video/samsung/mali/linux/license/gpl/mali_kernel_license.h
index e9e5e55..e9e5e55 100644..100755
--- a/drivers/media/video/samsung/mali/linux/license/gpl/mali_kernel_license.h
+++ b/drivers/media/video/samsung/mali/linux/license/gpl/mali_kernel_license.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_kernel_ioctl.h b/drivers/media/video/samsung/mali/linux/mali_kernel_ioctl.h
index 6fc59a7..6fc59a7 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_kernel_ioctl.h
+++ b/drivers/media/video/samsung/mali/linux/mali_kernel_ioctl.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_kernel_linux.h b/drivers/media/video/samsung/mali/linux/mali_kernel_linux.h
index 22dc9a4..22dc9a4 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_kernel_linux.h
+++ b/drivers/media/video/samsung/mali/linux/mali_kernel_linux.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_kernel_pm.h b/drivers/media/video/samsung/mali/linux/mali_kernel_pm.h
index 6ef7270..6ef7270 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_kernel_pm.h
+++ b/drivers/media/video/samsung/mali/linux/mali_kernel_pm.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_kernel_sysfs.h b/drivers/media/video/samsung/mali/linux/mali_kernel_sysfs.h
index d79a886..d79a886 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_kernel_sysfs.h
+++ b/drivers/media/video/samsung/mali/linux/mali_kernel_sysfs.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_linux_pm.h b/drivers/media/video/samsung/mali/linux/mali_linux_pm.h
index 10f633e..10f633e 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_linux_pm.h
+++ b/drivers/media/video/samsung/mali/linux/mali_linux_pm.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_linux_pm_testsuite.h b/drivers/media/video/samsung/mali/linux/mali_linux_pm_testsuite.h
index 7d811bd..7d811bd 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_linux_pm_testsuite.h
+++ b/drivers/media/video/samsung/mali/linux/mali_linux_pm_testsuite.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_atomics.c b/drivers/media/video/samsung/mali/linux/mali_osk_atomics.c
index 05831c5..05831c5 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_atomics.c
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_atomics.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.c b/drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.c
index 7297218..7297218 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.c
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.h b/drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.h
index f87739b..f87739b 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.h
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_indir_mmap.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_math.c b/drivers/media/video/samsung/mali/linux/mali_osk_math.c
index 3e62e51..3e62e51 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_math.c
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_math.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_memory.c b/drivers/media/video/samsung/mali/linux/mali_osk_memory.c
index 7bb470f..7bb470f 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_memory.c
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_memory.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_misc.c b/drivers/media/video/samsung/mali/linux/mali_osk_misc.c
index ad486db..ad486db 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_misc.c
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_misc.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_notification.c b/drivers/media/video/samsung/mali/linux/mali_osk_notification.c
index c14c0d5..c14c0d5 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_notification.c
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_notification.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_specific.h b/drivers/media/video/samsung/mali/linux/mali_osk_specific.h
index 83ee906..83ee906 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_specific.h
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_specific.h
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_time.c b/drivers/media/video/samsung/mali/linux/mali_osk_time.c
index da9b865..da9b865 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_time.c
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_time.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_osk_timers.c b/drivers/media/video/samsung/mali/linux/mali_osk_timers.c
index e5829a3..e5829a3 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_osk_timers.c
+++ b/drivers/media/video/samsung/mali/linux/mali_osk_timers.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_ukk_gp.c b/drivers/media/video/samsung/mali/linux/mali_ukk_gp.c
index 7070016..7070016 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_ukk_gp.c
+++ b/drivers/media/video/samsung/mali/linux/mali_ukk_gp.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_ukk_mem.c b/drivers/media/video/samsung/mali/linux/mali_ukk_mem.c
index 260f257..260f257 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_ukk_mem.c
+++ b/drivers/media/video/samsung/mali/linux/mali_ukk_mem.c
diff --git a/drivers/media/video/samsung/mali/linux/mali_ukk_vsync.c b/drivers/media/video/samsung/mali/linux/mali_ukk_vsync.c
index f9b5a3e..f9b5a3e 100644..100755
--- a/drivers/media/video/samsung/mali/linux/mali_ukk_vsync.c
+++ b/drivers/media/video/samsung/mali/linux/mali_ukk_vsync.c
diff --git a/drivers/media/video/samsung/mali/platform/default/mali_platform.c b/drivers/media/video/samsung/mali/platform/default/mali_platform.c
index 9e64ce7..9e64ce7 100644..100755
--- a/drivers/media/video/samsung/mali/platform/default/mali_platform.c
+++ b/drivers/media/video/samsung/mali/platform/default/mali_platform.c
diff --git a/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform.c b/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform.c
index 792b9a9..792b9a9 100644..100755
--- a/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform.c
+++ b/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform.c
diff --git a/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c b/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c
index f8d76dc..f8d76dc 100644..100755
--- a/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c
+++ b/drivers/media/video/samsung/mali/platform/orion-m400/mali_platform_dvfs.c
diff --git a/drivers/media/video/samsung/mali/readme.txt b/drivers/media/video/samsung/mali/readme.txt
index 3acc51c..3acc51c 100644..100755
--- a/drivers/media/video/samsung/mali/readme.txt
+++ b/drivers/media/video/samsung/mali/readme.txt
diff --git a/drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.c b/drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.c
index a6b1d76..a6b1d76 100644..100755
--- a/drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.c
+++ b/drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.c
diff --git a/drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.h b/drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.h
index 3279dae..3279dae 100644..100755
--- a/drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.h
+++ b/drivers/media/video/samsung/mali/timestamp-arm11-cc/mali_timestamp.h
diff --git a/drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.c b/drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.c
index a6b1d76..a6b1d76 100644..100755
--- a/drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.c
+++ b/drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.c
diff --git a/drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.h b/drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.h
index 94b842a..94b842a 100644..100755
--- a/drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.h
+++ b/drivers/media/video/samsung/mali/timestamp-default/mali_timestamp.h
diff --git a/drivers/media/video/samsung/mfc5x/Kconfig b/drivers/media/video/samsung/mfc5x/Kconfig
index 0ff8a60..57858ed 100644
--- a/drivers/media/video/samsung/mfc5x/Kconfig
+++ b/drivers/media/video/samsung/mfc5x/Kconfig
@@ -9,8 +9,8 @@ config VIDEO_MFC5X
This is a Samsung Multi Format Codecs (MFC) FIMV V5.x
config VIDEO_MFC_MAX_INSTANCE
- int "Maximum size of MFC instance (1-4)"
- range 1 4
+ int "Maximum size of MFC instance (1-8)"
+ range 1 8
depends on VIDEO_MFC5X
default 4
@@ -36,4 +36,10 @@ config VIDEO_MFC5X_DEC_CHROMA_LUMA_4K_ALIGN
---help---
To use physical address on the gem interface.
-
+config USE_MFC_CMA
+ bool "Use CMA for MFC_SECURE region (EXPERIMENTAL)"
+ depends on DMA_CMA
+ default n
+ help
+ This enables the Contiguous Memory Allocator for MFC SECURE region.
+ If unsure, say "n".
diff --git a/drivers/media/video/samsung/mfc5x/SsbSipMfcApi.h b/drivers/media/video/samsung/mfc5x/SsbSipMfcApi.h
index ba4b736..cbf6cab 100644
--- a/drivers/media/video/samsung/mfc5x/SsbSipMfcApi.h
+++ b/drivers/media/video/samsung/mfc5x/SsbSipMfcApi.h
@@ -41,11 +41,20 @@
#define SAMSUNG_MFC_DEV_NAME "/dev/s3c-mfc"
#if defined(CONFIG_CPU_EXYNOS4212) || defined(CONFIG_CPU_EXYNOS4412)
-#define SUPPORT_SLICE_ENCODING 0 // This is originally 1, but breaks video recording on AOSP :(
+#define SUPPORT_SLICE_ENCODING 0 // originaly 1, but we're missing matching userspace
#else
#define SUPPORT_SLICE_ENCODING 0
#endif
+/*---------------------------*/
+/* Memory Type */
+/*---------------------------*/
+typedef enum {
+ MEMORY_PHY_ADDR = 0,
+ MEMORY_USRPTR = 1,
+ MEMORY_DMABUF = 2,
+} SSBSIP_MFC_MEMORY_TYPE;
+
/*--------------------------------------------------------------------------------*/
/* Structure and Type */
/*--------------------------------------------------------------------------------*/
@@ -127,6 +136,7 @@ typedef enum {
/* C210 specific feature */
MFC_ENC_SETCONF_VUI_INFO,
MFC_ENC_SETCONF_I_PERIOD,
+ MFC_ENC_SETCONF_SPS_PPS_GEN,
MFC_ENC_SETCONF_HIER_P,
MFC_ENC_SETCONF_SEI_GEN,
@@ -139,7 +149,12 @@ typedef enum {
MFC_GETOUTBUF_DISPLAY_DECODING,
MFC_GETOUTBUF_DISPLAY_ONLY,
MFC_GETOUTBUF_DISPLAY_END,
- MFC_GETOUTBUF_CHANGE_RESOL
+#ifndef CONFIG_SLP
+ MFC_GETOUTBUF_CHANGE_RESOL
+#else
+ MFC_GETOUTBUF_CHANGING_RESOL,
+ MFC_GETOUTBUF_CHANGE_RESOL_DONE
+#endif
} SSBSIP_MFC_DEC_OUTBUF_STATUS;
typedef enum {
diff --git a/drivers/media/video/samsung/mfc5x/mfc.h b/drivers/media/video/samsung/mfc5x/mfc.h
index de1849c..a8c5d72 100644
--- a/drivers/media/video/samsung/mfc5x/mfc.h
+++ b/drivers/media/video/samsung/mfc5x/mfc.h
@@ -98,4 +98,8 @@
#endif
#endif
+#ifdef CONFIG_SLP
+#define MFC_NUM_PLANE 2
+#endif
+
#endif /* __MFC_H_ */
diff --git a/drivers/media/video/samsung/mfc5x/mfc_buf.c b/drivers/media/video/samsung/mfc5x/mfc_buf.c
index e0e243d..d841a37 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_buf.c
+++ b/drivers/media/video/samsung/mfc5x/mfc_buf.c
@@ -16,6 +16,13 @@
#include <linux/mm.h>
#include <linux/err.h>
+#ifdef CONFIG_SLP
+#include <linux/cma.h>
+#ifdef CONFIG_SLP_DMABUF
+#include <linux/dma-buf.h>
+#endif
+#endif
+
#include "mfc.h"
#include "mfc_mem.h"
#include "mfc_buf.h"
@@ -30,6 +37,168 @@
#include "ump_kernel_interface_vcm.h"
#endif
+#ifdef CONFIG_SLP_DMABUF
+struct mfc_dmabuf_buf {
+ dma_addr_t dma_addr;
+ unsigned long size;
+ /* fd exported from this buf object. */
+ int export_fd;
+ /* dma buf exported from this buf object. */
+ struct dma_buf *export_dma_buf;
+ struct dma_buf_attachment *db_attach;
+ atomic_t refcount;
+};
+
+static void _mfc_dmabuf_put(struct mfc_dmabuf_buf *buf)
+{
+ if (atomic_dec_and_test(&buf->refcount)) {
+ /*
+ * In legacy driver, dmabuf functions don't control
+ * cma memory allocation and free.
+ * so, currently we comment cma_free function.
+ * cma_free(buf->dma_addr);
+ */
+ kfree(buf);
+ }
+}
+
+static int mfc_attach_dmabuf(struct dma_buf *dmabuf, struct device *dev,
+ struct dma_buf_attachment *attach)
+{
+ mfc_dbg("mfc_attach_dmabuf: called !\n");
+ return 0;
+}
+
+static void mfc_detach_dmabuf(struct dma_buf *dmabuf,
+ struct dma_buf_attachment *attach)
+{
+ mfc_dbg("mfc_detach_dmabuf: called !\n");
+ dma_buf_put(dmabuf);
+}
+
+static struct sg_table *
+ mfc_map_dmabuf(struct dma_buf_attachment *attach,
+ enum dma_data_direction direction)
+{
+ struct mfc_dmabuf_buf *buf;
+ struct sg_table *sgt;
+ int ret;
+ int val;
+
+ mfc_dbg("mfc_map_dmabuf: called !\n");
+ if (!attach->dmabuf->priv) {
+ mfc_err("mfc_map_dmabuf: failed : attach->dmabuf->priv is NULL\n");
+ return NULL;
+ }
+ buf = attach->dmabuf->priv;
+ sgt = kzalloc(sizeof(struct sg_table), GFP_KERNEL);
+ if (!sgt) {
+ mfc_err("mfc_map_dmabuf: failed to allocate sg table.\n");
+ return ERR_PTR(-ENOMEM);
+ }
+
+ ret = sg_alloc_table(sgt, 1, GFP_KERNEL);
+ if (ret < 0) {
+ mfc_err("mfc_map_dmabuf: failed to allocate scatter list.\n");
+ kfree(sgt);
+ sgt = NULL;
+ return ERR_PTR(-ENOMEM);
+ }
+
+ sg_init_table(sgt->sgl, 1);
+ sg_dma_len(sgt->sgl) = buf->size;
+ sg_set_page(sgt->sgl, pfn_to_page(PFN_DOWN(buf->dma_addr)),
+ buf->size, 0);
+ sg_dma_address(sgt->sgl) = buf->dma_addr;
+
+ /*
+ * increase reference count of this buf object.
+ *
+ * Note:
+ * alloated physical memory region is being shared with others so
+ * this region shouldn't be released until all references of this
+ * region will be dropped by mfc_unmap_dmabuf().
+ */
+ val = atomic_inc_return(&buf->refcount);
+ mfc_dbg("mfc_map_dmabuf: refcount: %d\n", val);
+
+ return sgt;
+}
+
+static void mfc_unmap_dmabuf(struct dma_buf_attachment *attach,
+ struct sg_table *sgt, enum dma_data_direction direction)
+{
+ int val = 0;
+ struct mfc_dmabuf_buf *buf;
+
+ mfc_dbg("mfc_unmap_dmabuf: called !\n");
+ buf = attach->dmabuf->priv;
+
+ sg_free_table(sgt);
+ kfree(sgt);
+ sgt = NULL;
+
+ val = atomic_dec_return(&buf->refcount);
+ mfc_dbg("mfc_unmap_dmabuf: refcount: %d\n", val);
+}
+
+static void mfc_release_dmabuf(struct dma_buf *dmabuf)
+{
+ struct mfc_dmabuf_buf *buf;
+
+ mfc_dbg("mfc_release_dmabuf: called !\n");
+ if (!dmabuf->priv) {
+ mfc_dbg("mfc_release_dmabuf: failed: dmabuf->priv is NULL\n");
+ return;
+ }
+ buf = dmabuf->priv;
+ if (buf->export_dma_buf == dmabuf) {
+ mfc_dbg("mfc_release_dmabuf: called !\n");
+ buf->export_fd = -1;
+ buf->export_dma_buf = NULL;
+
+ _mfc_dmabuf_put(buf);
+ }
+}
+
+static void *mfc_kmap_atomic_dmabuf(struct dma_buf *dma_buf,
+ unsigned long page_num)
+{
+ return NULL;
+}
+
+static void mfc_kunmap_atomic_dmabuf(struct dma_buf *dma_buf,
+ unsigned long page_num,
+ void *addr)
+{
+
+}
+
+static void *mfc_kmap_dmabuf(struct dma_buf *dma_buf,
+ unsigned long page_num)
+{
+ return NULL;
+}
+
+static void mfc_kunmap_dmabuf(struct dma_buf *dma_buf,
+ unsigned long page_num, void *addr)
+{
+
+}
+
+static struct dma_buf_ops mfc_dmabuf_ops = {
+ .attach = mfc_attach_dmabuf,
+ .detach = mfc_detach_dmabuf,
+ .map_dma_buf = mfc_map_dmabuf,
+ .unmap_dma_buf = mfc_unmap_dmabuf,
+ .release = mfc_release_dmabuf,
+ .kmap = mfc_kmap_dmabuf,
+ .kmap_atomic = mfc_kmap_atomic_dmabuf,
+ .kunmap = mfc_kunmap_dmabuf,
+ .kunmap_atomic = mfc_kunmap_atomic_dmabuf,
+};
+#endif
+
#define PRINT_BUF
#undef DEBUG_ALLOC_FREE
@@ -122,7 +291,7 @@ static int mfc_put_free_buf(unsigned long addr, unsigned int size, int port)
/* 0x00: not merged, 0x01: prev merged, 0x02: next merged */
int merged = 0x00;
- if (!size)
+ if ((!size) || (port >= MFC_MAX_MEM_PORT_NUM))
return -EINVAL;
mfc_dbg("addr: 0x%08lx, size: %d, port: %d\n", addr, size, port);
@@ -376,6 +545,13 @@ void mfc_final_buf(void)
kfree(alloc);
}
#else
+#ifdef CONFIG_SLP
+ if (alloc->real) {
+ cma_free(alloc->real);
+ list_del(&alloc->list);
+ kfree(alloc);
+ }
+#else
if (mfc_put_free_buf(alloc->real,
alloc->size, port) < 0) {
@@ -385,6 +561,7 @@ void mfc_final_buf(void)
kfree(alloc);
}
#endif
+#endif
}
}
@@ -466,6 +643,15 @@ struct mfc_alloc_buffer *_mfc_alloc_buf(
#elif defined(CONFIG_S5P_VMEM)
int align_size = 0;
#endif
+#ifdef CONFIG_SLP
+ struct mfc_dev *dev = ctx->dev;
+ size_t available_size;
+ struct cma_info cma_infos;
+#ifdef CONFIG_SLP_DMABUF
+ struct mfc_dmabuf_buf *buf;
+ int flags = 0;
+#endif
+#endif
/*
unsigned long flags;
*/
@@ -486,8 +672,62 @@ struct mfc_alloc_buffer *_mfc_alloc_buf(
/*
spin_lock_irqsave(&lock, flags);
*/
+#ifdef CONFIG_SLP
+ if (cma_info(&cma_infos, dev->device, port ? "B" : "A")) {
+ mfc_info("failed to get CMA info of 'mfc'\n");
+ kfree(alloc);
+ return NULL;
+ }
+ available_size = cma_infos.free_size;
+ if (available_size > MAX_MEM_OFFSET) {
+ mfc_warn("<Warning> too large 'mfc' reserved memory, "
+ "size will be shrink (%d:%d)\n",
+ size >> 10, MAX_MEM_OFFSET >> 10);
+ size = MAX_MEM_OFFSET;
+ }
+ addr = cma_alloc(dev->device, port ? "B" : "A", size, align);
+ if (IS_ERR_VALUE(addr)) {
+ mfc_err("failed to get rsv. memory from CMA");
+ kfree(alloc);
+ return NULL;
+ }
+#ifdef CONFIG_SLP_DMABUF
+ buf = kzalloc(sizeof(struct mfc_dmabuf_buf), GFP_KERNEL);
+ if (!buf) {
+ mfc_err("failed to alloc mfc_dmabuf_buf");
+ kfree(alloc);
+ cma_free(addr);
+ return NULL;
+ }
+ buf->dma_addr = addr;
+ buf->size = size;
+
+ buf->export_dma_buf = dma_buf_export(buf, &mfc_dmabuf_ops,
+ buf->size, 0600);
+ if (!buf->export_dma_buf) {
+ mfc_err("fail to export dma_buf\n");
+ kfree(alloc);
+ cma_free(addr);
+ kfree(buf);
+ return NULL;
+ }
+ buf->export_fd = dma_buf_fd(buf->export_dma_buf, flags);
+ if (buf->export_fd < 0) {
+ mfc_err(" fail to get fd from dmabuf.\n");
+ kfree(alloc);
+ cma_free(addr);
+ kfree(buf);
+ dma_buf_put(buf->export_dma_buf);
+ return NULL;
+ }
+ alloc->dmabuf_fd = buf->export_fd;
+ atomic_inc(&buf->refcount);
+ mfc_dbg(" buf->export_fd = %d\n", buf->export_fd);
+#endif
+#else
addr = mfc_get_free_buf(size, align, port);
+#endif
mfc_dbg("mfc_get_free_buf: 0x%08lx\n", addr);
@@ -783,15 +1023,22 @@ int _mfc_free_buf(unsigned long real)
kfree(alloc);
}
#else
+#ifdef CONFIG_SLP
+ if (alloc->real) {
+ cma_free(alloc->real);
+ list_del(&alloc->list);
+ kfree(alloc);
+ }
+#else
if (mfc_put_free_buf(alloc->real,
alloc->size, port) < 0) {
-
mfc_err("failed to add free buffer\n");
} else {
list_del(&alloc->list);
kfree(alloc);
}
#endif
+#endif
break;
}
}
@@ -839,6 +1086,13 @@ void mfc_free_buf_type(int owner, int type)
alloc = list_entry(pos, struct mfc_alloc_buffer, list);
if ((alloc->owner == owner) && (alloc->type == type)) {
+#ifdef CONFIG_SLP
+ if (alloc->real) {
+ cma_free(alloc->real);
+ list_del(&alloc->list);
+ kfree(alloc);
+ }
+#else
if (mfc_put_free_buf(alloc->real,
alloc->size, port) < 0) {
@@ -847,6 +1101,7 @@ void mfc_free_buf_type(int owner, int type)
list_del(&alloc->list);
kfree(alloc);
}
+#endif
}
}
}
@@ -905,6 +1160,13 @@ void mfc_free_buf_inst(int owner)
kfree(alloc);
}
#else
+#ifdef CONFIG_SLP
+ if (alloc->real) {
+ cma_free(alloc->real);
+ list_del(&alloc->list);
+ kfree(alloc);
+ }
+#else
if (mfc_put_free_buf(alloc->real,
alloc->size, port) < 0) {
@@ -914,6 +1176,7 @@ void mfc_free_buf_inst(int owner)
kfree(alloc);
}
#endif
+#endif
}
}
}
@@ -1034,4 +1297,24 @@ void *mfc_get_buf_ump_handle(unsigned long real)
return NULL;
}
#endif
+#ifdef CONFIG_SLP_DMABUF
+int mfc_get_buf_dmabuf(unsigned long real)
+{
+ struct list_head *pos, *nxt;
+ int port;
+ struct mfc_alloc_buffer *alloc;
+
+ mfc_dbg("real: 0x%08lx\n", real);
+ for (port = 0; port < mfc_mem_count(); port++) {
+ list_for_each_safe(pos, nxt, &mfc_alloc_head[port]) {
+ alloc = list_entry(pos, struct mfc_alloc_buffer, list);
+
+ if (alloc->real == real)
+ return alloc->dmabuf_fd;
+ }
+ }
+
+ return -EINVAL;
+}
+#endif
diff --git a/drivers/media/video/samsung/mfc5x/mfc_buf.h b/drivers/media/video/samsung/mfc5x/mfc_buf.h
index 7fafb94..28ef0d6 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_buf.h
+++ b/drivers/media/video/samsung/mfc5x/mfc_buf.h
@@ -142,6 +142,10 @@ struct mfc_alloc_buffer {
unsigned char *addr; /* kernel virtual address space */
unsigned int type; /* buffer type */
int owner; /* instance context id */
+#if defined(CONFIG_DMA_CMA) && defined(CONFIG_USE_MFC_CMA)
+ struct device *dev;
+ dma_addr_t dma_addr;
+#endif
#if defined(CONFIG_VIDEO_MFC_VCM_UMP)
struct vcm_mmu_res *vcm_s;
struct vcm_res *vcm_k;
@@ -159,6 +163,9 @@ struct mfc_alloc_buffer {
* when user use mmap,
* user can access whole of memory by offset.
*/
+#ifdef CONFIG_SLP_DMABUF
+ int dmabuf_fd;
+#endif
#endif
};
@@ -187,6 +194,9 @@ unsigned long mfc_get_buf_real(int owner, unsigned int key);
unsigned char *mfc_get_buf_addr(int owner, unsigned char *user);
unsigned char *_mfc_get_buf_addr(int owner, unsigned char *user);
*/
+#ifdef CONFIG_SLP_DMABUF
+int mfc_get_buf_dmabuf(unsigned long real);
+#endif
#ifdef CONFIG_VIDEO_MFC_VCM_UMP
unsigned int mfc_vcm_bind_from_others(struct mfc_inst_ctx *ctx,
struct mfc_buf_alloc_arg *args, int flag);
diff --git a/drivers/media/video/samsung/mfc5x/mfc_dec.c b/drivers/media/video/samsung/mfc5x/mfc_dec.c
index fd78b7d..d3d336a 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_dec.c
+++ b/drivers/media/video/samsung/mfc5x/mfc_dec.c
@@ -1882,15 +1882,6 @@ int mfc_init_decoding(struct mfc_inst_ctx *ctx, union mfc_args *args)
dec_ctx->numtotaldpb);
#if defined(CONFIG_BUSFREQ)
-#if defined(CONFIG_CPU_EXYNOS4210)
- /* Fix MFC & Bus Frequency for better performance */
- if (atomic_read(&ctx->dev->busfreq_lock_cnt) == 0) {
- exynos4_busfreq_lock(DVFS_LOCK_ID_MFC, BUS_L1);
- mfc_dbg("Bus FREQ locked to L1\n");
- }
- atomic_inc(&ctx->dev->busfreq_lock_cnt);
- ctx->busfreq_flag = true;
-#else
/* Lock MFC & Bus FREQ for high resolution */
if (ctx->width >= MAX_HOR_RES || ctx->height >= MAX_VER_RES) {
if (atomic_read(&ctx->dev->busfreq_lock_cnt) == 0) {
@@ -1900,8 +1891,17 @@ int mfc_init_decoding(struct mfc_inst_ctx *ctx, union mfc_args *args)
atomic_inc(&ctx->dev->busfreq_lock_cnt);
ctx->busfreq_flag = true;
- }
+ } else {
+#if defined(CONFIG_CPU_EXYNOS4210)
+ /* Fix MFC & Bus Frequency for better performance */
+ if (atomic_read(&ctx->dev->busfreq_lock_cnt) == 0) {
+ exynos4_busfreq_lock(DVFS_LOCK_ID_MFC, BUS_L1);
+ mfc_dbg("Bus FREQ locked to L1\n");
+ }
+ atomic_inc(&ctx->dev->busfreq_lock_cnt);
+ ctx->busfreq_flag = true;
#endif
+ }
#endif
#if defined(CONFIG_CPU_EXYNOS4210) && defined(CONFIG_EXYNOS4_CPUFREQ)
@@ -1926,8 +1926,12 @@ int mfc_init_decoding(struct mfc_inst_ctx *ctx, union mfc_args *args)
dmc_max_threshold =
EXYNOS4212_DMC_MAX_THRESHOLD + 5;
} else if (soc_is_exynos4412()) {
- dmc_max_threshold =
- EXYNOS4412_DMC_MAX_THRESHOLD + 5;
+ if (samsung_rev() >= EXYNOS4412_REV_2_0)
+ dmc_max_threshold =
+ PRIME_DMC_MAX_THRESHOLD + 5;
+ else
+ dmc_max_threshold =
+ EXYNOS4412_DMC_MAX_THRESHOLD + 5;
} else {
pr_err("Unsupported model.\n");
return -EINVAL;
@@ -2093,6 +2097,25 @@ int mfc_change_resolution(struct mfc_inst_ctx *ctx, struct mfc_dec_exe_arg *exe_
}
ret = mfc_cmd_init_buffers(ctx);
+
+#ifdef CONFIG_SLP
+ if (ctx->codecid == H264_DEC) {
+ exe_arg->out_crop_right_offset =
+ (read_shm(ctx, CROP_INFO1) >> 16) & 0xFFFF;
+ exe_arg->out_crop_left_offset =
+ read_shm(ctx, CROP_INFO1) & 0xFFFF;
+ exe_arg->out_crop_bottom_offset =
+ (read_shm(ctx, CROP_INFO2) >> 16) & 0xFFFF;
+ exe_arg->out_crop_top_offset =
+ read_shm(ctx, CROP_INFO2) & 0xFFFF;
+
+ mfc_dbg("mfc_change_resolution: crop info t: %d, r: %d, b: %d, l: %d\n",
+ exe_arg->out_crop_top_offset,
+ exe_arg->out_crop_right_offset,
+ exe_arg->out_crop_bottom_offset,
+ exe_arg->out_crop_left_offset);
+ }
+#endif
if (ret < 0)
return ret;
@@ -2126,7 +2149,7 @@ static int mfc_decoding_frame(struct mfc_inst_ctx *ctx, struct mfc_dec_exe_arg *
unsigned char *stream_vir;
int ret;
struct mfc_dec_ctx *dec_ctx = (struct mfc_dec_ctx *)ctx->c_priv;
- unsigned long mem_ofs;
+ long mem_ofs;
#ifdef CONFIG_VIDEO_MFC_VCM_UMP
void *ump_handle;
#endif
@@ -2265,9 +2288,29 @@ static int mfc_decoding_frame(struct mfc_inst_ctx *ctx, struct mfc_dec_exe_arg *
exe_arg->out_display_status = dec_ctx->dispstatus;
- exe_arg->out_display_Y_addr = (display_luma_addr << 11);
- exe_arg->out_display_C_addr = (display_chroma_addr << 11);
-
+#ifdef CONFIG_SLP_DMABUF
+ if (exe_arg->memory_type == MEMORY_DMABUF) {
+ exe_arg->out_display_Y_addr =
+ mfc_get_buf_dmabuf(display_luma_addr << 11);
+ if (exe_arg->out_display_Y_addr < 0) {
+ mfc_err("mfc_get_buf_dmabuf : Get Y fd error %d\n",
+ exe_arg->out_display_Y_addr);
+ return MFC_DEC_EXE_ERR;
+ }
+ exe_arg->out_display_C_addr =
+ mfc_get_buf_dmabuf(display_chroma_addr << 11);
+ if (exe_arg->out_display_C_addr < 0) {
+ mfc_err("mfc_get_buf_dmabuf : Get C fd error %d\n",
+ exe_arg->out_display_C_addr);
+ return MFC_DEC_EXE_ERR;
+ }
+ } else {
+#endif
+ exe_arg->out_display_Y_addr = (display_luma_addr << 11);
+ exe_arg->out_display_C_addr = (display_chroma_addr << 11);
+#ifdef CONFIG_SLP_DMABUF
+ }
+#endif
exe_arg->out_disp_pic_frame_type = display_frame_type;
exe_arg->out_y_offset = mfc_mem_data_ofs(display_luma_addr << 11, 1);
@@ -2361,6 +2404,7 @@ int mfc_exec_decoding(struct mfc_inst_ctx *ctx, union mfc_args *args)
mfc_check_resolution_change(ctx, exe_arg);
if (ctx->resolution_status == RES_SET_CHANGE) {
ret = mfc_decoding_frame(ctx, exe_arg, &consumed);
+#ifndef CONFIG_SLP
} else if ((ctx->resolution_status == RES_WAIT_FRAME_DONE) &&
(exe_arg->out_display_status == DISP_S_FINISH)) {
exe_arg->out_display_status = DISP_S_RES_CHANGE;
@@ -2368,6 +2412,20 @@ int mfc_exec_decoding(struct mfc_inst_ctx *ctx, union mfc_args *args)
if (ret != MFC_OK)
return ret;
ctx->resolution_status = RES_NO_CHANGE;
+#else
+ } else if (ctx->resolution_status == RES_WAIT_FRAME_DONE) {
+ if (exe_arg->out_display_status == DISP_S_FINISH) {
+ exe_arg->out_display_status =
+ DISP_S_RES_CHANGE_DONE;
+
+ ret = mfc_change_resolution(ctx, exe_arg);
+ if (ret != MFC_OK)
+ return ret;
+ ctx->resolution_status = RES_NO_CHANGE;
+ } else
+ exe_arg->out_display_status =
+ DISP_S_RES_CHANGING;
+#endif
}
if ((dec_ctx->ispackedpb) &&
diff --git a/drivers/media/video/samsung/mfc5x/mfc_dec.h b/drivers/media/video/samsung/mfc5x/mfc_dec.h
index f59795b..86b7a97 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_dec.h
+++ b/drivers/media/video/samsung/mfc5x/mfc_dec.h
@@ -44,7 +44,12 @@ enum disp_status {
DISP_S_DD = 1,
DISP_S_DISPLAY = 2,
DISP_S_FINISH = 3,
+#ifndef CONFIG_SLP
DISP_S_RES_CHANGE = 4, /* not H/W bit */
+#else
+ DISP_S_RES_CHANGING = 4, /* not H/W bit */
+ DISP_S_RES_CHANGE_DONE = 5, /* not H/W bit */
+#endif
};
/* decoding status */
diff --git a/drivers/media/video/samsung/mfc5x/mfc_dev.c b/drivers/media/video/samsung/mfc5x/mfc_dev.c
index e3a0b60..23bc10d 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_dev.c
+++ b/drivers/media/video/samsung/mfc5x/mfc_dev.c
@@ -66,6 +66,10 @@
#include <plat/sysmmu.h>
#endif
+#ifdef CONFIG_SLP_DMABUF
+#include <media/videobuf2-core.h>
+#endif
+
#define MFC_MINOR 252
#define MFC_FW_NAME "mfc_fw.bin"
@@ -108,6 +112,79 @@ static inline void clear_magic(unsigned char *addr)
}
#endif
+#ifdef CONFIG_SLP_DMABUF
+/**
+ * _mfc_dmabuf_put() - release memory associated with
+ * a DMABUF shared buffer
+ */
+static void _mfc_dmabuf_put(struct vb2_plane *planes)
+{
+ unsigned int plane;
+
+ for (plane = 0; plane < MFC_NUM_PLANE; ++plane) {
+ void *mem_priv = planes[plane].mem_priv;
+
+ if (mem_priv) {
+ dma_buf_detach(planes[plane].dbuf,
+ planes[plane].mem_priv);
+ dma_buf_put(planes[plane].dbuf);
+ planes[plane].dbuf = NULL;
+ planes[plane].mem_priv = NULL;
+ }
+ }
+}
+
+void mfc_queue_free(struct mfc_inst_ctx *mfc_ctx)
+{
+ struct vb2_plane *planes;
+ int buffer;
+
+ for (buffer = 0; buffer < VIDEO_MAX_PLANES; ++buffer) {
+ planes = mfc_ctx->enc_planes[buffer];
+
+ if (!planes)
+ continue;
+
+ _mfc_dmabuf_put(planes);
+ kfree(planes);
+ planes = NULL;
+ }
+}
+
+int mfc_queue_alloc(struct mfc_inst_ctx *mfc_ctx)
+{
+ struct vb2_plane *planes;
+ int buffer;
+ int ret = 0;
+
+ for (buffer = 0; buffer < MFC_NUM_PLANE; ++buffer) {
+ planes = kzalloc(sizeof(struct vb2_plane), GFP_KERNEL);
+ if (!planes) {
+ printk(KERN_INFO "MFC Queue memory alloc failed\n");
+ ret = -ENOMEM;
+ goto err;
+ }
+
+ planes->mem_priv = NULL;
+ mfc_ctx->enc_planes[buffer] = planes;
+ }
+
+ for (buffer = MFC_NUM_PLANE; buffer < VIDEO_MAX_PLANES; ++buffer)
+ mfc_ctx->enc_planes[buffer] = NULL;
+
+ return ret;
+
+err:
+ for (buffer = 0; buffer < VIDEO_MAX_PLANES; buffer++) {
+ if (mfc_ctx->enc_planes[buffer] != NULL)
+ kfree(mfc_ctx->enc_planes[buffer]);
+ mfc_ctx->enc_planes[buffer] = NULL;
+ }
+
+ return ret;
+}
+#endif
+
static int get_free_inst_id(struct mfc_dev *dev)
{
int slot = 0;
@@ -135,6 +212,25 @@ static int mfc_open(struct inode *inode, struct file *file)
file->private_data = NULL;
mutex_lock(&mfcdev->lock);
+
+#if defined(CONFIG_USE_MFC_CMA) && defined(CONFIG_MACH_M0)
+ if (atomic_read(&mfcdev->inst_cnt) == 0) {
+ size_t size = 0x02800000;
+ mfcdev->cma_vaddr = dma_alloc_coherent(mfcdev->device, size,
+ &mfcdev->cma_dma_addr, 0);
+ if (!mfcdev->cma_vaddr) {
+ printk(KERN_ERR "%s: dma_alloc_coherent returns "
+ "-ENOMEM\n", __func__);
+ mutex_unlock(&mfcdev->lock);
+ return -ENOMEM;
+ }
+ printk(KERN_INFO "%s[%d] size 0x%x, vaddr 0x%x, base 0x%x\n",
+ __func__, __LINE__, (int)size,
+ (int)mfcdev->cma_vaddr,
+ (int)mfcdev->cma_dma_addr);
+ }
+#endif
+
#if SUPPORT_SLICE_ENCODING
mfcdev->frame_working_flag = 1;
mfcdev->frame_sys = 0;
@@ -292,6 +388,13 @@ static int mfc_open(struct inode *inode, struct file *file)
if (mfcdev->wait_frame_timeout == 1)
wake_up(&mfcdev->wait_frame);
#endif
+#ifdef CONFIG_SLP_DMABUF
+ ret = mfc_queue_alloc(mfc_ctx);
+ if (ret < 0) {
+ mfc_err("mfc_queue_alloc failed\n");
+ goto err_inst_ctx;
+ }
+#endif
mfc_info("MFC instance [%d:%d] opened", mfc_ctx->id,
atomic_read(&mfcdev->inst_cnt));
@@ -456,10 +559,24 @@ static int mfc_release(struct inode *inode, struct file *file)
if (mfcdev->wait_frame_timeout == 1)
wake_up(&dev->wait_frame);
#endif
+#ifdef CONFIG_SLP_DMABUF
+ mfc_queue_free(mfc_ctx);
+#endif
err_pwr_disable:
- mutex_unlock(&dev->lock);
+#if defined(CONFIG_USE_MFC_CMA) && defined(CONFIG_MACH_M0)
+ if (atomic_read(&mfcdev->inst_cnt) == 0) {
+ size_t size = 0x02800000;
+ dma_free_coherent(mfcdev->device, size, mfcdev->cma_vaddr,
+ mfcdev->cma_dma_addr);
+ printk(KERN_INFO "%s[%d] size 0x%x, vaddr 0x%x, base 0x0%x\n",
+ __func__, __LINE__, (int)size,
+ (int) mfcdev->cma_vaddr,
+ (int)mfcdev->cma_dma_addr);
+ }
+#endif
+ mutex_unlock(&dev->lock);
return ret;
}
diff --git a/drivers/media/video/samsung/mfc5x/mfc_dev.h b/drivers/media/video/samsung/mfc5x/mfc_dev.h
index c82c26c..bb2095c 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_dev.h
+++ b/drivers/media/video/samsung/mfc5x/mfc_dev.h
@@ -99,6 +99,12 @@ struct mfc_dev {
struct mfc_fw fw;
+#if defined(CONFIG_DMA_CMA) && defined(CONFIG_USE_MFC_CMA)
+ /* NEW CMA */
+ void *cma_vaddr;
+ dma_addr_t cma_dma_addr;
+#endif
+
struct s5p_vcm_mmu *_vcm_mmu;
struct device *device;
diff --git a/drivers/media/video/samsung/mfc5x/mfc_enc.c b/drivers/media/video/samsung/mfc5x/mfc_enc.c
index 53f24c9..65d7b6b 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_enc.c
+++ b/drivers/media/video/samsung/mfc5x/mfc_enc.c
@@ -31,6 +31,11 @@
#include "mfc_buf.h"
#include "mfc_interface.h"
+#ifdef CONFIG_SLP_DMABUF
+#include <linux/dma-buf.h>
+#include <media/videobuf2-core.h>
+#endif
+
static LIST_HEAD(mfc_encoders);
/*
@@ -507,7 +512,7 @@ static int pre_seq_start(struct mfc_inst_ctx *ctx)
write_reg(mfc_mem_base_ofs(enc_ctx->streamaddr) >> 11, MFC_ENC_SI_CH1_SB_ADR);
write_reg(enc_ctx->streamsize, MFC_ENC_SI_CH1_SB_SIZE);
#if defined(CONFIG_CPU_EXYNOS4212) || defined(CONFIG_CPU_EXYNOS4412)
- write_shm(ctx, 1, HW_VERSRION);
+ write_shm(ctx, 1, HW_VERSION);
#endif
return 0;
@@ -579,6 +584,13 @@ static int h264_pre_seq_start(struct mfc_inst_ctx *ctx)
h264->change &= ~(CHG_FRAME_PACKING);
}
+ if (h264->sps_pps_gen == 1) {
+ write_shm(ctx,
+ ((h264->sps_pps_gen << 8) |
+ read_shm(ctx, EXT_ENC_CONTROL)),
+ EXT_ENC_CONTROL);
+ }
+
return 0;
}
@@ -1050,6 +1062,23 @@ static int h264_set_codec_cfg(struct mfc_inst_ctx *ctx, int type, void *arg)
h264->change |= CHG_FRAME_PACKING;
break;
+
+ case MFC_ENC_SETCONF_SPS_PPS_GEN:
+ mfc_dbg("MFC_ENC_SETCONF_SPS_PPS_GEN : %d\n", ctx->state);
+
+ if ((ctx->state < INST_STATE_CREATE) ||
+ (ctx->state > INST_STATE_EXE)) {
+ mfc_err("MFC_ENC_SETCONF_SPS_PPS_GEN : "
+ " state is invalid\n");
+ return MFC_STATE_INVALID;
+ }
+
+ if (usercfg->basic.values[0] > 0)
+ h264->sps_pps_gen = 1;
+ else
+ h264->sps_pps_gen = 0;
+
+ break;
default:
mfc_dbg("invalid set cfg type: 0x%08x\n", type);
ret = -2;
@@ -1590,6 +1619,65 @@ err_handling:
return ret;
}
+#ifdef CONFIG_SLP_DMABUF
+static int mfc_qbuf_dmabuf(struct mfc_inst_ctx *ctx, struct vb2_plane *planes,
+ int fd, dma_addr_t *dma_addr)
+{
+ struct sg_table *sg;
+ struct dma_buf *dbuf;
+ struct dma_buf_attachment *dba;
+
+ dbuf = dma_buf_get(fd);
+ if (IS_ERR_OR_NULL(dbuf)) {
+ mfc_err("dmabuf get error!!!\n");
+ dma_buf_put(dbuf);
+ return -EINVAL;
+ }
+
+ /* Skip the plane if already verified */
+ if (dbuf == planes->dbuf) {
+ dma_buf_put(dbuf);
+ return 0;
+ }
+
+ dba = dma_buf_attach(dbuf, ctx->dev->device);
+ if (IS_ERR(dba)) {
+ mfc_err("failed to attach dmabuf\n");
+ dma_buf_put(dbuf);
+ return -EINVAL;
+ }
+
+ sg = dma_buf_map_attachment(dba, DMA_BIDIRECTIONAL);
+ if (IS_ERR(sg)) {
+ dma_buf_detach(dbuf, dba);
+ dma_buf_put(dbuf);
+ return PTR_ERR(sg);
+ }
+ dba->priv = sg;
+
+ planes->dbuf = dbuf;
+ planes->mem_priv = dba;
+
+ *dma_addr = sg_dma_address(sg->sgl);
+
+ return 0;
+}
+
+static int mfc_dqbuf_dmabuf(struct mfc_inst_ctx *ctx, struct vb2_plane *plane)
+{
+
+ struct sg_table *sg;
+ struct dma_buf_attachment *dba;
+
+ dba = plane->mem_priv;
+ sg = dba->priv;
+
+ dma_buf_unmap_attachment(dba, sg, DMA_FROM_DEVICE);
+
+ return 0;
+}
+#endif
+
static int mfc_encoding_frame(struct mfc_inst_ctx *ctx, struct mfc_enc_exe_arg *exe_arg)
{
int ret;
@@ -1597,6 +1685,9 @@ static int mfc_encoding_frame(struct mfc_inst_ctx *ctx, struct mfc_enc_exe_arg *
void *ump_handle;
#endif
struct mfc_enc_ctx *enc_ctx = (struct mfc_enc_ctx *)ctx->c_priv;
+#ifdef CONFIG_SLP_DMABUF
+ dma_addr_t dma_addr[MFC_NUM_PLANE];
+#endif
/* Set Frame Tag */
write_shm(ctx, exe_arg->in_frametag, SET_FRAME_TAG);
@@ -1648,6 +1739,39 @@ static int mfc_encoding_frame(struct mfc_inst_ctx *ctx, struct mfc_enc_exe_arg *
#endif
/* Set current frame buffer addr */
+#ifdef CONFIG_SLP_DMABUF
+ if (exe_arg->memory_type == MEMORY_DMABUF) {
+ ret = mfc_qbuf_dmabuf(ctx, ctx->enc_planes[0],
+ exe_arg->in_Y_addr, &dma_addr[0]);
+ if (ret) {
+ mfc_err("mfc_qbuf_dmabuf Y error!!! ret = %d\n", ret);
+ return -EINVAL;
+ }
+ ret = mfc_qbuf_dmabuf(ctx, ctx->enc_planes[1],
+ exe_arg->in_CbCr_addr, &dma_addr[1]);
+ if (ret) {
+ mfc_err("mfc_qbuf_dmabuf CbCr error!!! ret = %d\n",
+ ret);
+ ret = mfc_dqbuf_dmabuf(ctx, ctx->enc_planes[0]);
+ if (ret)
+ mfc_err("mfc_dqbuf_dmabuf Y error!! ret = %d\n",
+ ret);
+ return -EINVAL;
+ }
+ }
+
+#if (MFC_MAX_MEM_PORT_NUM == 2)
+ write_reg((dma_addr[0] - mfc_mem_base(1)) >> 11,
+ MFC_ENC_SI_CH1_CUR_Y_ADR);
+ write_reg((dma_addr[1] - mfc_mem_base(1)) >> 11,
+ MFC_ENC_SI_CH1_CUR_C_ADR);
+#else
+ write_reg((dma_addr[0] - mfc_mem_base(0)) >> 11,
+ MFC_ENC_SI_CH1_CUR_Y_ADR);
+ write_reg((dma_addr[1] - mfc_mem_base(0)) >> 11,
+ MFC_ENC_SI_CH1_CUR_C_ADR);
+#endif
+#else
#if (MFC_MAX_MEM_PORT_NUM == 2)
write_reg((exe_arg->in_Y_addr - mfc_mem_base(1)) >> 11, MFC_ENC_SI_CH1_CUR_Y_ADR);
write_reg((exe_arg->in_CbCr_addr - mfc_mem_base(1)) >> 11, MFC_ENC_SI_CH1_CUR_C_ADR);
@@ -1655,6 +1779,7 @@ static int mfc_encoding_frame(struct mfc_inst_ctx *ctx, struct mfc_enc_exe_arg *
write_reg((exe_arg->in_Y_addr - mfc_mem_base(0)) >> 11, MFC_ENC_SI_CH1_CUR_Y_ADR);
write_reg((exe_arg->in_CbCr_addr - mfc_mem_base(0)) >> 11, MFC_ENC_SI_CH1_CUR_C_ADR);
#endif
+#endif
#if 0
write_reg(1, MFC_ENC_STR_BF_U_EMPTY);
@@ -1680,8 +1805,33 @@ static int mfc_encoding_frame(struct mfc_inst_ctx *ctx, struct mfc_enc_exe_arg *
exe_arg->out_encoded_size = read_reg(MFC_ENC_SI_STRM_SIZE);
/* FIXME: port must be checked */
- exe_arg->out_Y_addr = mfc_mem_addr_ofs(read_reg(MFC_ENCODED_Y_ADDR) << 11, 1);
- exe_arg->out_CbCr_addr = mfc_mem_addr_ofs(read_reg(MFC_ENCODED_C_ADDR) << 11, 1);
+#ifdef CONFIG_SLP_DMABUF
+ if (exe_arg->memory_type == MEMORY_DMABUF) {
+ exe_arg->out_Y_addr =
+ mfc_get_buf_dmabuf(mfc_mem_addr_ofs
+ (read_reg(MFC_ENCODED_Y_ADDR) << 11, 1));
+ if (exe_arg->out_Y_addr < 0) {
+ mfc_err("mfc_get_buf_dmabuf : Get Y fd error %d\n",
+ exe_arg->out_Y_addr);
+ return MFC_ENC_EXE_ERR;
+ }
+ exe_arg->out_CbCr_addr =
+ mfc_get_buf_dmabuf(mfc_mem_addr_ofs
+ (read_reg(MFC_ENCODED_C_ADDR) << 11, 1));
+ if (exe_arg->out_CbCr_addr < 0) {
+ mfc_err("mfc_get_buf_dmabuf : Get CbCr fd error %d\n",
+ exe_arg->out_CbCr_addr);
+ return MFC_ENC_EXE_ERR;
+ }
+ } else {
+#endif
+ exe_arg->out_Y_addr = mfc_mem_addr_ofs
+ (read_reg(MFC_ENCODED_Y_ADDR) << 11, 1);
+ exe_arg->out_CbCr_addr = mfc_mem_addr_ofs
+ (read_reg(MFC_ENCODED_C_ADDR) << 11, 1);
+#ifdef CONFIG_SLP_DMABUF
+ }
+#endif
#if SUPPORT_SLICE_ENCODING
} else { /* slice */
ret = mfc_cmd_slice_start(ctx);
@@ -1699,8 +1849,35 @@ static int mfc_encoding_frame(struct mfc_inst_ctx *ctx, struct mfc_enc_exe_arg *
exe_arg->out_encoded_size = enc_ctx->slicesize;
/* FIXME: port must be checked */
- exe_arg->out_Y_addr = mfc_mem_addr_ofs(read_reg(MFC_ENCODED_Y_ADDR) << 11, 1);
- exe_arg->out_CbCr_addr = mfc_mem_addr_ofs(read_reg(MFC_ENCODED_C_ADDR) << 11, 1);
+#ifdef CONFIG_SLP_DMABUF
+ if (exe_arg->memory_type == MEMORY_DMABUF) {
+ exe_arg->out_Y_addr =
+ mfc_get_buf_dmabuf(mfc_mem_addr_ofs
+ (read_reg(MFC_ENCODED_Y_ADDR)
+ << 11, 1));
+ if (exe_arg->out_Y_addr < 0) {
+ mfc_err("mfc_get_buf_dmabuf : Get Y fd error %d\n",
+ exe_arg->out_Y_addr);
+ return MFC_ENC_EXE_ERR;
+ }
+ exe_arg->out_CbCr_addr =
+ mfc_get_buf_dmabuf(mfc_mem_addr_ofs
+ (read_reg(MFC_ENCODED_C_ADDR)
+ << 11, 1));
+ if (exe_arg->out_CbCr_addr < 0) {
+ mfc_err("mfc_get_buf_dmabuf : Get CbCr fd error %d\n",
+ exe_arg->out_CbCr_addr);
+ return MFC_ENC_EXE_ERR;
+ }
+ } else {
+#endif
+ exe_arg->out_Y_addr = mfc_mem_addr_ofs
+ (read_reg(MFC_ENCODED_Y_ADDR) << 11, 1);
+ exe_arg->out_CbCr_addr = mfc_mem_addr_ofs
+ (read_reg(MFC_ENCODED_C_ADDR) << 11, 1);
+#ifdef CONFIG_SLP_DMABUF
+ }
+#endif
}
}
@@ -1765,6 +1942,9 @@ int mfc_exec_encoding(struct mfc_inst_ctx *ctx, union mfc_args *args)
{
struct mfc_enc_exe_arg *exe_arg;
int ret;
+#ifdef CONFIG_SLP_DMABUF
+ int err;
+#endif
/*
struct mfc_enc_ctx *enc_ctx = (struct mfc_enc_ctx *)ctx->c_priv;
*/
@@ -1787,6 +1967,21 @@ int mfc_exec_encoding(struct mfc_inst_ctx *ctx, union mfc_args *args)
mfc_set_inst_state(ctx, INST_STATE_EXE_DONE);
+#ifdef CONFIG_SLP_DMABUF
+ if (exe_arg->memory_type == MEMORY_DMABUF) {
+ err = mfc_dqbuf_dmabuf(ctx, ctx->enc_planes[0]);
+ if (err) {
+ mfc_err("mfc_dqbuf_dmabuf error!!! ret = %d\n", err);
+ return -EINVAL;
+ }
+ err = mfc_dqbuf_dmabuf(ctx, ctx->enc_planes[1]);
+ if (err) {
+ mfc_err("mfc_dqbuf_dmabuf error!!! ret = %d\n", err);
+ return -EINVAL;
+ }
+ }
+#endif
+
return ret;
}
diff --git a/drivers/media/video/samsung/mfc5x/mfc_enc.h b/drivers/media/video/samsung/mfc5x/mfc_enc.h
index 4bca251..21a9ba6 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_enc.h
+++ b/drivers/media/video/samsung/mfc5x/mfc_enc.h
@@ -87,6 +87,7 @@ struct mfc_enc_h264 {
unsigned int sei_gen; /* H */
struct mfc_frame_packing fp; /* H */
+ unsigned int sps_pps_gen;
};
int mfc_init_encoding(struct mfc_inst_ctx *ctx, union mfc_args *args);
diff --git a/drivers/media/video/samsung/mfc5x/mfc_inst.c b/drivers/media/video/samsung/mfc5x/mfc_inst.c
index 518fbfc..ef0d0e0 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_inst.c
+++ b/drivers/media/video/samsung/mfc5x/mfc_inst.c
@@ -215,6 +215,7 @@ int mfc_set_inst_cfg(struct mfc_inst_ctx *ctx, int type, void *arg)
case MFC_ENC_SETCONF_HIER_P:
case MFC_ENC_SETCONF_SEI_GEN:
case MFC_ENC_SETCONF_FRAME_PACKING:
+ case MFC_ENC_SETCONF_SPS_PPS_GEN:
if (ctx->c_ops->set_codec_cfg) {
if ((ctx->c_ops->set_codec_cfg(ctx, type, arg)) < 0)
return MFC_SET_CONF_FAIL;
diff --git a/drivers/media/video/samsung/mfc5x/mfc_inst.h b/drivers/media/video/samsung/mfc5x/mfc_inst.h
index e297c55..b78dd91 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_inst.h
+++ b/drivers/media/video/samsung/mfc5x/mfc_inst.h
@@ -15,6 +15,9 @@
#define __MFC_INST_H __FILE__
#include <linux/list.h>
+#ifdef CONFIG_SLP
+#include <linux/videodev2.h>
+#endif
#include "mfc.h"
#include "mfc_interface.h"
@@ -130,7 +133,7 @@ struct mfc_inst_ctx {
unsigned int width;
unsigned int height;
volatile unsigned char *shm;
- unsigned int shmofs;
+ long shmofs;
unsigned int ctxbufofs;
unsigned int ctxbufsize;
unsigned int descbufofs; /* FIXME: move to decoder context */
@@ -170,6 +173,10 @@ struct mfc_inst_ctx {
#if SUPPORT_SLICE_ENCODING
int slice_flag;
#endif
+#ifdef CONFIG_SLP
+ struct vb2_plane *enc_planes[VIDEO_MAX_PLANES];
+ struct vb2_plane *dec_planes[VIDEO_MAX_PLANES];
+#endif
};
struct mfc_inst_ctx *mfc_create_inst(void);
diff --git a/drivers/media/video/samsung/mfc5x/mfc_interface.h b/drivers/media/video/samsung/mfc5x/mfc_interface.h
index 61116e5..6845b8a 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_interface.h
+++ b/drivers/media/video/samsung/mfc5x/mfc_interface.h
@@ -242,6 +242,9 @@ struct mfc_enc_exe_arg {
unsigned int out_y_cookie;
unsigned int out_c_cookie;
#endif
+#ifdef CONFIG_SLP_DMABUF
+ SSBSIP_MFC_MEMORY_TYPE memory_type; /* [OUT] memory type */
+#endif
};
struct mfc_dec_init_arg {
@@ -312,6 +315,9 @@ struct mfc_dec_exe_arg {
unsigned int out_y_cookie;
unsigned int out_c_cookie;
#endif
+#ifdef CONFIG_SLP_DMABUF
+ SSBSIP_MFC_MEMORY_TYPE memory_type; /* [OUT] memory type */
+#endif
int out_img_width; /* [OUT] width of YUV420 frame */
int out_img_height; /* [OUT] height of YUV420 frame */
int out_buf_width; /* [OUT] width of YUV420 frame */
diff --git a/drivers/media/video/samsung/mfc5x/mfc_mem.c b/drivers/media/video/samsung/mfc5x/mfc_mem.c
index bdf7148..051e4c0 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_mem.c
+++ b/drivers/media/video/samsung/mfc5x/mfc_mem.c
@@ -551,10 +551,23 @@ int mfc_init_mem_mgr(struct mfc_dev *dev)
/* early allocator */
#if defined(CONFIG_S5P_MEM_CMA)
#ifdef CONFIG_EXYNOS_CONTENT_PATH_PROTECTION
+#if defined(CONFIG_USE_MFC_CMA) && defined(CONFIG_MACH_M0)
+ cma_infos[0].lower_bound = 0x5C100000;
+ cma_infos[0].upper_bound = 0x5F200000;
+ cma_infos[0].total_size = 0x03100000;
+ cma_infos[0].free_size = 0x03100000;
+ cma_infos[0].count = 1;
+#else
if (cma_info(&cma_infos[0], dev->device, "A")) {
mfc_info("failed to get CMA info of 'mfc-secure'\n");
return -ENOMEM;
}
+#endif
+ printk(KERN_INFO "%s[%d] cma 0x%x 0x%x 0x%x 0x%x %u\n",
+ __func__, __LINE__,
+ (int)cma_infos[0].lower_bound, (int)cma_infos[0].upper_bound,
+ (int)cma_infos[0].total_size, (int)cma_infos[0].free_size,
+ cma_infos[0].count);
if (cma_info(&cma_infos[1], dev->device, "B")) {
mfc_info("failed to get CMA info of 'mfc-normal'\n");
@@ -598,6 +611,15 @@ int mfc_init_mem_mgr(struct mfc_dev *dev)
return -ENOMEM;
}
+#if defined(CONFIG_USE_MFC_CMA) && defined(CONFIG_MACH_M0)
+ base[0] = 0x5c100000;
+ dev->mem_infos[0].base = base[0];
+ dev->mem_infos[0].size = size;
+ dev->mem_infos[0].addr = phys_to_virt(base[0]);
+ mfc_info("%s[%d]: base 0x%x, size 0x%x, addr 0x%x\n",
+ __func__, __LINE__, (int)base[0], (int)size,
+ (int)dev->mem_infos[0].addr);
+#else
base[0] = cma_alloc(dev->device, "A", size, ALIGN_128KB);
if (IS_ERR_VALUE(base[0])) {
mfc_err("failed to get rsv. memory from CMA on mfc-secure");
@@ -607,7 +629,7 @@ int mfc_init_mem_mgr(struct mfc_dev *dev)
dev->mem_infos[0].base = base[0];
dev->mem_infos[0].size = size;
dev->mem_infos[0].addr = cma_get_virt(base[0], size, 0);
-
+#endif
available_size -= dev->mem_infos[0].size;
mfc_dbg("avail: 0x%08x\n", available_size);
@@ -670,7 +692,12 @@ int mfc_init_mem_mgr(struct mfc_dev *dev)
size = MAX_MEM_OFFSET;
}
+#ifdef CONFIG_SLP
+ base[0] = cma_alloc(dev->device, "AB", MFC_FW_SYSTEM_SIZE,
+ ALIGN_128KB);
+#else
base[0] = cma_alloc(dev->device, "AB", size, ALIGN_128KB);
+#endif
if (IS_ERR_VALUE(base[0])) {
mfc_err("failed to get rsv. memory from CMA");
return -ENOMEM;
@@ -702,7 +729,12 @@ int mfc_init_mem_mgr(struct mfc_dev *dev)
size = MAX_MEM_OFFSET;
}
+#ifdef CONFIG_SLP
+ base[0] = cma_alloc(dev->device, cma_index ? "B" : "A",
+ MFC_FW_SYSTEM_SIZE, ALIGN_128KB);
+#else
base[0] = cma_alloc(dev->device, cma_index ? "B" : "A", size, ALIGN_128KB);
+#endif
if (IS_ERR_VALUE(base[0])) {
mfc_err("failed to get rsv. memory from CMA on port #0");
return -ENOMEM;
@@ -724,7 +756,12 @@ int mfc_init_mem_mgr(struct mfc_dev *dev)
size = MAX_MEM_OFFSET;
}
+#ifdef CONFIG_SLP
+ base[1] = cma_index ? cma_infos[1].lower_bound :
+ cma_infos[0].lower_bound;
+#else
base[1] = cma_alloc(dev->device, cma_index ? "B" : "A", size, ALIGN_128KB);
+#endif
if (IS_ERR_VALUE(base[1])) {
mfc_err("failed to get rsv. memory from CMA on port #1");
cma_free(base[0]);
diff --git a/drivers/media/video/samsung/mfc5x/mfc_shm.h b/drivers/media/video/samsung/mfc5x/mfc_shm.h
index e5d7ba7..3da6573 100644
--- a/drivers/media/video/samsung/mfc5x/mfc_shm.h
+++ b/drivers/media/video/samsung/mfc5x/mfc_shm.h
@@ -66,7 +66,7 @@ enum MFC_SHM_OFS
DBG_HISTORY_INPUT1 = 0x00D4, /* C */
DBG_HISTORY_OUTPUT = 0x00D8, /* C */
HIERARCHICAL_P_QP = 0x00E0, /* E, H.264 */
- HW_VERSRION = 0x010C, /* C */
+ HW_VERSION = 0x010C, /* C */
SEI_ENABLE = 0x0168, /* C, H.264 */
FRAME_PACK_SEI_AVAIL = 0x016C, /* D, H.264 */
FRAME_PACK_ARRGMENT_ID = 0x0170, /* D, H.264 */
diff --git a/drivers/media/video/samsung/ump/Kconfig b/drivers/media/video/samsung/ump/Kconfig
index 6304825..9d8e5e6 100644
--- a/drivers/media/video/samsung/ump/Kconfig
+++ b/drivers/media/video/samsung/ump/Kconfig
@@ -17,6 +17,14 @@ config UMP_VCM_ALLOC
help
Use VCM(virtual-contiguous-memory) to allocate physical memory.
+
+config UMP_R3P1_LSI
+ bool "Uses the R3P1 as a ump module"
+ depends on VIDEO_UMP
+ default n
+ ---help---
+ This uses the r3p1 as a UMP kernel module
+
choice
depends on VIDEO_UMP
prompt "UMP MEMEMORY OPTION"
diff --git a/drivers/media/video/samsung/ump/Makefile.common b/drivers/media/video/samsung/ump/Makefile.common
index 35527a2..35527a2 100644..100755
--- a/drivers/media/video/samsung/ump/Makefile.common
+++ b/drivers/media/video/samsung/ump/Makefile.common
diff --git a/drivers/media/video/samsung/ump/Makefile_module b/drivers/media/video/samsung/ump/Makefile_module
index f0c3829..f0c3829 100644..100755
--- a/drivers/media/video/samsung/ump/Makefile_module
+++ b/drivers/media/video/samsung/ump/Makefile_module
diff --git a/drivers/media/video/samsung/ump/arch b/drivers/media/video/samsung/ump/arch
new file mode 120000
index 0000000..58ffbe7
--- /dev/null
+++ b/drivers/media/video/samsung/ump/arch
@@ -0,0 +1 @@
+arch-release \ No newline at end of file
diff --git a/drivers/media/video/samsung/ump/arch-debug b/drivers/media/video/samsung/ump/arch-debug
new file mode 120000
index 0000000..0ed0909
--- /dev/null
+++ b/drivers/media/video/samsung/ump/arch-debug
@@ -0,0 +1 @@
+arch-pegasus-m400/ \ No newline at end of file
diff --git a/drivers/media/video/samsung/ump/arch-debug/config.h b/drivers/media/video/samsung/ump/arch-debug/config.h
deleted file mode 100644
index 688edc9..0000000
--- a/drivers/media/video/samsung/ump/arch-debug/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2010-2012 ARM Limited. All rights reserved.
- *
- * This program is free software and is provided to you under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
- *
- * A copy of the licence is included with the program, and can also be obtained from Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef __ARCH_CONFIG_UMP_H__
-#define __ARCH_CONFIG_UMP_H__
-
-#define ARCH_UMP_BACKEND_DEFAULT USING_MEMORY
-#if (USING_MEMORY == 0) /* Dedicated Memory */
-#define ARCH_UMP_MEMORY_ADDRESS_DEFAULT 0x2C000000
-#else
-#define ARCH_UMP_MEMORY_ADDRESS_DEFAULT 0
-#endif
-
-#define ARCH_UMP_MEMORY_SIZE_DEFAULT UMP_MEM_SIZE*1024*1024
-#endif /* __ARCH_CONFIG_UMP_H__ */
diff --git a/drivers/media/video/samsung/ump/arch-pb-virtex5/config.h b/drivers/media/video/samsung/ump/arch-pb-virtex5/config.h
index 38ae1ee..38ae1ee 100644..100755
--- a/drivers/media/video/samsung/ump/arch-pb-virtex5/config.h
+++ b/drivers/media/video/samsung/ump/arch-pb-virtex5/config.h
diff --git a/drivers/media/video/samsung/ump/arch-pegasus-m400/config.h b/drivers/media/video/samsung/ump/arch-pegasus-m400/config.h
index 688edc9..688edc9 100644..100755
--- a/drivers/media/video/samsung/ump/arch-pegasus-m400/config.h
+++ b/drivers/media/video/samsung/ump/arch-pegasus-m400/config.h
diff --git a/drivers/media/video/samsung/ump/arch-release b/drivers/media/video/samsung/ump/arch-release
new file mode 120000
index 0000000..0ed0909
--- /dev/null
+++ b/drivers/media/video/samsung/ump/arch-release
@@ -0,0 +1 @@
+arch-pegasus-m400/ \ No newline at end of file
diff --git a/drivers/media/video/samsung/ump/arch-release/config.h b/drivers/media/video/samsung/ump/arch-release/config.h
deleted file mode 100644
index 688edc9..0000000
--- a/drivers/media/video/samsung/ump/arch-release/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2010-2012 ARM Limited. All rights reserved.
- *
- * This program is free software and is provided to you under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
- *
- * A copy of the licence is included with the program, and can also be obtained from Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef __ARCH_CONFIG_UMP_H__
-#define __ARCH_CONFIG_UMP_H__
-
-#define ARCH_UMP_BACKEND_DEFAULT USING_MEMORY
-#if (USING_MEMORY == 0) /* Dedicated Memory */
-#define ARCH_UMP_MEMORY_ADDRESS_DEFAULT 0x2C000000
-#else
-#define ARCH_UMP_MEMORY_ADDRESS_DEFAULT 0
-#endif
-
-#define ARCH_UMP_MEMORY_SIZE_DEFAULT UMP_MEM_SIZE*1024*1024
-#endif /* __ARCH_CONFIG_UMP_H__ */
diff --git a/drivers/media/video/samsung/ump/arch/config.h b/drivers/media/video/samsung/ump/arch/config.h
deleted file mode 100644
index 688edc9..0000000
--- a/drivers/media/video/samsung/ump/arch/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2010-2012 ARM Limited. All rights reserved.
- *
- * This program is free software and is provided to you under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
- *
- * A copy of the licence is included with the program, and can also be obtained from Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-#ifndef __ARCH_CONFIG_UMP_H__
-#define __ARCH_CONFIG_UMP_H__
-
-#define ARCH_UMP_BACKEND_DEFAULT USING_MEMORY
-#if (USING_MEMORY == 0) /* Dedicated Memory */
-#define ARCH_UMP_MEMORY_ADDRESS_DEFAULT 0x2C000000
-#else
-#define ARCH_UMP_MEMORY_ADDRESS_DEFAULT 0
-#endif
-
-#define ARCH_UMP_MEMORY_SIZE_DEFAULT UMP_MEM_SIZE*1024*1024
-#endif /* __ARCH_CONFIG_UMP_H__ */
diff --git a/drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.c b/drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.c
index cc7b8be..cc7b8be 100644..100755
--- a/drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.c
+++ b/drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.c
diff --git a/drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.h b/drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.h
index 881d3d8..881d3d8 100644..100755
--- a/drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.h
+++ b/drivers/media/video/samsung/ump/common/ump_kernel_descriptor_mapping.h
diff --git a/drivers/media/video/samsung/ump/linux/license/gpl/ump_kernel_license.h b/drivers/media/video/samsung/ump/linux/license/gpl/ump_kernel_license.h
index 50a021c..50a021c 100644..100755
--- a/drivers/media/video/samsung/ump/linux/license/gpl/ump_kernel_license.h
+++ b/drivers/media/video/samsung/ump/linux/license/gpl/ump_kernel_license.h
diff --git a/drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_dedicated.h b/drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_dedicated.h
index 4f7180e..4f7180e 100644..100755
--- a/drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_dedicated.h
+++ b/drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_dedicated.h
diff --git a/drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_os.h b/drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_os.h
index b638562d..b638562d 100644..100755
--- a/drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_os.h
+++ b/drivers/media/video/samsung/ump/linux/ump_kernel_memory_backend_os.h
diff --git a/drivers/media/video/samsung/ump/linux/ump_osk_atomics.c b/drivers/media/video/samsung/ump/linux/ump_osk_atomics.c
index 77be0c9..77be0c9 100644..100755
--- a/drivers/media/video/samsung/ump/linux/ump_osk_atomics.c
+++ b/drivers/media/video/samsung/ump/linux/ump_osk_atomics.c
diff --git a/drivers/media/video/samsung/ump/linux/ump_osk_misc.c b/drivers/media/video/samsung/ump/linux/ump_osk_misc.c
index 1f1118e..1f1118e 100644..100755
--- a/drivers/media/video/samsung/ump/linux/ump_osk_misc.c
+++ b/drivers/media/video/samsung/ump/linux/ump_osk_misc.c
diff --git a/drivers/media/video/slp_db8131m.c b/drivers/media/video/slp_db8131m.c
deleted file mode 100644
index a42bfd4c..0000000
--- a/drivers/media/video/slp_db8131m.c
+++ /dev/null
@@ -1,796 +0,0 @@
-/*
- * linux/drivers/media/video/slp_db8131m.c
- *
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/i2c.h>
-#include <linux/init.h>
-#include <media/v4l2-device.h>
-#include <linux/delay.h>
-#include <linux/version.h>
-#include <media/v4l2-device.h>
-#include <media/v4l2-subdev.h>
-#ifdef CONFIG_VIDEO_SAMSUNG_V4L2
-#include <linux/videodev2_exynos_camera.h>
-#endif
-#include <media/db8131m_platform.h>
-
-#include "slp_db8131m.h"
-
-#ifdef DB8131M_USLEEP
-#include <linux/hrtimer.h>
-#endif
-
-#define CHECK_ERR(x) if (unlikely((x) < 0)) { \
- cam_err("i2c failed, err %d\n", x); \
- return x; \
- }
-
-#define NELEMS(array) (sizeof(array) / sizeof(array[0]))
-
-static inline int db8131m_read(struct i2c_client *client,
- u16 subaddr, u16 *data)
-{
- u8 buf[2];
- int err = 0;
- struct i2c_msg msg = {
- .addr = client->addr,
- .flags = 0,
- .len = 2,
- .buf = buf,
- };
-
- *(u16 *)buf = cpu_to_be16(subaddr);
-
- err = i2c_transfer(client->adapter, &msg, 1);
- if (unlikely(err < 0))
- cam_err("ERR: %d register read fail\n", __LINE__);
-
- msg.flags = I2C_M_RD;
-
- err = i2c_transfer(client->adapter, &msg, 1);
- if (unlikely(err < 0))
- cam_err("ERR: %d register read fail\n", __LINE__);
-
- *data = ((buf[0] << 8) | buf[1]);
-
- return err;
-}
-
-/*
- * s5k6aafx sensor i2c write routine
- * <start>--<Device address><2Byte Subaddr><2Byte Value>--<stop>
- */
-static inline int db8131m_write(struct i2c_client *client,
- u32 packet)
-{
- u8 buf[4];
- int err = 0, retry_count = 5;
-
- struct i2c_msg msg = {
- .addr = client->addr,
- .flags = 0,
- .buf = buf,
- .len = 4,
- };
-
- if (!client->adapter) {
- cam_err("ERR - can't search i2c client adapter\n");
- return -EIO;
- }
-
- while (retry_count--) {
- *(u32 *)buf = cpu_to_be32(packet);
- err = i2c_transfer(client->adapter, &msg, 1);
- if (likely(err == 1))
- break;
- mdelay(10);
- }
-
- if (unlikely(err < 0)) {
- cam_err("ERR - 0x%08x write failed err=%d\n",
- (u32)packet, err);
- return err;
- }
-
- return (err != 1) ? -1 : 0;
-}
-
-/* program multiple registers */
-static int db8131m_write_regs(struct v4l2_subdev *sd,
- const u8 *packet, u32 num)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- int ret = -EAGAIN;
- int retry_count = 5;
-
- u8 buf[2] = {0,};
-
- struct i2c_msg msg = {
- msg.addr = client->addr,
- msg.flags = 0,
- msg.len = 2,
- msg.buf = buf,
- };
-
- while (num) {
- buf[0] = *packet++;
- buf[1] = *packet++;
-
- num -= 2;
-
- retry_count = 5;
-
- while (retry_count--) {
- ret = i2c_transfer(client->adapter, &msg, 1);
- if (likely(ret == 1))
- break;
- mdelay(10);
- }
-
- if (unlikely(ret < 0)) {
- cam_err("ERR - 0x%08x write failed err=%d\n",
- (u32)packet, ret);
- break;
- }
- }
-
- if (unlikely(ret < 0)) {
- cam_err("fail to write registers!!\n");
- return -EIO;
- }
-
- return 0;
-}
-
-static int db8131m_check_dataline(struct v4l2_subdev *sd, s32 val)
-{
- return 0;
-}
-
-static int db8131m_debug_sensor_status(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int db8131m_check_sensor_status(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static inline int db8131m_check_esd(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int db8131m_set_preview_start(struct v4l2_subdev *sd)
-{
- struct db8131m_state *state = to_state(sd);
- int err = -EINVAL;
-
- cam_info("reset preview\n");
-
-#ifdef CONFIG_LOAD_FILE
- err = db8131m_write_regs_from_sd(sd, "db8131m_preview");
-#else
- err = db8131m_write_regs(sd, db8131m_preview,
- sizeof(db8131m_preview) / sizeof(db8131m_preview[0]));
-#endif
- if (state->check_dataline)
- err = db8131m_check_dataline(sd, 1);
- if (unlikely(err)) {
- cam_err("fail to make preview\n");
- return err;
- }
-
- return 0;
-}
-
-static int db8131m_set_preview_stop(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int db8131m_set_capture_start(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int db8131m_set_sensor_mode(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct db8131m_state *state = to_state(sd);
-
- if ((ctrl->value != SENSOR_CAMERA) &&
- (ctrl->value != SENSOR_MOVIE)) {
- cam_err("ERR: Not support.(%d)\n", ctrl->value);
- return -EINVAL;
- }
-
- state->sensor_mode = ctrl->value;
-
- return 0;
-}
-
-static int db8131m_enum_framesizes(struct v4l2_subdev *sd, \
- struct v4l2_frmsizeenum *fsize)
-{
- return 0;
-}
-
-static int db8131m_s_fmt(struct v4l2_subdev *sd,
- struct v4l2_mbus_framefmt *ffmt)
-{
- struct db8131m_state *state = to_state(sd);
- u32 *width = NULL, *height = NULL;
-
- cam_dbg("E\n");
- /*
- * Just copying the requested format as of now.
- * We need to check here what are the formats the camera support, and
- * set the most appropriate one according to the request from FIMC
- */
-
- state->req_fmt.width = ffmt->width;
- state->req_fmt.height = ffmt->height;
- state->req_fmt.priv = ffmt->field;
-
- switch (state->req_fmt.priv) {
- case V4L2_PIX_FMT_MODE_PREVIEW:
- cam_dbg("V4L2_PIX_FMT_MODE_PREVIEW\n");
- width = &state->preview_frmsizes.width;
- height = &state->preview_frmsizes.height;
- break;
-
- case V4L2_PIX_FMT_MODE_CAPTURE:
- cam_dbg("V4L2_PIX_FMT_MODE_CAPTURE\n");
- width = &state->capture_frmsizes.width;
- height = &state->capture_frmsizes.height;
- break;
-
- default:
- cam_err("ERR(EINVAL)\n");
- return -EINVAL;
- }
-
- if ((*width != state->req_fmt.width) ||
- (*height != state->req_fmt.height)) {
- cam_err("ERR: Invalid size. width= %d, height= %d\n",
- state->req_fmt.width, state->req_fmt.height);
- }
-
- return 0;
-}
-
-static int db8131m_set_frame_rate(struct v4l2_subdev *sd, u32 fps)
-{
- int err = 0;
-
- cam_info("frame rate %d\n\n", fps);
-
- switch (fps) {
- case 7:
- err = db8131m_write_regs(sd, db8131m_vt_7fps,
- sizeof(db8131m_vt_7fps) / \
- sizeof(db8131m_vt_7fps[0]));
- break;
- case 10:
- err = db8131m_write_regs(sd, db8131m_vt_10fps,
- sizeof(db8131m_vt_10fps) / \
- sizeof(db8131m_vt_10fps[0]));
-
- break;
- case 12:
- err = db8131m_write_regs(sd, db8131m_vt_12fps,
- sizeof(db8131m_vt_12fps) / \
- sizeof(db8131m_vt_12fps[0]));
-
- break;
- case 15:
- err = db8131m_write_regs(sd, db8131m_vt_15fps,
- sizeof(db8131m_vt_15fps) / \
- sizeof(db8131m_vt_15fps[0]));
- break;
- default:
- cam_err("ERR: Invalid framerate\n");
- break;
- }
-
- if (unlikely(err < 0)) {
- cam_err("i2c_write for set framerate\n");
- return -EIO;
- }
-
- return err;
-}
-
-static int db8131m_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *parms)
-{
- int err = 0;
-
- cam_dbg("E\n");
-
- return err;
-}
-
-static int db8131m_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *parms)
-{
- int err = 0;
- u32 fps = 0;
- struct db8131m_state *state = to_state(sd);
-
- if (!state->vt_mode)
- return 0;
-
- cam_dbg("E\n");
-
- fps = parms->parm.capture.timeperframe.denominator /
- parms->parm.capture.timeperframe.numerator;
-
- if (fps != state->set_fps) {
- if (fps < 0 && fps > 30) {
- cam_err("invalid frame rate %d\n", fps);
- fps = 30;
- }
- state->req_fps = fps;
-
- if (state->initialized) {
- err = db8131m_set_frame_rate(sd, state->req_fps);
- if (err >= 0)
- state->set_fps = state->req_fps;
- }
-
- }
-
- return err;
-}
-
-static int db8131m_control_stream(struct v4l2_subdev *sd, u32 cmd)
-{
- int err = 0;
-
- switch (cmd) {
- case 0: /* STREAM_STOP */
- cam_dbg("stream stop!!!\n");
- break;
-
- case 1: /* STREAM_START */
- cam_warn("WARN: do nothing\n");
- break;
-
- default:
- cam_err("ERR: Invalid cmd\n");
- break;
- }
-
- if (unlikely(err))
- cam_err("failed to stream start(stop)\n");
-
- return err;
-}
-
-static int db8131m_init(struct v4l2_subdev *sd, u32 val)
-{
- /* struct i2c_client *client = v4l2_get_subdevdata(sd); */
- struct db8131m_state *state = to_state(sd);
- int err = -EINVAL;
-
- cam_dbg("E\n");
-
- /* set initial regster value */
- if (state->sensor_mode == SENSOR_CAMERA) {
- cam_info("load camera common setting\n");
- err = db8131m_write_regs(sd, db8131m_common_1,
- sizeof(db8131m_common_1) / \
- sizeof(db8131m_common_1[0]));
-
- msleep(150);
-
- err |= db8131m_write_regs(sd, db8131m_common_2,
- sizeof(db8131m_common_2) / \
- sizeof(db8131m_common_2[0]));
- } else {
- cam_info("load recording setting\n");
- err = db8131m_write_regs(sd, db8131m_common_1,
- sizeof(db8131m_common_1) / \
- sizeof(db8131m_common_1[0]));
-
- msleep(150);
-
- err = db8131m_write_regs(sd, db8131m_common_2,
- sizeof(db8131m_common_2) / \
- sizeof(db8131m_common_2[0]));
- }
- if (unlikely(err)) {
- cam_err("failed to init\n");
- return err;
- }
-
- /* We stop stream-output from sensor when starting camera. */
- err = db8131m_control_stream(sd, 0);
- if (unlikely(err < 0))
- return err;
- msleep(150);
-
- state->initialized = 1;
-
- return 0;
-}
-
-static int db8131m_s_stream(struct v4l2_subdev *sd, int enable)
-{
- struct db8131m_state *state = to_state(sd);
- /* struct i2c_client *client = v4l2_get_subdevdata(sd); */
- int err = 0;
-
- cam_info("stream mode = %d\n", enable);
-
- switch (enable) {
- case STREAM_MODE_CAM_OFF:
- if (state->sensor_mode == SENSOR_CAMERA) {
- if (state->check_dataline)
- err = db8131m_check_dataline(sd, 0);
- else
- err = db8131m_control_stream(sd, 0);
- }
- break;
-
- case STREAM_MODE_CAM_ON:
- /* The position of this code need to be adjusted later */
- if ((state->sensor_mode == SENSOR_CAMERA)
- && (state->req_fmt.priv == V4L2_PIX_FMT_MODE_CAPTURE))
- err = db8131m_set_capture_start(sd);
- else
- err = db8131m_set_preview_start(sd);
- break;
-
- case STREAM_MODE_MOVIE_ON:
- cam_dbg("do nothing(movie on)!!\n");
- break;
-
- case STREAM_MODE_MOVIE_OFF:
- cam_dbg("do nothing(movie off)!!\n");
- break;
-
- default:
- cam_err("ERR: Invalid stream mode\n");
- break;
- }
-
- if (unlikely(err < 0)) {
- cam_err("ERR: faild\n");
- return err;
- }
-
- return 0;
-}
-
-static int db8131m_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- struct db8131m_state *state = to_state(sd);
- int err = 0;
-
- cam_dbg("ctrl->id : %d\n", ctrl->id - V4L2_CID_PRIVATE_BASE);
-
- switch (ctrl->id) {
- case V4L2_CID_CAMERA_EXIF_TV:
- ctrl->value = state->exif.shutter_speed;
- break;
- case V4L2_CID_CAMERA_EXIF_ISO:
- ctrl->value = state->exif.iso;
- break;
- default:
- cam_err("no such control id %d\n",
- ctrl->id - V4L2_CID_PRIVATE_BASE);
- break;
- }
-
- return err;
-}
-
-static int db8131m_set_brightness(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct db8131m_state *state = to_state(sd);
- int err = -EINVAL;
-
- cam_dbg("E\n");
-
- if (state->check_dataline)
- return 0;
-
- switch (ctrl->value) {
- case EV_MINUS_4:
- err = db8131m_write_regs(sd, db8131m_bright_m4, \
- sizeof(db8131m_bright_m4) / \
- sizeof(db8131m_bright_m4[0]));
- break;
- case EV_MINUS_3:
- err = db8131m_write_regs(sd, db8131m_bright_m3, \
- sizeof(db8131m_bright_m3) / \
- sizeof(db8131m_bright_m3[0]));
-
- break;
- case EV_MINUS_2:
- err = db8131m_write_regs(sd, db8131m_bright_m2, \
- sizeof(db8131m_bright_m2) / \
- sizeof(db8131m_bright_m2[0]));
- break;
- case EV_MINUS_1:
- err = db8131m_write_regs(sd, db8131m_bright_m1, \
- sizeof(db8131m_bright_m1) / \
- sizeof(db8131m_bright_m1[0]));
- break;
- case EV_DEFAULT:
- err = db8131m_write_regs(sd, db8131m_bright_default, \
- sizeof(db8131m_bright_default) / \
- sizeof(db8131m_bright_default[0]));
- break;
- case EV_PLUS_1:
- err = db8131m_write_regs(sd, db8131m_bright_p1, \
- sizeof(db8131m_bright_p1) / \
- sizeof(db8131m_bright_p1[0]));
- break;
- case EV_PLUS_2:
- err = db8131m_write_regs(sd, db8131m_bright_p2, \
- sizeof(db8131m_bright_p2) / \
- sizeof(db8131m_bright_p2[0]));
- break;
- case EV_PLUS_3:
- err = db8131m_write_regs(sd, db8131m_bright_p3, \
- sizeof(db8131m_bright_p3) / \
- sizeof(db8131m_bright_p3[0]));
- break;
- case EV_PLUS_4:
- err = db8131m_write_regs(sd, db8131m_bright_p4, \
- sizeof(db8131m_bright_p4) / \
- sizeof(db8131m_bright_p4[0]));
- break;
- default:
- cam_err("ERR: invalid brightness(%d)\n", ctrl->value);
- return err;
- break;
- }
-
- if (unlikely(err < 0)) {
- cam_err("ERR: i2c_write for set brightness\n");
- return -EIO;
- }
-
- return 0;
-}
-
-static int db8131m_set_blur(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- return 0;
-}
-
-static int db8131m_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- /* struct i2c_client *client = v4l2_get_subdevdata(sd); */
- struct db8131m_state *state = to_state(sd);
- int err = 0;
-
- cam_info("ctrl->id : %d, value=%d\n", ctrl->id - V4L2_CID_PRIVATE_BASE,
- ctrl->value);
-
- if ((ctrl->id != V4L2_CID_CAMERA_CHECK_DATALINE)
- && (ctrl->id != V4L2_CID_CAMERA_SENSOR_MODE)
- && ((ctrl->id != V4L2_CID_CAMERA_VT_MODE))
- && (!state->initialized)) {
- cam_warn("camera isn't initialized\n");
- return 0;
- }
-
- switch (ctrl->id) {
- case V4L2_CID_CAM_PREVIEW_ONOFF:
- if (ctrl->value)
- err = db8131m_set_preview_start(sd);
- else
- err = db8131m_set_preview_stop(sd);
- cam_dbg("V4L2_CID_CAM_PREVIEW_ONOFF [%d]\n", ctrl->value);
- break;
-
- case V4L2_CID_CAM_CAPTURE:
- err = db8131m_set_capture_start(sd);
- cam_dbg("V4L2_CID_CAM_CAPTURE\n");
- break;
-
- case V4L2_CID_CAMERA_BRIGHTNESS:
- err = db8131m_set_brightness(sd, ctrl);
- cam_dbg("V4L2_CID_CAMERA_BRIGHTNESS [%d]\n", ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_VGA_BLUR:
- err = db8131m_set_blur(sd, ctrl);
- cam_dbg("V4L2_CID_CAMERA_VGA_BLUR [%d]\n", ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_VT_MODE:
- state->vt_mode = ctrl->value;
- break;
-
- case V4L2_CID_CAMERA_CHECK_DATALINE:
- state->check_dataline = ctrl->value;
- cam_dbg("check_dataline = %d\n", state->check_dataline);
- err = 0;
- break;
-
- case V4L2_CID_CAMERA_SENSOR_MODE:
- err = db8131m_set_sensor_mode(sd, ctrl);
- cam_dbg("sensor_mode = %d\n", ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_CHECK_DATALINE_STOP:
- cam_dbg("do nothing\n");
- /*err = db8131m_check_dataline_stop(sd);*/
- break;
-
- case V4L2_CID_CAMERA_CHECK_ESD:
- err = db8131m_check_esd(sd);
- break;
-
- case V4L2_CID_CAMERA_FRAME_RATE:
- cam_dbg("do nothing\n");
- break;
-
- case V4L2_CID_CAMERA_CHECK_SENSOR_STATUS:
- db8131m_debug_sensor_status(sd);
- err = db8131m_check_sensor_status(sd);
- break;
-
- default:
- cam_err("ERR(ENOIOCTLCMD)\n");
- /* no errors return.*/
- break;
- }
-
- cam_dbg("X\n");
- return err;
-}
-
-static const struct v4l2_subdev_core_ops db8131m_core_ops = {
- .init = db8131m_init, /* initializing API */
-#if 0
- .queryctrl = db8131m_queryctrl,
- .querymenu = db8131m_querymenu,
-#endif
- .g_ctrl = db8131m_g_ctrl,
- .s_ctrl = db8131m_s_ctrl,
-};
-
-static const struct v4l2_subdev_video_ops db8131m_video_ops = {
- /*.s_crystal_freq = db8131m_s_crystal_freq,*/
- .s_mbus_fmt = db8131m_s_fmt,
- .s_stream = db8131m_s_stream,
- .enum_framesizes = db8131m_enum_framesizes,
- /*.enum_frameintervals = db8131m_enum_frameintervals,*/
- /*.enum_fmt = db8131m_enum_fmt,*/
- .g_parm = db8131m_g_parm,
- .s_parm = db8131m_s_parm,
-};
-
-static const struct v4l2_subdev_ops db8131m_ops = {
- .core = &db8131m_core_ops,
- .video = &db8131m_video_ops,
-};
-
-/*
- * db8131m_probe
- * Fetching platform data is being done with s_config subdev call.
- * In probe routine, we just register subdev device
- */
-static int db8131m_probe(struct i2c_client *client,
- const struct i2c_device_id *id)
-{
- struct db8131m_state *state = NULL;
- struct v4l2_subdev *sd = NULL;
- struct db8131m_platform_data *pdata = NULL;
- cam_dbg("E\n");
-
- state = kzalloc(sizeof(struct db8131m_state), GFP_KERNEL);
- if (state == NULL)
- return -ENOMEM;
-
- sd = &state->sd;
- strcpy(sd->name, DB8131M_DRIVER_NAME);
-
- state->initialized = 0;
- state->req_fps = state->set_fps = 8;
- state->sensor_mode = SENSOR_CAMERA;
-
- pdata = client->dev.platform_data;
-
- if (!pdata) {
- cam_err("no platform data\n");
- return -ENODEV;
- }
-
- /* Registering subdev */
- v4l2_i2c_subdev_init(sd, client, &db8131m_ops);
-
- /*
- * Assign default format and resolution
- * Use configured default information in platform data
- * or without them, use default information in driver
- */
- if (!(pdata->default_width && pdata->default_height)) {
- state->preview_frmsizes.width = DEFAULT_PREVIEW_WIDTH;
- state->preview_frmsizes.height = DEFAULT_PREVIEW_HEIGHT;
- } else {
- state->preview_frmsizes.width = pdata->default_width;
- state->preview_frmsizes.height = pdata->default_height;
- }
- state->capture_frmsizes.width = DEFAULT_CAPTURE_WIDTH;
- state->capture_frmsizes.height = DEFAULT_CAPTURE_HEIGHT;
-
- cam_dbg("preview_width: %d , preview_height: %d, "
- "capture_width: %d, capture_height: %d",
- state->preview_frmsizes.width, state->preview_frmsizes.height,
- state->capture_frmsizes.width, state->capture_frmsizes.height);
-
- state->req_fmt.width = state->preview_frmsizes.width;
- state->req_fmt.height = state->preview_frmsizes.height;
-
- if (!pdata->pixelformat)
- state->req_fmt.pixelformat = VT_DEFAULT_FMT;
- else
- state->req_fmt.pixelformat = pdata->pixelformat;
-
- cam_dbg("probed!!\n");
-
- return 0;
-}
-
-static int db8131m_remove(struct i2c_client *client)
-{
- struct v4l2_subdev *sd = i2c_get_clientdata(client);
- struct db8131m_state *state = to_state(sd);
-
- cam_dbg("E\n");
-
- state->initialized = 0;
-
- v4l2_device_unregister_subdev(sd);
- kfree(to_state(sd));
-
- return 0;
-}
-
-static const struct i2c_device_id db8131m_id[] = {
- { DB8131M_DRIVER_NAME, 0 },
- { },
-};
-MODULE_DEVICE_TABLE(i2c, db8131m_id);
-
-static struct i2c_driver db8131m_i2c_driver = {
- .driver = {
- .name = DB8131M_DRIVER_NAME,
- },
- .probe = db8131m_probe,
- .remove = db8131m_remove,
- .id_table = db8131m_id,
-};
-
-static int __init db8131m_mod_init(void)
-{
- cam_dbg("E\n");
- return i2c_add_driver(&db8131m_i2c_driver);
-}
-
-static void __exit db8131m_mod_exit(void)
-{
- cam_dbg("E\n");
- i2c_del_driver(&db8131m_i2c_driver);
-}
-module_init(db8131m_mod_init);
-module_exit(db8131m_mod_exit);
-
-MODULE_DESCRIPTION("DB8131M CAM driver");
-MODULE_AUTHOR(" ");
-MODULE_LICENSE("GPL");
diff --git a/drivers/media/video/slp_db8131m.h b/drivers/media/video/slp_db8131m.h
deleted file mode 100644
index 3c594a2..0000000
--- a/drivers/media/video/slp_db8131m.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * linux/drivers/media/video/slp_db8131m.c
- *
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __DB8131M_H
-#define __DB8131M_H
-
-#include <linux/types.h>
-
-extern struct class *camera_class;
-
-#define DB8131M_DRIVER_NAME "DB8131M"
-
-struct db8131m_framesize {
- u32 width;
- u32 height;
-};
-
-struct db8131m_exif {
- u32 shutter_speed;
- u16 iso;
-};
-
-
-/*
- * Driver information
- */
-struct db8131m_state {
- struct v4l2_subdev sd;
- struct device *db8131m_dev;
- /*
- * req_fmt is the requested format from the application.
- * set_fmt is the output format of the camera. Finally FIMC
- * converts the camera output(set_fmt) to the requested format
- * with hardware scaler.
- */
- struct v4l2_pix_format req_fmt;
- struct db8131m_framesize preview_frmsizes;
- struct db8131m_framesize capture_frmsizes;
- struct db8131m_exif exif;
-
- enum v4l2_sensor_mode sensor_mode;
- s32 vt_mode;
- s32 check_dataline;
- u32 req_fps;
- u32 set_fps;
- u32 initialized;
-};
-
-static inline struct db8131m_state *to_state(struct v4l2_subdev *sd)
-{
- return container_of(sd, struct db8131m_state, sd);
-}
-
-/*#define CONFIG_CAM_DEBUG */
-#define cam_warn(fmt, ...) \
- do { \
- printk(KERN_WARNING "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#define cam_err(fmt, ...) \
- do { \
- printk(KERN_ERR "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#define cam_info(fmt, ...) \
- do { \
- printk(KERN_INFO "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#ifdef CONFIG_CAM_DEBUG
-#define cam_dbg(fmt, ...) \
- do { \
- printk(KERN_DEBUG "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-#else
-#define cam_dbg(fmt, ...)
-#endif /* CONFIG_CAM_DEBUG */
-
-
-
-/*********** Sensor specific ************/
-#define DB8131M_DELAY 0xFFFF0000
-#define DB8131M_DEF_APEX_DEN 100
-
-/* Register address */
-#define REG_PAGE_SHUTTER 0x7000
-#define REG_ADDR_SHUTTER 0x14D0
-#define REG_PAGE_ISO 0x7000
-#define REG_ADDR_ISO 0x14C8
-
-#include "slp_db8131m_setfile.h"
-
-#endif /* __DB8131M_H */
diff --git a/drivers/media/video/slp_db8131m_setfile.h b/drivers/media/video/slp_db8131m_setfile.h
deleted file mode 100644
index ebbdbb0..0000000
--- a/drivers/media/video/slp_db8131m_setfile.h
+++ /dev/null
@@ -1,2264 +0,0 @@
-/*
- * linux/drivers/media/video/slp_db8131m_setfile.h
- *
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#ifndef __DB8131M_SETFILE_H
-#define __DB8131M_SETFILE_H
-
-#include <linux/types.h>
-
-/* 1.3M mipi setting-common from PARTRON */
-/*******************************************************************/
-/* Name : DB8131M Initial Setfile*/
-/* PLL mode : MCLK=24MHz / PCLK=48MHz*/
-/* FPS : Preview 7.5~15fps / Capture 7.5fps / recording 25fps*/
-/* Date : 2011.12.06*/
-/*******************************************************************/
-
-
-static const u8 db8131m_common_1[] = {
-/***************************************************/
-/* Command Preview 7.5~15fps*/
-/***************************************************/
-0xFF, 0xC0, /*Page mode*/
-0x10, 0x01,
-};
-/*Wait 150*/
-
-static const u8 db8131m_common_2[] = {
-/***************************************************/
-/* Format*/
-/***************************************************/
-0xFF, 0xA1, /*Page mode*/
-0x70, 0x01,
-0x71, 0x0D,
-
-/***************************************************/
-/* SensorCon*/
-/***************************************************/
-0xFF, 0xD0, /*Page mode*/
-0x0F, 0x0B, /*ABLK_Ctrl_1_Addr*/
-0x13, 0x00, /*Gain_Addr*/
-0x15, 0x01, /*IVREFT_REFB_Addr*/
-0x20, 0x0E, /*ABLK_Rsrv_Addr*/
-0x23, 0x01, /*IVREFT2_REFB2_Addr*/
-0x24, 0x01, /*IPPG_IVCM2_Addr*/
-0x39, 0x70, /*RiseSx_CDS_1_L_Addr*/
-0x51, 0x19, /*Fallcreset_1_L_Addr*/
-0x83, 0x2D, /*RiseTran_Sig_Even_L_Addr*/
-0x85, 0x2F, /*FallTran_Sig_Even_L_Addr*/
-0x87, 0x2D, /*RiseTran_Sig_Odd_L_Addr*/
-0x89, 0x2F, /*FallTran_Sig_Odd_L_Addr*/
-0x8B, 0x27, /*RiseCNT_EN_1_L_Addr*/
-0x8D, 0x6c, /*FallCNT_EN_1_L_Addr*/
-0xD7, 0x80, /*ABLK_Ctrl_12_Addr*/
-0xDB, 0xA2, /*FallScanTx15_1_L_Addr*/
-0xED, 0x01, /*PLL_P_Addr*/
-0xEE, 0x0F, /*PLL_M_Addr*/
-0xEF, 0x00, /*PLL_S_Addr*/
-0xF9, 0x00, /*ABLK_Ctrl_8*/
-0xF8, 0x00, /*Vblank Sleep Mode enable*/
-0xFB, 0x90, /*PostADC_Gain_Addr*/
-
-/***************************************************/
-/* Analog ADF*/
-/***************************************************/
-0xFF, 0x85, /*Page mode*/
-0x89, 0x93, /*gAdf_u8APThreshold*/
-0x8A, 0x0C, /*u8APClmpThreshold*/
-0x8C, 0x07, /*gAdf_u8APMinVal_ThrClampH*/
-0x8D, 0x40, /*gAdf_u8APMinVal_ThrClampL*/
-0x8E, 0x03, /*gAdf_u8APMinVal_DOFFSET*/
-0x8F, 0x14, /*gAdf_u8APMinVal_AMP2_1_SDM*/
-0x91, 0x1A, /*gAdf_u8APMinVal_AMP4_3_SDM*/
-0x92, 0x0F, /*gAdf_u8APMinVal_FallIntTx15*/
-0x93, 0x47, /*gAdf_u8APMinVal_CDSxRange_CtrlPre*/
-0x95, 0x18, /*gAdf_u8APMinVal_REFB_IVCM*/
-0x96, 0x38, /*gAdf_u8APMinVal_ref_os_PB*/
-0x97, 0x0D, /*gAdf_u8APMinVal_NTx_Range*/
-0x98, 0x0D, /*gAdf_u8APMaxVal_Clmp_rst*/
-0x99, 0x06, /*gAdf_u8APMaxVal_ThrClampH*/
-0x9A, 0x9F, /*gAdf_u8APMaxVal_ThrClampL*/
-0x9B, 0x02, /*gAdf_u8APMaxVal_DOFFSET*/
-0x9C, 0x1C, /*gAdf_u8APMaxVal_AMP2_1_SDM*/
-0x9E, 0x11, /*gAdf_u8APMaxVal_AMP4_3_SDM*/
-0x9F, 0x5D, /*gAdf_u8APMaxVal_FallIntTx15*/
-0xA0, 0x78, /*gAdf_u8APMaxVal_CDSxRange_CtrlPre*/
-0xA2, 0x18, /*gAdf_u8APMaxVal_REFB_IVCM*/
-0xA3, 0x40, /*gAdf_u8APMaxVal_ref_os_PB*/
-0xA4, 0x0B, /*gAdf_u8APMaxVal_NTx_Range*/
-
-0xFF, 0x86, /*Page mode*/
-0x15, 0x00, /*gPT_u8Adf_APThrHys*/
-0x16, 0xF7, /*gPT_u8Adf_APFallIntTxThrLevel*/
-0x17, 0x13, /*gPT_u8Adf_APMinVal_BP2_1_SDM*/
-0x18, 0x13, /*gPT_u8Adf_APMidVal_BP2_1_SDM*/
-0x19, 0x1C, /*gPT_u8Adf_APMaxVal_BP2_1_SDM*/
-0x1A, 0x06, /*gPT_u8Adf_APMidVal_ThrClampH*/
-0x1B, 0xF0, /*gPT_u8Adf_APMidVal_ThrClampL*/
-0x1C, 0x01, /*gPT_u8Adf_APMidVal_DOFFSET*/
-0x1D, 0x14, /*gPT_u8Adf_APMidVal_AMP2_1_SDM*/
-0x1F, 0x31, /*gPT_u8Adf_APMidVal_AMP4_3_SDM*/
-0x20, 0x68, /*gPT_u8Adf_APMidVal_CDSxRange_CtrlPre*/
-0x22, 0x18, /*gPT_u8Adf_APMidVal_REFB_IVCM*/
-0x23, 0x38, /*gPT_u8Adf_APMidVal_ref_os_PB*/
-0x24, 0x0F, /*gPT_u8Adf_APMidVal_NTx_Range*/
-0x25, 0x77, /*gPT_u8Adf_APVal_EnSiSoSht_EnSm*/
-
-0xFF, 0x87, /*Page mode*/
-0xEA, 0x41,
-
-0xFF, 0xD0, /*Page mode*/
-0x20, 0x0D, /*ABLK_Rsrv_Addr*/
-
-0xFF, 0x83, /*Page mode*/
-0x63, 0x28, /*Again Table*/
-0x64, 0x10, /*Again Table*/
-0x65, 0xA8, /*Again Table*/
-0x66, 0x50, /*Again Table*/
-0x67, 0x28, /*Again Table*/
-0x68, 0x14, /*Again Table*/
-
-
-/***************************************************/
-/* AE*/
-/***************************************************/
-0xFF, 0x82, /*Page mode*/
-0x95, 0x88, /* AE weight*/
-0x96, 0x88,
-0x97, 0xF8,
-0x98, 0x8F,
-0x99, 0xF8,
-0x9A, 0x8F,
-0x9B, 0x88,
-0x9C, 0x88,
-0xA9, 0x40, /* OTarget*/
-0xAA, 0x40, /* ITarget*/
-0x9D, 0x66, /* AE Speed*/
-0x9F, 0x06, /* AE HoldBnd*/
-0xA8, 0x40, /* STarget*/
-0xB9, 0x04, /* RGain*/
-0xBB, 0x04, /* GGain*/
-0xBD, 0x04, /* BGain*/
-0xC5, 0x02, /* PeakMvStep*/
-0xC6, 0x38, /* PeakTgMin*/
-0xC7, 0x24, /* PeakRatioTh1*/
-0xC8, 0x10, /* PeakRatioTh0*/
-0xC9, 0x05, /* PeakLuTh*/
-0xD5, 0x60, /* LuxGainTB_2*/
-0xFF, 0x83, /*Page mode */
-0x2F, 0x04, /* TimeNum0*/
-0x30, 0x05, /* TimeNum1*/
-0x4F, 0x05, /* FrameOffset*/
-0xFF, 0x82, /*Page mode */
-0xA1, 0x0A, /* AnalogGainMax*/
-0xF3, 0x09, /* SCLK*/
-0xF4, 0x60,
-0xF9, 0x00, /* GainMax*/
-0xFA, 0xC8, /* GainMax*/
-0xFB, 0x62, /* Gain3Lut*/
-0xFC, 0x39, /* Gain2Lut*/
-0xFD, 0x28, /* Gain1Lut*/
-0xFE, 0x12, /* GainMin*/
-0xFF, 0x83, /*Page mode */
-0x03, 0x0F, /* TimeMax60Hz : 8fps*/
-0x04, 0x0A, /* Time3Lux60Hz : 12fps*/
-0x05, 0x04, /* Time2Lut60Hz : 24fps*/
-0x06, 0x04, /* Time1Lut60Hz : 24fps*/
-0xFF, 0x82, /*Page mode */
-0xD3, 0x12, /* LuxTBGainStep0 */
-0xD4, 0x36, /* LuxTBGainStep1 */
-0xD5, 0x60, /* LuxTBGainStep2*/
-0xD6, 0x01, /* LuxTBTimeStep0H*/
-0xD7, 0x00, /* LuxTBTimeStep0L*/
-0xD8, 0x01, /* LuxTBTimeStep1H*/
-0xD9, 0xC0, /* LuxTBTimeStep1L*/
-0xDA, 0x06, /* LuxTBTimeStep2H*/
-0xDB, 0x00, /* LuxTBTimeStep2L*/
-0xFF, 0x83, /*Page mode */
-0x0B, 0x04,
-0x0C, 0x4C, /* Frame Rate*/
-0xFF, 0x82, /*Page mode */
-0x92, 0x5D,
-
-/***************************************************/
-/* AWB*/
-/***************************************************/
-0xFF, 0x83, /*Page mode */
-0x79, 0x83, /* AWB SKIN ON*/
-0x86, 0x07, /* gAWB_u16MinGrayCnt_rw_0*/
-0x87, 0x00, /* gAWB_u16MinGrayCnt_rw_1*/
-0x90, 0x05, /* gAWB_u16FinalRGain_ro_0*/
-0x94, 0x05, /* gAWB_u16FinalBGain_ro_0*/
-0x98, 0xD4, /* SkinWinCntTh*/
-0xA2, 0x28, /* SkinYTh*/
-0xA3, 0x00, /* SkinHoldHitCnt*/
-0xA4, 0x0F, /* SkinHoldHitCnt*/
-0xAD, 0x65, /* u8SkinTop2*/
-0xAE, 0x80, /* gAwb_u8SkinTop2LS1Ratio_rw 5zone*/
-0xAF, 0x20, /* gAwb_u8SkinTop2LS2Ratio_rw 6zone */
-0xB4, 0x10, /* u8SkinTop2LSHys_rw*/
-0xB5, 0x54, /* gAwb_u8SkinLTx*/
-0xB6, 0xbd, /* gAwb_u8SkinLTy*/
-0xB7, 0x74, /* gAwb_u8SkinRBx*/
-0xB8, 0x9d, /* gAwb_u8SkinRBy*/
-0xBA, 0x4F, /* UniCThrY_rw*/
-0xBF, 0x0C, /* u16UniCGrayCntThr_rw_0*/
-0xC0, 0x80, /* u16UniCGrayCntThr_rw_1*/
-0xFF, 0x87, /*Page mode */
-0xC9, 0x22, /* gUR_u8AWBTrim_Addr*/
-0xFF, 0x84, /*Page mode */
-0x49, 0x02, /* Threshold_indoor*/
-0x4A, 0x00,
-0x4B, 0x03, /* Threshold_outdoor*/
-0x4C, 0x80,
-0xFF, 0x83, /*Page mode */
-0xCB, 0x03, /* R MinGain [Default 0X20] A Spec Pass */
-0xCC, 0xC0, /* R MinGain [Default 0X20] A Spec Pass */
-0x82, 0x00, /* lockratio*/
-0xFF, 0x84, /*Page mode */
-0x3D, 0x00, /* gAwb_u32LuxConst1_rw_0*/
-0x3E, 0x00, /* gAwb_u32LuxConst1_rw_1*/
-0x3F, 0x06, /* gAwb_u32LuxConst1_rw_2*/
-0x40, 0x20, /* gAwb_u32LuxConst1_rw_3*/
-0x41, 0x07, /* gAwb_u32LuxConst2_rw_0*/
-0x42, 0x53, /* gAwb_u32LuxConst2_rw_1*/
-0x43, 0x00, /* gAwb_u32LuxConst2_rw_2*/
-0x44, 0x00, /* gAwb_u32LuxConst2_rw_3*/
-0x55, 0x03, /* gAwb_u8Weight_Gen_rw_0 */
-0x56, 0x10, /* gAwb_u8Weight_Gen_rw_1 */
-0x57, 0x14, /* gAwb_u8Weight_Gen_rw_2 */
-0x58, 0x07, /* gAwb_u8Weight_Gen_rw_3 */
-0x59, 0x04, /* gAwb_u8Weight_Gen_rw_4 */
-0x5A, 0x03, /* gAwb_u8Weight_Gen_rw_5 */
-0x5B, 0x03, /* gAwb_u8Weight_Gen_rw_6 */
-0x5C, 0x15, /* gAwb_u8Weight_Gen_rw_7 */
-0x5D, 0x01, /* gAwb_u8Weight_Ind_rw_0 */
-0x5E, 0x0F, /* gAwb_u8Weight_Ind_rw_1 */
-0x5F, 0x07, /* gAwb_u8Weight_Ind_rw_2 */
-0x60, 0x14, /* gAwb_u8Weight_Ind_rw_3 */
-0x61, 0x14, /* gAwb_u8Weight_Ind_rw_4 */
-0x62, 0x12, /* gAwb_u8Weight_Ind_rw_5 */
-0x63, 0x11, /* gAwb_u8Weight_Ind_rw_6 */
-0x64, 0x14, /* gAwb_u8Weight_Ind_rw_7 */
-0x65, 0x03, /* gAwb_u8Weight_Outd_rw_0*/
-0x66, 0x05, /* gAwb_u8Weight_Outd_rw_1*/
-0x67, 0x15, /* gAwb_u8Weight_Outd_rw_2*/
-0x68, 0x04, /* gAwb_u8Weight_Outd_rw_3*/
-0x69, 0x01, /* gAwb_u8Weight_Outd_rw_4*/
-0x6A, 0x02, /* gAwb_u8Weight_Outd_rw_5*/
-0x6B, 0x03, /* gAwb_u8Weight_Outd_rw_6*/
-0x6C, 0x15, /* gAwb_u8Weight_Outd_rw_6*/
-0xFF, 0x85, /*Page mode */
-0xE2, 0x0C, /* gPT_u8Awb_UnicolorZone_rw */
-0xFF, 0x83, /*Page mode */
-0xCD, 0x06, /*Max Rgain*/
-0xCE, 0x80,
-0xD1, 0x06, /*Max BGain*/
-0xd2, 0x80,
-
-/***************************************************/
-/* AWB STE*/
-/***************************************************/
-0xFF, 0xA1, /*Page mode */
-/*Flash*/
-0xA0, 0x5c, /*AWBZone0LTx*/
-0xA1, 0x7a, /*AWBZone0LTy*/
-0xA2, 0x69, /*AWBZone0RBx*/
-0xA3, 0x6f, /*AWBZone0RBy*/
-/*cloudy*/
-0xA4, 0x73, /*AWBZone1LTx*/
-0xA5, 0x55, /*AWBZone1LTy*/
-0xA6, 0x8C, /*AWBZone1RBx*/
-0xA7, 0x30, /*AWBZone1RBy */
-/*Daylight */
-0xA8, 0x69, /*AWBZone2LTx*/
-0xA9, 0x69, /*AWBZone2LTy*/
-0xAA, 0x83, /*AWBZone2RBx*/
-0xAB, 0x52, /*AWBZone2RBy */
-/*Fluorescent */
-0xAC, 0x57, /*AWBZone3LTx*/
-0xAD, 0x6e, /*AWBZone3LTy*/
-0xAE, 0x6f, /*AWBZone3RBx*/
-0xAF, 0x59, /*AWBZone3RBy*/
-
-/*CWF */
-0xB0, 0x50, /*AWBZone4LTx*/
-0xB1, 0x74, /*AWBZone4LTy*/
-0xB2, 0x65, /*AWBZone4RBx*/
-0xB3, 0x5d, /*AWBZone4RBy*/
-/*TL84 */
-0xB4, 0x53, /*AWBZone5LTx*/
-0xB5, 0x7f, /*AWBZone5LTy*/
-0xB6, 0x62, /*AWBZone5RBx*/
-0xB7, 0x75, /*AWBZone5RBy */
-/*A */
-0xB8, 0x4a, /*AWBZone6LTx*/
-0xB9, 0x87, /*AWBZone6LTy*/
-0xBA, 0x59, /*AWBZone6RBx*/
-0xBB, 0x78, /*AWBZone6RBy*/
-/*Horizon */
-0xBC, 0x41, /*AWBZone7LTx*/
-0xBD, 0x91, /*AWBZone7LTy*/
-0xBE, 0x4b, /*AWBZone7RBx*/
-0xBF, 0x89, /*AWBZone7RBy*/
-/*Skin */
-0xC0, 0x5b, /*AWBZone8LTx*/
-0xC1, 0x85, /*AWBZone8LTy*/
-0xC2, 0x60, /*AWBZone8RBx*/
-0xC3, 0x7b, /*AWBZone8RBy*/
-
-/***************************************************/
-/* UR*/
-/***************************************************/
-0xFF, 0x85, /*Page mode */
-0x06, 0x05,
-0xFF, 0x86, /*Page mode */
-0x14, 0x1E, /* CCM sum 1*/
-0xFF, 0x85, /*Page mode */
-0x86, 0x42, /* 42 saturation level*/
-0x07, 0x00, /* sup hysteresis*/
-
-/*DAY light */
-0xFF, 0x83, /*Page mode */
-0xEA, 0x00, /*gAwb_s16AdapCCMTbl_0*/
-0xEB, 0x53, /*gAwb_s16AdapCCMTbl_1*/
-0xEC, 0xFF, /*gAwb_s16AdapCCMTbl_2*/
-0xED, 0xE1, /*gAwb_s16AdapCCMTbl_3*/
-0xEE, 0x00, /*gAwb_s16AdapCCMTbl_4*/
-0xEF, 0x05, /*gAwb_s16AdapCCMTbl_5*/
-0xF0, 0xFF, /*gAwb_s16AdapCCMTbl_6*/
-0xF1, 0xF3, /*gAwb_s16AdapCCMTbl_7*/
-0xF2, 0x00, /*gAwb_s16AdapCCMTbl_8*/
-0xF3, 0x4B, /*gAwb_s16AdapCCMTbl_9*/
-0xF4, 0xFF, /*gAwb_s16AdapCCMTbl_10*/
-0xF5, 0xFA, /*gAwb_s16AdapCCMTbl_11*/
-0xF6, 0xFF, /*gAwb_s16AdapCCMTbl_12*/
-0xF7, 0xFa, /*gAwb_s16AdapCCMTbl_13*/
-0xF8, 0xFF, /*gAwb_s16AdapCCMTbl_14*/
-0xF9, 0xC3, /*gAwb_s16AdapCCMTbl_15*/
-0xFA, 0x00, /*gAwb_s16AdapCCMTbl_16*/
-0xFB, 0x80, /*gAwb_s16AdapCCMTbl_17*/
-
-/*CWF lgiht */
-0xFF, 0x83, /*Page mode*/
-0xFC, 0x00, /* gAwb_s16AdapCCMTbl_18 */
-0xFD, 0x68, /* gAwb_s16AdapCCMTbl_19 */
-0xFF, 0x85, /*Page mode */
-0xE0, 0xFF, /* gAwb_s16AdapCCMTbl_20 */
-0xE1, 0xde, /* gAwb_s16AdapCCMTbl_21 */
-0xFF, 0x84, /*Page mode */
-0x00, 0xff, /* gAwb_s16AdapCCMTbl_22 */
-0x01, 0xfa, /* gAwb_s16AdapCCMTbl_23 */
-0x02, 0xFF, /* gAwb_s16AdapCCMTbl_24 */
-0x03, 0xf0, /* gAwb_s16AdapCCMTbl_25 */
-0x04, 0x00, /* gAwb_s16AdapCCMTbl_26 */
-0x05, 0x52, /* gAwb_s16AdapCCMTbl_27 */
-0x06, 0xFF, /* gAwb_s16AdapCCMTbl_28 */
-0x07, 0xFa, /* gAwb_s16AdapCCMTbl_29 */
-0x08, 0x00, /* gAwb_s16AdapCCMTbl_30 */
-0x09, 0x00, /* gAwb_s16AdapCCMTbl_31 */
-0x0A, 0xFF, /* gAwb_s16AdapCCMTbl_32 */
-0x0B, 0xdb, /* gAwb_s16AdapCCMTbl_33 */
-0x0C, 0x00, /* gAwb_s16AdapCCMTbl_34 */
-0x0D, 0x68, /* gAwb_s16AdapCCMTbl_35 */
-
-/*A light */
-
-0x0E, 0x00, /* gAwb_s16AdapCCMTbl_36 */
-0x0F, 0x6d, /* gAwb_s16AdapCCMTbl_37 */
-0x10, 0xFF, /* gAwb_s16AdapCCMTbl_38 */
-0x11, 0xd5, /* gAwb_s16AdapCCMTbl_39 */
-0x12, 0xff, /* gAwb_s16AdapCCMTbl_40 */
-0x13, 0xfe, /* gAwb_s16AdapCCMTbl_41 */
-0x14, 0xFF, /* gAwb_s16AdapCCMTbl_42 */
-0x15, 0xf4, /* gAwb_s16AdapCCMTbl_43 */
-0x16, 0x00, /* gAwb_s16AdapCCMTbl_44 */
-0x17, 0x5a, /* gAwb_s16AdapCCMTbl_45 */
-0x18, 0xff, /* gAwb_s16AdapCCMTbl_46 */
-0x19, 0xef, /* gAwb_s16AdapCCMTbl_47 */
-0x1A, 0xff, /* gAwb_s16AdapCCMTbl_48 */
-0x1B, 0xfa, /* gAwb_s16AdapCCMTbl_49 */
-0x1C, 0xFF, /* gAwb_s16AdapCCMTbl_50 */
-0x1D, 0xbe, /* gAwb_s16AdapCCMTbl_51 */
-0x1E, 0x00, /* gAwb_s16AdapCCMTbl_52 */
-0x1F, 0x86, /* gAwb_s16AdapCCMTbl_53 */
-
-
-/***************************************************/
-/* ADF*/
-/***************************************************/
-
-/* ISP setting*/
-0xFF, 0xA0, /*Page mode */
-0x10, 0x80, /* BLC: ABLC db*/
-0x60, 0x73, /* CDC: Dark CDC ON */
-0x61, 0x1F, /* Six CDC_Edge En, Slash EN*/
-0x69, 0x0C, /* Slash direction Line threshold*/
-0x6A, 0x60, /* Slash direction Pixel threshold*/
-0xC2, 0x04, /* NSF: directional smoothing*/
-0xD0, 0x51, /* DEM: pattern detection*/
-0xFF, 0xA1, /*Page mode */
-0x30, 0x01, /* EDE: Luminane adaptation on*/
-0x32, 0x50, /* EDE: Adaptation slope */
-0x34, 0x00, /* EDE: x1 point */
-0x35, 0x0B, /* EDE: x1 point */
-0x36, 0x01, /* EDE: x2 point */
-0x37, 0x80, /* EDE: x2 point */
-0x3A, 0x00, /* EDE: Adaptation left margin*/
-0x3B, 0x30, /* EDE: Adaptation right margin*/
-0x3C, 0x08, /* EDE: rgb edge threshol*/
-
-/* Adaptive Setting*/
-0xFF, 0x85, /*Page mode */
-/* LSC*/
-0x0F, 0x43, /* LVLSC lux level threshold*/
-0x10, 0x43, /* LSLSC Light source , threshold lux*/
-
-/* BGT*/
-0x17, 0x30, /* BGT lux level threshold*/
-0x26, 0x20, /* MinVal */
-0x3c, 0x00, /* MaxVal */
-
-/* CNT*/
-0x18, 0x43, /* CNT lux level threshold*/
-0x27, 0x00, /* MinVal */
-0x3d, 0x00, /* MaxVal */
-
-/* NSF */
-0x12, 0xA5, /* NSF lux level threshold */
-0x22, 0x38, /* u8MinVal_NSF1*/
-0x23, 0x70, /* u8MinVal_NSF2*/
-0xFF, 0x86, /*Page mode */
-0x12, 0x00, /* u8MinVal_NSF3*/
-0xFF, 0x85, /*Page mode */
-0x38, 0x12, /* u8MaxVal_NSF1*/
-0x39, 0x30, /* u8MaxVal_NSF2*/
-0xFF, 0x86, /*Page mode */
-0x13, 0x08, /* u8MaxVal_NSF3*/
-
-/* GDC*/
-0xFF, 0x85, /*Page mode */
-0x15, 0xF4, /* GDC lux level threshold */
-0x2D, 0x20, /* u8MinVal_GDC1*/
-0x2E, 0x30, /* u8MinVal_GDC2*/
-0x43, 0x40, /* u8MaxVal_GDC1*/
-0x44, 0x80, /* u8MaxVal_GDC2*/
-
-/* ISP Edge*/
-0x04, 0xFB, /* EnEDE*/
-0x14, 0x54, /* u8ThrLevel_EDE*/
-0x28, 0x00, /* u8MinVal_EDE_CP*/
-0x29, 0x03, /* u8MinVal_EDE1*/
-0x2A, 0x20, /* u8MinVal_EDE2*/
-0x2B, 0x00, /* u8MinVal_EDE_OFS*/
-0x2C, 0x22, /* u8MinVal_SG*/
-0x3E, 0x00, /* u8MaxVal_EDE_CP*/
-0x3F, 0x09, /* u8MaxVal_EDE1*/
-0x40, 0x22, /* u8MaxVal_EDE2*/
-0x41, 0x02, /* u8MaxVal_EDE_OFS*/
-0x42, 0x33, /* u8MaxVal_SG*/
-
-/* Gamma Adaptive*/
-
-0x16, 0xA0, /* Gamma Threshold*/
-0x47, 0x00, /* Min_Gamma_0*/
-0x48, 0x03, /* Min_Gamma_1*/
-0x49, 0x10, /* Min_Gamma_2*/
-0x4A, 0x25, /* Min_Gamma_3*/
-0x4B, 0x3B, /* Min_Gamma_4*/
-0x4C, 0x4F, /* Min_Gamma_5*/
-0x4D, 0x6D, /* Min_Gamma_6*/
-0x4E, 0x86, /* Min_Gamma_7*/
-0x4F, 0x9B, /* Min_Gamma_8*/
-0x50, 0xAD, /* Min_Gamma_9*/
-0x51, 0xC2, /* Min_Gamma_10*/
-0x52, 0xD3, /* Min_Gamma_11*/
-0x53, 0xE1, /* Min_Gamma_12*/
-0x54, 0xE9, /* Min_Gamma_13*/
-0x55, 0xF2, /* Min_Gamma_14*/
-0x56, 0xFA, /* Min_Gamma_15*/
-0x57, 0xFF, /* Min_Gamma_16*/
-0x58, 0x00, /* Max_Gamma_0 */
-0x59, 0x06, /* Max_Gamma_1 */
-0x5a, 0x14, /* Max_Gamma_2 */
-0x5b, 0x30, /* Max_Gamma_3 */
-0x5c, 0x4A, /* Max_Gamma_4 */
-0x5d, 0x5D, /* Max_Gamma_5 */
-0x5e, 0x75, /* Max_Gamma_6 */
-0x5f, 0x89, /* Max_Gamma_7 */
-0x60, 0x9A, /* Max_Gamma_8 */
-0x61, 0xA7, /* Max_Gamma_9 */
-0x62, 0xBC, /* Max_Gamma_10 */
-0x63, 0xD0, /* Max_Gamma_11 */
-0x64, 0xE0, /* Max_Gamma_12 */
-0x65, 0xE7, /* Max_Gamma_13 */
-0x66, 0xEE, /* Max_Gamma_14 */
-0x67, 0xF7, /* Max_Gamma_15 */
-0x68, 0xFF, /* Max_Gamma_16 */
-
-/* Initial edge, noise filter setting*/
-0xFF, 0xA0, /*Page mode */
-0xC0, 0x12, /*NSFTh1_Addr*/
-0xC1, 0x30, /*NSFTh2_Addr*/
-0xC2, 0x08, /*NSFTh3_Addr*/
-0xFF, 0xA1, /*Page mode */
-0x30, 0x01, /*EDEOption_Addr*/
-0x31, 0x33, /*EDESlopeGain_Addr*/
-0x32, 0x50, /*EDELuAdpCtrl_Addr*/
-0x33, 0x00, /*EDEPreCoringPt_Addr*/
-0x34, 0x00, /*EDETransFuncXp1_Addr1*/
-0x35, 0x0B, /*EDETransFuncXp1_Addr0*/
-0x36, 0x01, /*EDETransFuncXp2_Addr1*/
-0x37, 0x80, /*EDETransFuncXp2_Addr0*/
-0x38, 0x09, /*EDETransFuncSl1_Addr*/
-0x39, 0x22, /*EDETransFuncSl2_Addr*/
-0x3A, 0x00, /*EDELuAdpLOffset_Addr*/
-0x3B, 0x30, /*EDELuAdpROffset_Addr*/
-0x3C, 0x08, /*EDERBThrd_Addr*/
-0x3D, 0x02, /*EDESmallOffset_Addr*/
-
-
-/* CCM Saturation Level*/
-0xFF, 0x85, /*Page mode */
-0x1A, 0x64, /* SUP Threshold */
-0x30, 0x40, /* MinSUP */
-
-0xFF, 0xA0, /*Page mode */
-/* Lens Shading*/
-0x43, 0x80, /* RH7 rrhrhh*/
-0x44, 0x80, /* RV*/
-0x45, 0x80, /* RH */
-0x46, 0x80, /* RV*/
-0x47, 0x80, /* GH*/
-0x48, 0x80, /* GV*/
-0x49, 0x80, /* GH*/
-0x4A, 0x80, /* GV */
-0x4B, 0x80, /* BH*/
-0x4C, 0x80, /* BV*/
-0x4D, 0x80, /* BH*/
-0x4E, 0x80, /* BV */
-0x52, 0x90, /* GGain*/
-0x53, 0x20, /* GGain*/
-0x54, 0x00, /* GGain*/
-
-/*Max Shading*/
-0xFF, 0x85, /*Page mode */
-0x32, 0xC0,
-0x33, 0x30,
-0x34, 0x00,
-0x35, 0x90,
-0x36, 0x20,
-0x37, 0x00,
-
-/*Min Shading*/
-0x1c, 0xC0,
-0x1d, 0x30,
-0x1e, 0x00,
-0x1f, 0x90,
-0x20, 0x18,
-0x21, 0x00,
-
-/* LineLength */
-0xFF, 0x87, /*Page mode */
-0xDC, 0x05, /* by Yong In Han 091511*/
-0xDD, 0xB0, /* by Yong In Han 091511*/
-0xd5, 0x00, /* Flip*/
-/***************************************************/
-/* SensorCon */
-/***************************************************/
-0xFF, 0xD0, /*Page mode */
-0x20, 0x0E, /* ABLK_Rsrv_Addr*/
-0x20, 0x0D, /* ABLK_Rsrv_Addr*/
-
-/***************************************************/
-/* MIPI */
-/***************************************************/
-0xFF, 0xB0, /*Page mode */
-0x54, 0x02, /* MIPI PHY_HS_TX_CTRL*/
-0x38, 0x05, /* MIPI DPHY_CTRL_SET*/
-
-
-/* SXGA PR*/
-0xFF, 0x85, /*Page mode */
-0xB8, 0x0A, /* gPT_u8PR_Active_SXGA_WORD_COUNT_Addr0*/
-0xB9, 0x00, /* gPT_u8PR_Active_SXGA_WORD_COUNT_Addr1*/
-0xBC, 0x04, /* gPT_u8PR_Active_SXGA_DPHY_CLK_TIME_Addr3*/
-0xFF, 0x87, /*Page mode */
-0x0C, 0x00, /* start Y*/
-0x0D, 0x20, /* start Y */
-0x10, 0x03, /* end Y*/
-0x11, 0xE0, /* end Y */
-
-/* Recoding */
-0xFF, 0x86, /*Page mode */
-0x38, 0x05, /* gPT_u8PR_Active_720P_WORD_COUNT_Addr0*/
-0x39, 0x00, /* gPT_u8PR_Active_720P_WORD_COUNT_Addr1*/
-0x3C, 0x04, /* gPT_u8PR_Active_720P_DPHY_CLK_TIME_Addr3*/
-
-0xFF, 0x87,
-0x23, 0x02, /*gPR_Active_720P_u8SensorCtrl_Addr */
-0x25, 0x01, /*gPR_Active_720P_u8PLL_P_Addr */
-0x26, 0x0F, /*gPR_Active_720P_u8PLL_M_Addr */
-0x27, 0x00, /*gPR_Active_720P_u8PLL_S_Addr */
-0x28, 0x00, /*gPR_Active_720P_u8PLL_Ctrl_Addr */
-0x29, 0x01, /*gPR_Active_720P_u8src_clk_sel_Addr */
-0x2A, 0x00, /*gPR_Active_720P_u8output_pad_status_Addr */
-0x2B, 0x3F, /*gPR_Active_720P_u8ablk_ctrl_10_Addr */
-0x2C, 0xFF, /*gPR_Active_720P_u8BayerFunc_Addr */
-0x2D, 0xFF, /*gPR_Active_720P_u8RgbYcFunc_Addr */
-0x2E, 0x00, /*gPR_Active_720P_u8ISPMode_Addr */
-0x2F, 0x02, /*gPR_Active_720P_u8SCLCtrl_Addr */
-0x30, 0x01, /*gPR_Active_720P_u8SCLHorScale_Addr0 */
-0x31, 0xFF, /*gPR_Active_720P_u8SCLHorScale_Addr1 */
-0x32, 0x03, /*gPR_Active_720P_u8SCLVerScale_Addr0 */
-0x33, 0xFF, /*gPR_Active_720P_u8SCLVerScale_Addr1 */
-0x34, 0x00, /*gPR_Active_720P_u8SCLCropStartX_Addr0 */
-0x35, 0x00, /*gPR_Active_720P_u8SCLCropStartX_Addr1 */
-0x36, 0x00, /*gPR_Active_720P_u8SCLCropStartY_Addr0 */
-0x37, 0x10, /*gPR_Active_720P_u8SCLCropStartY_Addr1 */
-0x38, 0x02, /*gPR_Active_720P_u8SCLCropEndX_Addr0 */
-0x39, 0x80, /*gPR_Active_720P_u8SCLCropEndX_Addr1 */
-0x3A, 0x01, /*gPR_Active_720P_u8SCLCropEndY_Addr0 */
-0x3B, 0xF0, /*gPR_Active_720P_u8SCLCropEndY_Addr1 */
-0x3C, 0x01, /*gPR_Active_720P_u8OutForm_Addr */
-0x3D, 0x0C, /*gPR_Active_720P_u8OutCtrl_Addr */
-0x3E, 0x04, /*gPR_Active_720P_u8AEWinStartX_Addr */
-0x3F, 0x04, /*gPR_Active_720P_u8AEWinStartY_Addr */
-0x40, 0x66, /*gPR_Active_720P_u8MergedWinWidth_Addr */
-0x41, 0x5E, /*gPR_Active_720P_u8MergedWinHeight_Addr */
-0x42, 0x04, /*gPR_Active_720P_u8AEHistWinAx_Addr */
-0x43, 0x04, /*gPR_Active_720P_u8AEHistWinAy_Addr */
-0x44, 0x98, /*gPR_Active_720P_u8AEHistWinBx_Addr */
-0x45, 0x78, /*gPR_Active_720P_u8AEHistWinBy_Addr */
-0x46, 0x22, /*gPR_Active_720P_u8AWBTrim_Addr */
-0x47, 0x28, /*gPR_Active_720P_u8AWBCTWinAx_Addr */
-0x48, 0x20, /*gPR_Active_720P_u8AWBCTWinAy_Addr */
-0x49, 0x78, /*gPR_Active_720P_u8AWBCTWinBx_Addr */
-0x4A, 0x60, /*gPR_Active_720P_u8AWBCTWinBy_Addr */
-0x4B, 0x03, /*gPR_Active_720P_u16AFCFrameLength_0 */
-0x4C, 0x00, /*gPR_Active_720P_u16AFCFrameLength_1 */
-
-/* VGA PR */
-0xFF, 0x86, /*Page mode */
-0x2F, 0x05, /* gPT_u8PR_Active_VGA_WORD_COUNT_Addr0*/
-0x30, 0x00, /* gPT_u8PR_Active_VGA_WORD_COUNT_Addr1*/
-0x33, 0x04, /* gPT_u8PR_Active_VGA_DPHY_CLK_TIME_Addr3*/
-
-0xFF, 0x87, /*Page mode */
-0x4D, 0x00, /*gPR_Active_VGA_u8SensorCtrl_Addr*/
-0x4E, 0x72, /*gPR_Active_VGA_u8SensorMode_Addr*/
-0x4F, 0x01, /*gPR_Active_VGA_u8PLL_P_Addr*/
-0x50, 0x0F, /*gPR_Active_VGA_u8PLL_M_Addr*/
-0x51, 0x00, /*gPR_Active_VGA_u8PLL_S_Addr*/
-0x52, 0x00, /*gPR_Active_VGA_u8PLL_Ctrl_Addr*/
-0x53, 0x01, /*gPR_Active_VGA_u8src_clk_sel_Addr*/
-0x54, 0x00, /*gPR_Active_VGA_u8output_pad_status_Addr*/
-0x55, 0x3F, /*gPR_Active_VGA_u8ablk_ctrl_10_Addr*/
-0x56, 0xFF, /*gPR_Active_VGA_u8BayerFunc_Addr*/
-0x57, 0xFF, /*gPR_Active_VGA_u8RgbYcFunc_Addr*/
-0x58, 0x00, /*gPR_Active_VGA_u8ISPMode_Addr*/
-0x59, 0x02, /*gPR_Active_VGA_u8SCLCtrl_Addr*/
-0x5A, 0x01, /*gPR_Active_VGA_u8SCLHorScale_Addr0*/
-0x5B, 0xFF, /*gPR_Active_VGA_u8SCLHorScale_Addr1*/
-0x5C, 0x01, /*gPR_Active_VGA_u8SCLVerScale_Addr0*/
-0x5D, 0xFF, /*gPR_Active_VGA_u8SCLVerScale_Addr1*/
-0x5E, 0x00, /*gPR_Active_VGA_u8SCLCropStartX_Addr0*/
-0x5F, 0x00, /*gPR_Active_VGA_u8SCLCropStartX_Addr1*/
-0x60, 0x00, /*gPR_Active_VGA_u8SCLCropStartY_Addr0*/
-0x61, 0x20, /*gPR_Active_VGA_u8SCLCropStartY_Addr1*/
-0x62, 0x05, /*gPR_Active_VGA_u8SCLCropEndX_Addr0*/
-0x63, 0x00, /*gPR_Active_VGA_u8SCLCropEndX_Addr1*/
-0x64, 0x03, /*gPR_Active_VGA_u8SCLCropEndY_Addr0*/
-0x65, 0xE0, /*gPR_Active_VGA_u8SCLCropEndY_Addr1*/
-
-0xFF, 0xd1, /*Page mode */
-0x07, 0x00, /* power off mask clear*/
-0x0b, 0x00, /* clock off mask clear*/
-0xFF, 0xC0, /*Page mode */
-0x10, 0x41,
-
-/* Self-Cam END of Initial */
-};
-
-/* Set-data based on SKT VT standard ,when using 3G network*/
-/* VGA 8fps
-*/
-static const u8 db8131m_vt_common_1[] = {
-/***************************************************/
-/* Device : DB8131M fixed 8Fps */
-/* MIPI Interface for Noncontious Clock */
-/***************************************************/
-/***************************************************/
-/* Command */
-/***************************************************/
-0xFF, 0xC0, /*Page mode*/
-0x10, 0x01,
-};
-/*wait 150*/
-
-static const u8 db8131m_vt_common_2[] = {
-/***************************************************/
-/* Format */
-/***************************************************/
-0xFF, 0xA1, /*Page mode */
-0x70, 0x01,
-0x71, 0x0D,
-
-/***************************************************/
-/* SensorCon */
-/***************************************************/
-0xFF, 0xD0, /*Page mode */
-0x0F, 0x0B, /*ABLK_Ctrl_1_Addr*/
-0x13, 0x00, /*Gain_Addr*/
-0x15, 0x01, /*IVREFT_REFB_Addr*/
-0x20, 0x0E, /*ABLK_Rsrv_Addr*/
-0x23, 0x01, /*IVREFT2_REFB2_Addr*/
-0x24, 0x01, /*IPPG_IVCM2_Addr*/
-0x39, 0x70, /*RiseSx_CDS_1_L_Addr*/
-0x51, 0x19, /*Fallcreset_1_L_Addr*/
-0x83, 0x2D, /*RiseTran_Sig_Even_L_Addr*/
-0x85, 0x2F, /*FallTran_Sig_Even_L_Addr*/
-0x87, 0x2D, /*RiseTran_Sig_Odd_L_Addr*/
-0x89, 0x2F, /*FallTran_Sig_Odd_L_Addr*/
-0x8B, 0x27, /*RiseCNT_EN_1_L_Addr*/
-0x8D, 0x6c, /*FallCNT_EN_1_L_Addr*/
-0xD7, 0x80, /*ABLK_Ctrl_12_Addr*/
-0xDB, 0xA2, /*FallScanTx15_1_L_Addr*/
-0xED, 0x01, /*PLL_P_Addr*/
-0xEE, 0x0F, /*PLL_M_Addr*/
-0xEF, 0x00, /*PLL_S_Addr*/
-0xF9, 0x00, /*ABLK_Ctrl_8*/
-0xF8, 0x00, /*Vblank Sleep Mode enable*/
-0xFB, 0x90, /*PostADC_Gain_Addr*/
-
-/***************************************************/
-/* Analog ADF */
-/***************************************************/
-0xFF, 0x85, /*Page mode */
-0x89, 0x93, /*gAdf_u8APThreshold*/
-0x8A, 0x0C, /*u8APClmpThreshold*/
-0x8C, 0x07, /*gAdf_u8APMinVal_ThrClampH*/
-0x8D, 0x40, /*gAdf_u8APMinVal_ThrClampL*/
-0x8E, 0x03, /*gAdf_u8APMinVal_DOFFSET*/
-0x8F, 0x14, /*gAdf_u8APMinVal_AMP2_1_SDM*/
-0x91, 0x1A, /*gAdf_u8APMinVal_AMP4_3_SDM*/
-0x92, 0x0F, /*gAdf_u8APMinVal_FallIntTx15*/
-0x93, 0x47, /*gAdf_u8APMinVal_CDSxRange_CtrlPre*/
-0x95, 0x18, /*gAdf_u8APMinVal_REFB_IVCM*/
-0x96, 0x38, /*gAdf_u8APMinVal_ref_os_PB*/
-0x97, 0x0D, /*gAdf_u8APMinVal_NTx_Range*/
-0x98, 0x0D, /*gAdf_u8APMaxVal_Clmp_rst*/
-0x99, 0x06, /*gAdf_u8APMaxVal_ThrClampH*/
-0x9A, 0x9F, /*gAdf_u8APMaxVal_ThrClampL*/
-0x9B, 0x02, /*gAdf_u8APMaxVal_DOFFSET*/
-0x9C, 0x1C, /*gAdf_u8APMaxVal_AMP2_1_SDM*/
-0x9E, 0x11, /*gAdf_u8APMaxVal_AMP4_3_SDM*/
-0x9F, 0x5D, /*gAdf_u8APMaxVal_FallIntTx15*/
-0xA0, 0x78, /*gAdf_u8APMaxVal_CDSxRange_CtrlPre*/
-0xA2, 0x18, /*gAdf_u8APMaxVal_REFB_IVCM*/
-0xA3, 0x40, /*gAdf_u8APMaxVal_ref_os_PB*/
-0xA4, 0x0B, /*gAdf_u8APMaxVal_NTx_Range*/
-
-0xFF, 0x86, /*Page mode */
-0x15, 0x00, /*gPT_u8Adf_APThrHys*/
-0x16, 0xF7, /*gPT_u8Adf_APFallIntTxThrLevel*/
-0x17, 0x13, /*gPT_u8Adf_APMinVal_BP2_1_SDM*/
-0x18, 0x13, /*gPT_u8Adf_APMidVal_BP2_1_SDM*/
-0x19, 0x1C, /*gPT_u8Adf_APMaxVal_BP2_1_SDM*/
-0x1A, 0x06, /*gPT_u8Adf_APMidVal_ThrClampH*/
-0x1B, 0xF0, /*gPT_u8Adf_APMidVal_ThrClampL*/
-0x1C, 0x01, /*gPT_u8Adf_APMidVal_DOFFSET*/
-0x1D, 0x14, /*gPT_u8Adf_APMidVal_AMP2_1_SDM*/
-0x1F, 0x31, /*gPT_u8Adf_APMidVal_AMP4_3_SDM*/
-0x20, 0x68, /*gPT_u8Adf_APMidVal_CDSxRange_CtrlPre*/
-0x22, 0x18, /*gPT_u8Adf_APMidVal_REFB_IVCM*/
-0x23, 0x38, /*gPT_u8Adf_APMidVal_ref_os_PB*/
-0x24, 0x0F, /*gPT_u8Adf_APMidVal_NTx_Range*/
-0x25, 0x77, /*gPT_u8Adf_APVal_EnSiSoSht_EnSm*/
-
-0xFF, 0x87, /*Page mode */
-0xEA, 0x41,
-
-0xFF, 0xD0, /*Page mode */
-0x20, 0x0D, /*ABLK_Rsrv_Addr*/
-
-0xFF, 0x83, /*Page mode */
-0x63, 0x28, /*Again Table*/
-0x64, 0x10, /*Again Table*/
-0x65, 0xA8, /*Again Table*/
-0x66, 0x50, /*Again Table*/
-0x67, 0x28, /*Again Table*/
-0x68, 0x14, /*Again Table*/
-
-
-/***************************************************/
-/* AE */
-/***************************************************/
-0xFF, 0x82, /*Page mode */
-0x91, 0x02, /* AeMode*/
-0x95, 0x88, /* AE weight*/
-0x96, 0x88,
-0x97, 0xF8,
-0x98, 0x8F,
-0x99, 0xF8,
-0x9A, 0x8F,
-0x9B, 0x88,
-0x9C, 0x88,
-0xA9, 0x40, /* OTarget*/
-0xAA, 0x40, /* ITarget*/
-0x9D, 0x66, /* AE Speed*/
-0x9F, 0x06, /* AE HoldBnd*/
-0xA8, 0x40, /* STarget*/
-0xB9, 0x04, /* RGain*/
-0xBB, 0x04, /* GGain*/
-0xBD, 0x04, /* BGain*/
-0xC5, 0x02, /* PeakMvStep*/
-0xC6, 0x38, /* PeakTgMin*/
-0xC7, 0x24, /* PeakRatioTh1*/
-0xC8, 0x10, /* PeakRatioTh0*/
-0xC9, 0x05, /* PeakLuTh*/
-0xD5, 0x60, /* LuxGainTB_2*/
-0xFF, 0x83, /*Page mode */
-0x2F, 0x04, /* TimeNum0*/
-0x30, 0x05, /* TimeNum1*/
-0x4F, 0x05, /* FrameOffset*/
-0xFF, 0x82, /*Page mode */
-0xA1, 0x0A, /* AnalogGainMax*/
-0xF3, 0x09, /* SCLK*/
-0xF4, 0x60,
-0xF9, 0x00, /* GainMax*/
-0xFA, 0xC8, /* GainMax*/
-0xFB, 0x62, /* Gain3Lut*/
-0xFC, 0x39, /* Gain2Lut*/
-0xFD, 0x28, /* Gain1Lut*/
-0xFE, 0x12, /* GainMin*/
-0xFF, 0x83, /*Page mode */
-0x03, 0x0F, /* TimeMax60Hz : 8fps*/
-0x04, 0x0A, /* Time3Lux60Hz : 12fps*/
-0x05, 0x04, /* Time2Lut60Hz : 24fps*/
-0x06, 0x04, /* Time1Lut60Hz : 24fps*/
-0xFF, 0x82, /*Page mode */
-0xD3, 0x12, /* LuxTBGainStep0 */
-0xD4, 0x36, /* LuxTBGainStep1 */
-0xD5, 0x60, /* LuxTBGainStep2*/
-0xD6, 0x01, /* LuxTBTimeStep0H*/
-0xD7, 0x00, /* LuxTBTimeStep0L*/
-0xD8, 0x01, /* LuxTBTimeStep1H*/
-0xD9, 0xC0, /* LuxTBTimeStep1L*/
-0xDA, 0x06, /* LuxTBTimeStep2H*/
-0xDB, 0x00, /* LuxTBTimeStep2L*/
-0xFF, 0x83, /*Page mode */
-0x0B, 0x08,
-0x0C, 0x0C, /* Frame Rate*/
-0xFF, 0x82, /*Page mode */
-0x92, 0x5D,
-
-/***************************************************/
-/* AWB */
-/***************************************************/
-0xFF, 0x83, /*Page mode */
-0x79, 0x83, /* AWB SKIN ON*/
-0x86, 0x07, /* gAWB_u16MinGrayCnt_rw_0*/
-0x87, 0x00, /* gAWB_u16MinGrayCnt_rw_1*/
-0x90, 0x05, /* gAWB_u16FinalRGain_ro_0*/
-0x94, 0x05, /* gAWB_u16FinalBGain_ro_0*/
-0x98, 0xD4, /* SkinWinCntTh*/
-0xA2, 0x28, /* SkinYTh*/
-0xA3, 0x00, /* SkinHoldHitCnt*/
-0xA4, 0x0F, /* SkinHoldHitCnt*/
-0xAD, 0x65, /* u8SkinTop2*/
-0xAE, 0x80, /* gAwb_u8SkinTop2LS1Ratio_rw 5zone */
-0xAF, 0x20, /* gAwb_u8SkinTop2LS2Ratio_rw 6zone */
-0xB4, 0x10, /* u8SkinTop2LSHys_rw */
-0xB5, 0x54, /* gAwb_u8SkinLTx */
-0xB6, 0xbd, /* gAwb_u8SkinLTy */
-0xB7, 0x74, /* gAwb_u8SkinRBx */
-0xB8, 0x9d, /* gAwb_u8SkinRBy */
-0xBA, 0x4F, /* UniCThrY_rw */
-0xBF, 0x0C, /* u16UniCGrayCntThr_rw_0 */
-0xC0, 0x80, /* u16UniCGrayCntThr_rw_1 */
-0xFF, 0x87, /*Page mode */
-0xC9, 0x22, /* gUR_u8AWBTrim_Addr */
-0xFF, 0x84, /*Page mode */
-0x49, 0x02, /* Threshold_indoor */
-0x4A, 0x00,
-0x4B, 0x03, /* Threshold_outdoor */
-0x4C, 0x80,
-0xFF, 0x83, /*Page mode */
-0xCB, 0x03, /* R MinGain [Default 0X20] A Spec Pass */
-0xCC, 0xC0, /* R MinGain [Default 0X20] A Spec Pass */
-0x82, 0x00, /* lockratio*/
-0xFF, 0x84, /*Page mode */
-0x3D, 0x00, /* gAwb_u32LuxConst1_rw_0*/
-0x3E, 0x00, /* gAwb_u32LuxConst1_rw_1*/
-0x3F, 0x06, /* gAwb_u32LuxConst1_rw_2*/
-0x40, 0x20, /* gAwb_u32LuxConst1_rw_3*/
-0x41, 0x07, /* gAwb_u32LuxConst2_rw_0*/
-0x42, 0x53, /* gAwb_u32LuxConst2_rw_1*/
-0x43, 0x00, /* gAwb_u32LuxConst2_rw_2*/
-0x44, 0x00, /* gAwb_u32LuxConst2_rw_3*/
-0x55, 0x03, /* gAwb_u8Weight_Gen_rw_0 */
-0x56, 0x10, /* gAwb_u8Weight_Gen_rw_1 */
-0x57, 0x14, /* gAwb_u8Weight_Gen_rw_2 */
-0x58, 0x07, /* gAwb_u8Weight_Gen_rw_3 */
-0x59, 0x04, /* gAwb_u8Weight_Gen_rw_4 */
-0x5A, 0x03, /* gAwb_u8Weight_Gen_rw_5 */
-0x5B, 0x03, /* gAwb_u8Weight_Gen_rw_6 */
-0x5C, 0x15, /* gAwb_u8Weight_Gen_rw_7 */
-0x5D, 0x01, /* gAwb_u8Weight_Ind_rw_0 */
-0x5E, 0x0F, /* gAwb_u8Weight_Ind_rw_1 */
-0x5F, 0x07, /* gAwb_u8Weight_Ind_rw_2 */
-0x60, 0x14, /* gAwb_u8Weight_Ind_rw_3 */
-0x61, 0x14, /* gAwb_u8Weight_Ind_rw_4 */
-0x62, 0x12, /* gAwb_u8Weight_Ind_rw_5 */
-0x63, 0x11, /* gAwb_u8Weight_Ind_rw_6 */
-0x64, 0x14, /* gAwb_u8Weight_Ind_rw_7 */
-0x65, 0x03, /* gAwb_u8Weight_Outd_rw_0*/
-0x66, 0x05, /* gAwb_u8Weight_Outd_rw_1*/
-0x67, 0x15, /* gAwb_u8Weight_Outd_rw_2*/
-0x68, 0x04, /* gAwb_u8Weight_Outd_rw_3*/
-0x69, 0x01, /* gAwb_u8Weight_Outd_rw_4*/
-0x6A, 0x02, /* gAwb_u8Weight_Outd_rw_5*/
-0x6B, 0x03, /* gAwb_u8Weight_Outd_rw_6*/
-0x6C, 0x15, /* gAwb_u8Weight_Outd_rw_6*/
-0xFF, 0x85, /*Page mode */
-0xE2, 0x0C, /* gPT_u8Awb_UnicolorZone_rw */
-0xFF, 0x83, /*Page mode */
-0xCD, 0x06, /*Max Rgain*/
-0xCE, 0x80,
-0xD1, 0x06, /*Max BGain*/
-0xd2, 0x80,
-
-/***************************************************/
-/* AWB STE */
-/***************************************************/
-0xFF, 0xA1, /*Page mode */
-/* Flash */
-0xA0, 0x5c, /*AWBZone0LTx*/
-0xA1, 0x7a, /*AWBZone0LTy*/
-0xA2, 0x69, /*AWBZone0RBx*/
-0xA3, 0x6f, /*AWBZone0RBy*/
-/* cloudy */
-0xA4, 0x73, /*AWBZone1LTx*/
-0xA5, 0x55, /*AWBZone1LTy*/
-0xA6, 0x8C, /*AWBZone1RBx*/
-0xA7, 0x30, /*AWBZone1RBy */
-/* Daylight */
-0xA8, 0x69, /*AWBZone2LTx*/
-0xA9, 0x69, /*AWBZone2LTy*/
-0xAA, 0x83, /*AWBZone2RBx*/
-0xAB, 0x52, /*AWBZone2RBy */
-/* Fluorescent */
-0xAC, 0x57, /*AWBZone3LTx*/
-0xAD, 0x6e, /*AWBZone3LTy*/
-0xAE, 0x6f, /*AWBZone3RBx*/
-0xAF, 0x59, /*AWBZone3RBy*/
-
-/*CWF */
-0xB0, 0x50, /*AWBZone4LTx*/
-0xB1, 0x74, /*AWBZone4LTy*/
-0xB2, 0x65, /*AWBZone4RBx*/
-0xB3, 0x5d, /*AWBZone4RBy*/
-/*TL84 */
-0xB4, 0x53, /*AWBZone5LTx*/
-0xB5, 0x7f, /*AWBZone5LTy*/
-0xB6, 0x62, /*AWBZone5RBx*/
-0xB7, 0x75, /*AWBZone5RBy */
-/*A */
-0xB8, 0x4a, /*AWBZone6LTx*/
-0xB9, 0x87, /*AWBZone6LTy*/
-0xBA, 0x59, /*AWBZone6RBx*/
-0xBB, 0x78, /*AWBZone6RBy*/
-/*Horizon */
-0xBC, 0x41, /*AWBZone7LTx*/
-0xBD, 0x91, /*AWBZone7LTy*/
-0xBE, 0x4b, /*AWBZone7RBx*/
-0xBF, 0x89, /*AWBZone7RBy*/
-/*Skin */
-0xC0, 0x5b, /*AWBZone8LTx*/
-0xC1, 0x85, /*AWBZone8LTy*/
-0xC2, 0x60, /*AWBZone8RBx*/
-0xC3, 0x7b, /*AWBZone8RBy*/
-
-/***************************************************/
-/* UR */
-/***************************************************/
-0xFF, 0x85, /*Page mode */
-0x06, 0x05,
-0xFF, 0x86, /*Page mode */
-0x14, 0x1E, /* CCM sum 1*/
-0xFF, 0x85, /*Page mode */
-0x86, 0x42, /* 42 saturation level*/
-0x07, 0x00, /* sup hysteresis*/
-
-/*DAY light */
-0xFF, 0x83, /*Page mode */
-0xEA, 0x00, /*gAwb_s16AdapCCMTbl_0*/
-0xEB, 0x53, /*gAwb_s16AdapCCMTbl_1*/
-0xEC, 0xFF, /*gAwb_s16AdapCCMTbl_2*/
-0xED, 0xE1, /*gAwb_s16AdapCCMTbl_3*/
-0xEE, 0x00, /*gAwb_s16AdapCCMTbl_4*/
-0xEF, 0x05, /*gAwb_s16AdapCCMTbl_5*/
-0xF0, 0xFF, /*gAwb_s16AdapCCMTbl_6*/
-0xF1, 0xF3, /*gAwb_s16AdapCCMTbl_7*/
-0xF2, 0x00, /*gAwb_s16AdapCCMTbl_8*/
-0xF3, 0x4B, /*gAwb_s16AdapCCMTbl_9*/
-0xF4, 0xFF, /*gAwb_s16AdapCCMTbl_10*/
-0xF5, 0xFA, /*gAwb_s16AdapCCMTbl_11*/
-0xF6, 0xFF, /*gAwb_s16AdapCCMTbl_12*/
-0xF7, 0xFa, /*gAwb_s16AdapCCMTbl_13*/
-0xF8, 0xFF, /*gAwb_s16AdapCCMTbl_14*/
-0xF9, 0xC3, /*gAwb_s16AdapCCMTbl_15*/
-0xFA, 0x00, /*gAwb_s16AdapCCMTbl_16*/
-0xFB, 0x80, /*gAwb_s16AdapCCMTbl_17*/
-
-/*CWF lgiht */
-0xFF, 0x83, /*Page mode */
-0xFC, 0x00, /* gAwb_s16AdapCCMTbl_18 */
-0xFD, 0x68, /* gAwb_s16AdapCCMTbl_19 */
-0xFF, 0x85, /*Page mode */
-0xE0, 0xFF, /* gAwb_s16AdapCCMTbl_20 */
-0xE1, 0xde, /* gAwb_s16AdapCCMTbl_21 */
-0xFF, 0x84, /*Page mode */
-0x00, 0xff, /* gAwb_s16AdapCCMTbl_22 */
-0x01, 0xfa, /* gAwb_s16AdapCCMTbl_23 */
-0x02, 0xFF, /* gAwb_s16AdapCCMTbl_24 */
-0x03, 0xf0, /* gAwb_s16AdapCCMTbl_25 */
-0x04, 0x00, /* gAwb_s16AdapCCMTbl_26 */
-0x05, 0x52, /* gAwb_s16AdapCCMTbl_27 */
-0x06, 0xFF, /* gAwb_s16AdapCCMTbl_28 */
-0x07, 0xFa, /* gAwb_s16AdapCCMTbl_29 */
-0x08, 0x00, /* gAwb_s16AdapCCMTbl_30 */
-0x09, 0x00, /* gAwb_s16AdapCCMTbl_31 */
-0x0A, 0xFF, /* gAwb_s16AdapCCMTbl_32 */
-0x0B, 0xdb, /* gAwb_s16AdapCCMTbl_33 */
-0x0C, 0x00, /* gAwb_s16AdapCCMTbl_34 */
-0x0D, 0x68, /* gAwb_s16AdapCCMTbl_35 */
-
-/*A light */
-
-0x0E, 0x00, /* gAwb_s16AdapCCMTbl_36 */
-0x0F, 0x6d, /* gAwb_s16AdapCCMTbl_37 */
-0x10, 0xFF, /* gAwb_s16AdapCCMTbl_38 */
-0x11, 0xd5, /* gAwb_s16AdapCCMTbl_39 */
-0x12, 0xff, /* gAwb_s16AdapCCMTbl_40 */
-0x13, 0xfe, /* gAwb_s16AdapCCMTbl_41 */
-0x14, 0xFF, /* gAwb_s16AdapCCMTbl_42 */
-0x15, 0xf4, /* gAwb_s16AdapCCMTbl_43 */
-0x16, 0x00, /* gAwb_s16AdapCCMTbl_44 */
-0x17, 0x5a, /* gAwb_s16AdapCCMTbl_45 */
-0x18, 0xff, /* gAwb_s16AdapCCMTbl_46 */
-0x19, 0xef, /* gAwb_s16AdapCCMTbl_47 */
-0x1A, 0xff, /* gAwb_s16AdapCCMTbl_48 */
-0x1B, 0xfa, /* gAwb_s16AdapCCMTbl_49 */
-0x1C, 0xFF, /* gAwb_s16AdapCCMTbl_50 */
-0x1D, 0xbe, /* gAwb_s16AdapCCMTbl_51 */
-0x1E, 0x00, /* gAwb_s16AdapCCMTbl_52 */
-0x1F, 0x86, /* gAwb_s16AdapCCMTbl_53 */
-
-
-/***************************************************/
-/* ADF */
-/***************************************************/
-
-/* ISP setting*/
-0xFF, 0xA0, /*Page mode */
-0x10, 0x80, /* BLC: ABLC db*/
-0x60, 0x73, /* CDC: Dark CDC ON */
-0x61, 0x1F, /* Six CDC_Edge En, Slash EN*/
-0x69, 0x0C, /* Slash direction Line threshold*/
-0x6A, 0x60, /* Slash direction Pixel threshold*/
-0xC2, 0x04, /* NSF: directional smoothing*/
-0xD0, 0x51, /* DEM: pattern detection*/
-0xFF, 0xA1, /*Page mode */
-0x30, 0x01, /* EDE: Luminane adaptation on*/
-0x32, 0x50, /* EDE: Adaptation slope */
-0x34, 0x00, /* EDE: x1 point */
-0x35, 0x0B, /* EDE: x1 point */
-0x36, 0x01, /* EDE: x2 point */
-0x37, 0x80, /* EDE: x2 point */
-0x3A, 0x00, /* EDE: Adaptation left margin*/
-0x3B, 0x30, /* EDE: Adaptation right margin*/
-0x3C, 0x08, /* EDE: rgb edge threshol*/
-
-/* Adaptive Setting*/
-0xFF, 0x85, /*Page mode */
-/* LSC*/
-0x0F, 0x43, /* LVLSC lux level threshold*/
-0x10, 0x43, /* LSLSC Light source , threshold lux*/
-
-/* BGT*/
-0x17, 0x30, /* BGT lux level threshold*/
-0x26, 0x20, /* MinVal */
-0x3c, 0x00, /* MaxVal */
-
-/* CNT*/
-0x18, 0x43, /* CNT lux level threshold*/
-0x27, 0x00, /* MinVal */
-0x3d, 0x00, /* MaxVal */
-
-/* NSF */
-0x12, 0xA5, /* NSF lux level threshold */
-0x22, 0x38, /* u8MinVal_NSF1*/
-0x23, 0x70, /* u8MinVal_NSF2*/
-0xFF, 0x86, /*Page mode */
-0x12, 0x00, /* u8MinVal_NSF3*/
-0xFF, 0x85, /*Page mode */
-0x38, 0x12, /* u8MaxVal_NSF1*/
-0x39, 0x30, /* u8MaxVal_NSF2*/
-0xFF, 0x86, /*Page mode */
-0x13, 0x08, /* u8MaxVal_NSF3*/
-
-/* GDC*/
-0xFF, 0x85, /*Page mode */
-0x15, 0xF4, /* GDC lux level threshold */
-0x2D, 0x20, /* u8MinVal_GDC1*/
-0x2E, 0x30, /* u8MinVal_GDC2*/
-0x43, 0x40, /* u8MaxVal_GDC1*/
-0x44, 0x80, /* u8MaxVal_GDC2*/
-
-/* ISP Edge*/
-0x04, 0xFB, /* EnEDE*/
-0x14, 0x54, /* u8ThrLevel_EDE*/
-0x28, 0x00, /* u8MinVal_EDE_CP*/
-0x29, 0x03, /* u8MinVal_EDE1*/
-0x2A, 0x20, /* u8MinVal_EDE2*/
-0x2B, 0x00, /* u8MinVal_EDE_OFS*/
-0x2C, 0x22, /* u8MinVal_SG*/
-0x3E, 0x00, /* u8MaxVal_EDE_CP*/
-0x3F, 0x09, /* u8MaxVal_EDE1*/
-0x40, 0x22, /* u8MaxVal_EDE2*/
-0x41, 0x02, /* u8MaxVal_EDE_OFS*/
-0x42, 0x33, /* u8MaxVal_SG*/
-
-/* Gamma Adaptive*/
-
-0x16, 0xA0, /* Gamma Threshold*/
-0x47, 0x00, /* Min_Gamma_0*/
-0x48, 0x03, /* Min_Gamma_1*/
-0x49, 0x10, /* Min_Gamma_2*/
-0x4A, 0x25, /* Min_Gamma_3*/
-0x4B, 0x3B, /* Min_Gamma_4*/
-0x4C, 0x4F, /* Min_Gamma_5*/
-0x4D, 0x6D, /* Min_Gamma_6*/
-0x4E, 0x86, /* Min_Gamma_7*/
-0x4F, 0x9B, /* Min_Gamma_8*/
-0x50, 0xAD, /* Min_Gamma_9*/
-0x51, 0xC2, /* Min_Gamma_10*/
-0x52, 0xD3, /* Min_Gamma_11*/
-0x53, 0xE1, /* Min_Gamma_12*/
-0x54, 0xE9, /* Min_Gamma_13*/
-0x55, 0xF2, /* Min_Gamma_14*/
-0x56, 0xFA, /* Min_Gamma_15*/
-0x57, 0xFF, /* Min_Gamma_16*/
-0x58, 0x00, /* Max_Gamma_0 */
-0x59, 0x06, /* Max_Gamma_1 */
-0x5a, 0x14, /* Max_Gamma_2 */
-0x5b, 0x30, /* Max_Gamma_3 */
-0x5c, 0x4A, /* Max_Gamma_4 */
-0x5d, 0x5D, /* Max_Gamma_5 */
-0x5e, 0x75, /* Max_Gamma_6 */
-0x5f, 0x89, /* Max_Gamma_7 */
-0x60, 0x9A, /* Max_Gamma_8 */
-0x61, 0xA7, /* Max_Gamma_9 */
-0x62, 0xBC, /* Max_Gamma_10 */
-0x63, 0xD0, /* Max_Gamma_11 */
-0x64, 0xE0, /* Max_Gamma_12 */
-0x65, 0xE7, /* Max_Gamma_13 */
-0x66, 0xEE, /* Max_Gamma_14 */
-0x67, 0xF7, /* Max_Gamma_15 */
-0x68, 0xFF, /* Max_Gamma_16 */
-
-/* Initial edge, noise filter setting*/
-0xFF, 0xA0, /*Page mode */
-0xC0, 0x12, /*NSFTh1_Addr*/
-0xC1, 0x30, /*NSFTh2_Addr*/
-0xC2, 0x08, /*NSFTh3_Addr*/
-0xFF, 0xA1, /*Page mode */
-0x30, 0x01, /*EDEOption_Addr*/
-0x31, 0x33, /*EDESlopeGain_Addr*/
-0x32, 0x50, /*EDELuAdpCtrl_Addr*/
-0x33, 0x00, /*EDEPreCoringPt_Addr*/
-0x34, 0x00, /*EDETransFuncXp1_Addr1*/
-0x35, 0x0B, /*EDETransFuncXp1_Addr0*/
-0x36, 0x01, /*EDETransFuncXp2_Addr1*/
-0x37, 0x80, /*EDETransFuncXp2_Addr0*/
-0x38, 0x09, /*EDETransFuncSl1_Addr*/
-0x39, 0x22, /*EDETransFuncSl2_Addr*/
-0x3A, 0x00, /*EDELuAdpLOffset_Addr*/
-0x3B, 0x30, /*EDELuAdpROffset_Addr*/
-0x3C, 0x08, /*EDERBThrd_Addr*/
-0x3D, 0x02, /*EDESmallOffset_Addr*/
-
-/* CCM Saturation Level*/
-0xFF, 0x85, /*Page mode */
-0x1A, 0x64, /* SUP Threshold */
-0x30, 0x40, /* MinSUP */
-
-0xFF, 0xA0, /*Page mode */
-/* Lens Shading*/
-0x43, 0x80, /* RH7 rrhrhh*/
-0x44, 0x80, /* RV*/
-0x45, 0x80, /* RH */
-0x46, 0x80, /* RV*/
-0x47, 0x80, /* GH*/
-0x48, 0x80, /* GV*/
-0x49, 0x80, /* GH*/
-0x4A, 0x80, /* GV */
-0x4B, 0x80, /* BH*/
-0x4C, 0x80, /* BV*/
-0x4D, 0x80, /* BH*/
-0x4E, 0x80, /* BV */
-0x52, 0x90, /* GGain*/
-0x53, 0x20, /* GGain*/
-0x54, 0x00, /* GGain*/
-
-/*Max Shading*/
-0xFF, 0x85, /*Page mode */
-0x32, 0xC0,
-0x33, 0x30,
-0x34, 0x00,
-0x35, 0x90,
-0x36, 0x20,
-0x37, 0x00,
-
-/*Min Shading*/
-0x1c, 0xC0,
-0x1d, 0x30,
-0x1e, 0x00,
-0x1f, 0x90,
-0x20, 0x18,
-0x21, 0x00,
-
-/* LineLength */
-0xFF, 0x87, /*Page mode */
-0xDC, 0x05, /* by Yong In Han 091511*/
-0xDD, 0xB0, /* by Yong In Han 091511*/
-0xd5, 0x00, /* Flip*/
-/***************************************************/
-/* SensorCon */
-/***************************************************/
-0xFF, 0xD0, /*Page mode */
-0x20, 0x0E, /* ABLK_Rsrv_Addr*/
-0x20, 0x0D, /* ABLK_Rsrv_Addr*/
-
-/***************************************************/
-/* MIPI */
-/***************************************************/
-0xFF, 0xB0, /*Page mode */
-0x54, 0x02, /* MIPI PHY_HS_TX_CTRL*/
-0x38, 0x05, /* MIPI DPHY_CTRL_SET*/
-
-
-/* SXGA PR*/
-0xFF, 0x85, /*Page mode */
-0xB8, 0x0A, /* gPT_u8PR_Active_SXGA_WORD_COUNT_Addr0*/
-0xB9, 0x00, /* gPT_u8PR_Active_SXGA_WORD_COUNT_Addr1*/
-0xBC, 0x04, /* gPT_u8PR_Active_SXGA_DPHY_CLK_TIME_Addr3*/
-0xFF, 0x87, /*Page mode */
-0x0C, 0x00, /* start Y*/
-0x0D, 0x20, /* start Y */
-0x10, 0x03, /* end Y*/
-0x11, 0xE0, /* end Y */
-
-/* Recoding */
-0xFF, 0x86, /*Page mode */
-0x38, 0x05, /* gPT_u8PR_Active_720P_WORD_COUNT_Addr0*/
-0x39, 0x00, /* gPT_u8PR_Active_720P_WORD_COUNT_Addr1*/
-0x3C, 0x04, /* gPT_u8PR_Active_720P_DPHY_CLK_TIME_Addr3*/
-
-0xFF, 0x87,
-0x23, 0x02, /*gPR_Active_720P_u8SensorCtrl_Addr */
-0x25, 0x01, /*gPR_Active_720P_u8PLL_P_Addr */
-0x26, 0x0F, /*gPR_Active_720P_u8PLL_M_Addr */
-0x27, 0x00, /*gPR_Active_720P_u8PLL_S_Addr */
-0x28, 0x00, /*gPR_Active_720P_u8PLL_Ctrl_Addr */
-0x29, 0x01, /*gPR_Active_720P_u8src_clk_sel_Addr */
-0x2A, 0x00, /*gPR_Active_720P_u8output_pad_status_Addr */
-0x2B, 0x3F, /*gPR_Active_720P_u8ablk_ctrl_10_Addr */
-0x2C, 0xFF, /*gPR_Active_720P_u8BayerFunc_Addr */
-0x2D, 0xFF, /*gPR_Active_720P_u8RgbYcFunc_Addr */
-0x2E, 0x00, /*gPR_Active_720P_u8ISPMode_Addr */
-0x2F, 0x02, /*gPR_Active_720P_u8SCLCtrl_Addr */
-0x30, 0x01, /*gPR_Active_720P_u8SCLHorScale_Addr0 */
-0x31, 0xFF, /*gPR_Active_720P_u8SCLHorScale_Addr1 */
-0x32, 0x03, /*gPR_Active_720P_u8SCLVerScale_Addr0 */
-0x33, 0xFF, /*gPR_Active_720P_u8SCLVerScale_Addr1 */
-0x34, 0x00, /*gPR_Active_720P_u8SCLCropStartX_Addr0 */
-0x35, 0x00, /*gPR_Active_720P_u8SCLCropStartX_Addr1 */
-0x36, 0x00, /*gPR_Active_720P_u8SCLCropStartY_Addr0 */
-0x37, 0x10, /*gPR_Active_720P_u8SCLCropStartY_Addr1 */
-0x38, 0x02, /*gPR_Active_720P_u8SCLCropEndX_Addr0 */
-0x39, 0x80, /*gPR_Active_720P_u8SCLCropEndX_Addr1 */
-0x3A, 0x01, /*gPR_Active_720P_u8SCLCropEndY_Addr0 */
-0x3B, 0xF0, /*gPR_Active_720P_u8SCLCropEndY_Addr1 */
-0x3C, 0x01, /*gPR_Active_720P_u8OutForm_Addr */
-0x3D, 0x0C, /*gPR_Active_720P_u8OutCtrl_Addr */
-0x3E, 0x04, /*gPR_Active_720P_u8AEWinStartX_Addr */
-0x3F, 0x04, /*gPR_Active_720P_u8AEWinStartY_Addr */
-0x40, 0x66, /*gPR_Active_720P_u8MergedWinWidth_Addr */
-0x41, 0x5E, /*gPR_Active_720P_u8MergedWinHeight_Addr */
-0x42, 0x04, /*gPR_Active_720P_u8AEHistWinAx_Addr */
-0x43, 0x04, /*gPR_Active_720P_u8AEHistWinAy_Addr */
-0x44, 0x98, /*gPR_Active_720P_u8AEHistWinBx_Addr */
-0x45, 0x78, /*gPR_Active_720P_u8AEHistWinBy_Addr */
-0x46, 0x22, /*gPR_Active_720P_u8AWBTrim_Addr */
-0x47, 0x28, /*gPR_Active_720P_u8AWBCTWinAx_Addr */
-0x48, 0x20, /*gPR_Active_720P_u8AWBCTWinAy_Addr */
-0x49, 0x78, /*gPR_Active_720P_u8AWBCTWinBx_Addr */
-0x4A, 0x60, /*gPR_Active_720P_u8AWBCTWinBy_Addr */
-0x4B, 0x03, /*gPR_Active_720P_u16AFCFrameLength_0 */
-0x4C, 0x00, /*gPR_Active_720P_u16AFCFrameLength_1 */
-
-
-/* VGA PR */
-0xFF, 0x86, /*Page mode */
-0x2F, 0x05, /* gPT_u8PR_Active_VGA_WORD_COUNT_Addr0*/
-0x30, 0x00, /* gPT_u8PR_Active_VGA_WORD_COUNT_Addr1*/
-0x33, 0x04, /* gPT_u8PR_Active_VGA_DPHY_CLK_TIME_Addr3 */
-
-0xFF, 0x87, /*Page mode */
-0x4D, 0x00, /*gPR_Active_VGA_u8SensorCtrl_Addr*/
-0x4E, 0x72, /*gPR_Active_VGA_u8SensorMode_Addr*/
-0x4F, 0x01, /*gPR_Active_VGA_u8PLL_P_Addr*/
-0x50, 0x0F, /*gPR_Active_VGA_u8PLL_M_Addr*/
-0x51, 0x00, /*gPR_Active_VGA_u8PLL_S_Addr*/
-0x52, 0x00, /*gPR_Active_VGA_u8PLL_Ctrl_Addr*/
-0x53, 0x01, /*gPR_Active_VGA_u8src_clk_sel_Addr*/
-0x54, 0x00, /*gPR_Active_VGA_u8output_pad_status_Addr*/
-0x55, 0x3F, /*gPR_Active_VGA_u8ablk_ctrl_10_Addr*/
-0x56, 0xFF, /*gPR_Active_VGA_u8BayerFunc_Addr*/
-0x57, 0xFF, /*gPR_Active_VGA_u8RgbYcFunc_Addr*/
-0x58, 0x00, /*gPR_Active_VGA_u8ISPMode_Addr*/
-0x59, 0x02, /*gPR_Active_VGA_u8SCLCtrl_Addr*/
-0x5A, 0x01, /*gPR_Active_VGA_u8SCLHorScale_Addr0*/
-0x5B, 0xFF, /*gPR_Active_VGA_u8SCLHorScale_Addr1*/
-0x5C, 0x01, /*gPR_Active_VGA_u8SCLVerScale_Addr0*/
-0x5D, 0xFF, /*gPR_Active_VGA_u8SCLVerScale_Addr1*/
-0x5E, 0x00, /*gPR_Active_VGA_u8SCLCropStartX_Addr0*/
-0x5F, 0x00, /*gPR_Active_VGA_u8SCLCropStartX_Addr1*/
-0x60, 0x00, /*gPR_Active_VGA_u8SCLCropStartY_Addr0*/
-0x61, 0x20, /*gPR_Active_VGA_u8SCLCropStartY_Addr1*/
-0x62, 0x05, /*gPR_Active_VGA_u8SCLCropEndX_Addr0*/
-0x63, 0x00, /*gPR_Active_VGA_u8SCLCropEndX_Addr1*/
-0x64, 0x03, /*gPR_Active_VGA_u8SCLCropEndY_Addr0*/
-0x65, 0xE0, /*gPR_Active_VGA_u8SCLCropEndY_Addr1*/
-
-0xFF, 0xd1, /*Page mode */
-0x07, 0x00, /* power off mask clear*/
-0x0b, 0x00, /* clock off mask clear*/
-0xFF, 0xC0, /*Page mode */
-0x10, 0x41,
-
-
-/* VT-Call END of Initial*/
-};
-
-
-/* Set-data based on Samsung Reliabilty Group standard
-* ,when using WIFI. 15fps
-*/
-static const u8 db8131m_vt_wifi_common_1[] = {
-/***************************************************/
-/* Device : DB8131M Fixed 8fps */
-/* MIPI Interface for Noncontious Clock */
-/***************************************************/
-/***************************************************/
-/* Command */
-/***************************************************/
-0xFF, 0xC0, /*Page mode*/
-0x10, 0x01,
-};
-/*wait 150*/
-
-static const u8 db8131m_vt_wifi_common_2[] = {
-/***************************************************/
-/* Format */
-/***************************************************/
-0xFF, 0xA1, /*Page mode */
-0x70, 0x01,
-0x71, 0x0D,
-
-/***************************************************/
-/* SensorCon */
-/***************************************************/
-0xFF, 0xD0, /*Page mode */
-0x0F, 0x0B, /*ABLK_Ctrl_1_Addr*/
-0x13, 0x00, /*Gain_Addr*/
-0x15, 0x01, /*IVREFT_REFB_Addr*/
-0x20, 0x0E, /*ABLK_Rsrv_Addr*/
-0x23, 0x01, /*IVREFT2_REFB2_Addr*/
-0x24, 0x01, /*IPPG_IVCM2_Addr*/
-0x39, 0x70, /*RiseSx_CDS_1_L_Addr*/
-0x51, 0x19, /*Fallcreset_1_L_Addr*/
-0x83, 0x2D, /*RiseTran_Sig_Even_L_Addr*/
-0x85, 0x2F, /*FallTran_Sig_Even_L_Addr*/
-0x87, 0x2D, /*RiseTran_Sig_Odd_L_Addr*/
-0x89, 0x2F, /*FallTran_Sig_Odd_L_Addr*/
-0x8B, 0x27, /*RiseCNT_EN_1_L_Addr*/
-0x8D, 0x6c, /*FallCNT_EN_1_L_Addr*/
-0xD7, 0x80, /*ABLK_Ctrl_12_Addr*/
-0xDB, 0xA2, /*FallScanTx15_1_L_Addr*/
-0xED, 0x01, /*PLL_P_Addr*/
-0xEE, 0x0F, /*PLL_M_Addr*/
-0xEF, 0x00, /*PLL_S_Addr*/
-0xF9, 0x00, /*ABLK_Ctrl_8*/
-0xF8, 0x00, /*Vblank Sleep Mode enable*/
-0xFB, 0x90, /*PostADC_Gain_Addr*/
-
-/***************************************************/
-/* Analog ADF */
-/***************************************************/
-0xFF, 0x85, /*Page mode */
-0x89, 0x93, /*gAdf_u8APThreshold*/
-0x8A, 0x0C, /*u8APClmpThreshold*/
-0x8C, 0x07, /*gAdf_u8APMinVal_ThrClampH*/
-0x8D, 0x40, /*gAdf_u8APMinVal_ThrClampL*/
-0x8E, 0x03, /*gAdf_u8APMinVal_DOFFSET*/
-0x8F, 0x14, /*gAdf_u8APMinVal_AMP2_1_SDM*/
-0x91, 0x1A, /*gAdf_u8APMinVal_AMP4_3_SDM*/
-0x92, 0x0F, /*gAdf_u8APMinVal_FallIntTx15*/
-0x93, 0x47, /*gAdf_u8APMinVal_CDSxRange_CtrlPre*/
-0x95, 0x18, /*gAdf_u8APMinVal_REFB_IVCM*/
-0x96, 0x38, /*gAdf_u8APMinVal_ref_os_PB*/
-0x97, 0x0D, /*gAdf_u8APMinVal_NTx_Range*/
-0x98, 0x0D, /*gAdf_u8APMaxVal_Clmp_rst*/
-0x99, 0x06, /*gAdf_u8APMaxVal_ThrClampH*/
-0x9A, 0x9F, /*gAdf_u8APMaxVal_ThrClampL*/
-0x9B, 0x02, /*gAdf_u8APMaxVal_DOFFSET*/
-0x9C, 0x1C, /*gAdf_u8APMaxVal_AMP2_1_SDM*/
-0x9E, 0x11, /*gAdf_u8APMaxVal_AMP4_3_SDM*/
-0x9F, 0x5D, /*gAdf_u8APMaxVal_FallIntTx15*/
-0xA0, 0x78, /*gAdf_u8APMaxVal_CDSxRange_CtrlPre*/
-0xA2, 0x18, /*gAdf_u8APMaxVal_REFB_IVCM*/
-0xA3, 0x40, /*gAdf_u8APMaxVal_ref_os_PB*/
-0xA4, 0x0B, /*gAdf_u8APMaxVal_NTx_Range*/
-
-0xFF, 0x86, /*Page mode */
-0x15, 0x00, /*gPT_u8Adf_APThrHys*/
-0x16, 0xF7, /*gPT_u8Adf_APFallIntTxThrLevel*/
-0x17, 0x13, /*gPT_u8Adf_APMinVal_BP2_1_SDM*/
-0x18, 0x13, /*gPT_u8Adf_APMidVal_BP2_1_SDM*/
-0x19, 0x1C, /*gPT_u8Adf_APMaxVal_BP2_1_SDM*/
-0x1A, 0x06, /*gPT_u8Adf_APMidVal_ThrClampH*/
-0x1B, 0xF0, /*gPT_u8Adf_APMidVal_ThrClampL*/
-0x1C, 0x01, /*gPT_u8Adf_APMidVal_DOFFSET*/
-0x1D, 0x14, /*gPT_u8Adf_APMidVal_AMP2_1_SDM*/
-0x1F, 0x31, /*gPT_u8Adf_APMidVal_AMP4_3_SDM*/
-0x20, 0x68, /*gPT_u8Adf_APMidVal_CDSxRange_CtrlPre*/
-0x22, 0x18, /*gPT_u8Adf_APMidVal_REFB_IVCM*/
-0x23, 0x38, /*gPT_u8Adf_APMidVal_ref_os_PB*/
-0x24, 0x0F, /*gPT_u8Adf_APMidVal_NTx_Range*/
-0x25, 0x77, /*gPT_u8Adf_APVal_EnSiSoSht_EnSm*/
-
-0xFF, 0x87, /*Page mode */
-0xEA, 0x41,
-
-0xFF, 0xD0, /*Page mode */
-0x20, 0x0D, /*ABLK_Rsrv_Addr*/
-
-0xFF, 0x83, /*Page mode */
-0x63, 0x28, /*Again Table*/
-0x64, 0x10, /*Again Table*/
-0x65, 0xA8, /*Again Table*/
-0x66, 0x50, /*Again Table*/
-0x67, 0x28, /*Again Table*/
-0x68, 0x14, /*Again Table*/
-
-
-/***************************************************/
-/* AE */
-/***************************************************/
-0xFF, 0x82, /*Page mode */
-0x91, 0x02, /* AeMode*/
-0x95, 0x88, /* AE weight*/
-0x96, 0x88,
-0x97, 0xF8,
-0x98, 0x8F,
-0x99, 0xF8,
-0x9A, 0x8F,
-0x9B, 0x88,
-0x9C, 0x88,
-0xA9, 0x40, /* OTarget*/
-0xAA, 0x40, /* ITarget*/
-0x9D, 0x66, /* AE Speed*/
-0x9F, 0x06, /* AE HoldBnd*/
-0xA8, 0x40, /* STarget*/
-0xB9, 0x04, /* RGain*/
-0xBB, 0x04, /* GGain*/
-0xBD, 0x04, /* BGain*/
-0xC5, 0x02, /* PeakMvStep*/
-0xC6, 0x38, /* PeakTgMin*/
-0xC7, 0x24, /* PeakRatioTh1*/
-0xC8, 0x10, /* PeakRatioTh0*/
-0xC9, 0x05, /* PeakLuTh*/
-0xD5, 0x60, /* LuxGainTB_2*/
-0xFF, 0x83, /*Page mode */
-0x2F, 0x04, /* TimeNum0*/
-0x30, 0x05, /* TimeNum1*/
-0x4F, 0x05, /* FrameOffset*/
-0xFF, 0x82, /*Page mode */
-0xA1, 0x0A, /* AnalogGainMax*/
-0xF3, 0x09, /* SCLK*/
-0xF4, 0x60,
-0xF9, 0x00, /* GainMax*/
-0xFA, 0xC8, /* GainMax*/
-0xFB, 0x62, /* Gain3Lut*/
-0xFC, 0x39, /* Gain2Lut*/
-0xFD, 0x28, /* Gain1Lut*/
-0xFE, 0x12, /* GainMin*/
-0xFF, 0x83, /*Page mode */
-0x03, 0x0F, /* TimeMax60Hz : 8fps*/
-0x04, 0x0A, /* Time3Lux60Hz : 12fps*/
-0x05, 0x04, /* Time2Lut60Hz : 24fps*/
-0x06, 0x04, /* Time1Lut60Hz : 24fps*/
-0xFF, 0x82, /*Page mode */
-0xD3, 0x12, /* LuxTBGainStep0 */
-0xD4, 0x36, /* LuxTBGainStep1 */
-0xD5, 0x60, /* LuxTBGainStep2*/
-0xD6, 0x01, /* LuxTBTimeStep0H*/
-0xD7, 0x00, /* LuxTBTimeStep0L*/
-0xD8, 0x01, /* LuxTBTimeStep1H*/
-0xD9, 0xC0, /* LuxTBTimeStep1L*/
-0xDA, 0x06, /* LuxTBTimeStep2H*/
-0xDB, 0x00, /* LuxTBTimeStep2L*/
-0xFF, 0x83, /*Page mode */
-0x0B, 0x08,
-0x0C, 0x0C, /* Frame Rate*/
-0xFF, 0x82, /*Page mode */
-0x92, 0x5D,
-
-/***************************************************/
-/* AWB */
-/***************************************************/
-0xFF, 0x83, /*Page mode */
-0x79, 0x83, /* AWB SKIN ON*/
-0x86, 0x07, /* gAWB_u16MinGrayCnt_rw_0*/
-0x87, 0x00, /* gAWB_u16MinGrayCnt_rw_1*/
-0x90, 0x05, /* gAWB_u16FinalRGain_ro_0*/
-0x94, 0x05, /* gAWB_u16FinalBGain_ro_0*/
-0x98, 0xD4, /* SkinWinCntTh*/
-0xA2, 0x28, /* SkinYTh*/
-0xA3, 0x00, /* SkinHoldHitCnt*/
-0xA4, 0x0F, /* SkinHoldHitCnt*/
-0xAD, 0x65, /* u8SkinTop2*/
-0xAE, 0x80, /* gAwb_u8SkinTop2LS1Ratio_rw 5zone */
-0xAF, 0x20, /* gAwb_u8SkinTop2LS2Ratio_rw 6zone */
-0xB4, 0x10, /* u8SkinTop2LSHys_rw */
-0xB5, 0x54, /* gAwb_u8SkinLTx */
-0xB6, 0xbd, /* gAwb_u8SkinLTy */
-0xB7, 0x74, /* gAwb_u8SkinRBx */
-0xB8, 0x9d, /* gAwb_u8SkinRBy */
-0xBA, 0x4F, /* UniCThrY_rw */
-0xBF, 0x0C, /* u16UniCGrayCntThr_rw_0*/
-0xC0, 0x80, /* u16UniCGrayCntThr_rw_1 */
-0xFF, 0x87, /*Page mode */
-0xC9, 0x22, /* gUR_u8AWBTrim_Addr */
-0xFF, 0x84, /*Page mode */
-0x49, 0x02, /* Threshold_indoor */
-0x4A, 0x00,
-0x4B, 0x03, /* Threshold_outdoor */
-0x4C, 0x80,
-0xFF, 0x83, /*Page mode */
-0xCB, 0x03, /* R MinGain [Default 0X20] A Spec Pass */
-0xCC, 0xC0, /* R MinGain [Default 0X20] A Spec Pass */
-0x82, 0x00, /* lockratio*/
-0xFF, 0x84, /*Page mode */
-0x3D, 0x00, /* gAwb_u32LuxConst1_rw_0*/
-0x3E, 0x00, /* gAwb_u32LuxConst1_rw_1*/
-0x3F, 0x06, /* gAwb_u32LuxConst1_rw_2*/
-0x40, 0x20, /* gAwb_u32LuxConst1_rw_3*/
-0x41, 0x07, /* gAwb_u32LuxConst2_rw_0*/
-0x42, 0x53, /* gAwb_u32LuxConst2_rw_1*/
-0x43, 0x00, /* gAwb_u32LuxConst2_rw_2*/
-0x44, 0x00, /* gAwb_u32LuxConst2_rw_3*/
-0x55, 0x03, /* gAwb_u8Weight_Gen_rw_0 */
-0x56, 0x10, /* gAwb_u8Weight_Gen_rw_1 */
-0x57, 0x14, /* gAwb_u8Weight_Gen_rw_2 */
-0x58, 0x07, /* gAwb_u8Weight_Gen_rw_3 */
-0x59, 0x04, /* gAwb_u8Weight_Gen_rw_4 */
-0x5A, 0x03, /* gAwb_u8Weight_Gen_rw_5 */
-0x5B, 0x03, /* gAwb_u8Weight_Gen_rw_6 */
-0x5C, 0x15, /* gAwb_u8Weight_Gen_rw_7 */
-0x5D, 0x01, /* gAwb_u8Weight_Ind_rw_0 */
-0x5E, 0x0F, /* gAwb_u8Weight_Ind_rw_1 */
-0x5F, 0x07, /* gAwb_u8Weight_Ind_rw_2 */
-0x60, 0x14, /* gAwb_u8Weight_Ind_rw_3 */
-0x61, 0x14, /* gAwb_u8Weight_Ind_rw_4 */
-0x62, 0x12, /* gAwb_u8Weight_Ind_rw_5 */
-0x63, 0x11, /* gAwb_u8Weight_Ind_rw_6 */
-0x64, 0x14, /* gAwb_u8Weight_Ind_rw_7 */
-0x65, 0x03, /* gAwb_u8Weight_Outd_rw_0*/
-0x66, 0x05, /* gAwb_u8Weight_Outd_rw_1*/
-0x67, 0x15, /* gAwb_u8Weight_Outd_rw_2*/
-0x68, 0x04, /* gAwb_u8Weight_Outd_rw_3*/
-0x69, 0x01, /* gAwb_u8Weight_Outd_rw_4*/
-0x6A, 0x02, /* gAwb_u8Weight_Outd_rw_5*/
-0x6B, 0x03, /* gAwb_u8Weight_Outd_rw_6*/
-0x6C, 0x15, /* gAwb_u8Weight_Outd_rw_6*/
-0xFF, 0x85, /*Page mode */
-0xE2, 0x0C, /* gPT_u8Awb_UnicolorZone_rw */
-0xFF, 0x83, /*Page mode */
-0xCD, 0x06, /*Max Rgain*/
-0xCE, 0x80,
-0xD1, 0x06, /*Max BGain*/
-0xd2, 0x80,
-
-/***************************************************/
-/* AWB STE */
-/***************************************************/
-0xFF, 0xA1, /*Page mode */
-/*Flash*/
-0xA0, 0x5c, /*AWBZone0LTx*/
-0xA1, 0x7a, /*AWBZone0LTy*/
-0xA2, 0x69, /*AWBZone0RBx*/
-0xA3, 0x6f, /*AWBZone0RBy*/
-/*cloudy*/
-0xA4, 0x73, /*AWBZone1LTx*/
-0xA5, 0x55, /*AWBZone1LTy*/
-0xA6, 0x8C, /*AWBZone1RBx*/
-0xA7, 0x30, /*AWBZone1RBy */
-/*Daylight */
-0xA8, 0x69, /*AWBZone2LTx*/
-0xA9, 0x69, /*AWBZone2LTy*/
-0xAA, 0x83, /*AWBZone2RBx*/
-0xAB, 0x52, /*AWBZone2RBy */
-/*Fluorescent */
-0xAC, 0x57, /*AWBZone3LTx*/
-0xAD, 0x6e, /*AWBZone3LTy*/
-0xAE, 0x6f, /*AWBZone3RBx*/
-0xAF, 0x59, /*AWBZone3RBy*/
-
-/*CWF */
-0xB0, 0x50, /*AWBZone4LTx*/
-0xB1, 0x74, /*AWBZone4LTy*/
-0xB2, 0x65, /*AWBZone4RBx*/
-0xB3, 0x5d, /*AWBZone4RBy*/
-/*TL84 */
-0xB4, 0x53, /*AWBZone5LTx*/
-0xB5, 0x7f, /*AWBZone5LTy*/
-0xB6, 0x62, /*AWBZone5RBx*/
-0xB7, 0x75, /*AWBZone5RBy */
-/*A */
-0xB8, 0x4a, /*AWBZone6LTx*/
-0xB9, 0x87, /*AWBZone6LTy*/
-0xBA, 0x59, /*AWBZone6RBx*/
-0xBB, 0x78, /*AWBZone6RBy*/
-/*Horizon */
-0xBC, 0x41, /*AWBZone7LTx*/
-0xBD, 0x91, /*AWBZone7LTy*/
-0xBE, 0x4b, /*AWBZone7RBx*/
-0xBF, 0x89, /*AWBZone7RBy*/
-/*Skin */
-0xC0, 0x5b, /*AWBZone8LTx*/
-0xC1, 0x85, /*AWBZone8LTy*/
-0xC2, 0x60, /*AWBZone8RBx*/
-0xC3, 0x7b, /*AWBZone8RBy*/
-
-/***************************************************/
-/* UR */
-/***************************************************/
-0xFF, 0x85, /*Page mode */
-0x06, 0x05,
-0xFF, 0x86, /*Page mode */
-0x14, 0x1E, /* CCM sum 1*/
-0xFF, 0x85, /*Page mode */
-0x86, 0x42, /* 42 saturation level*/
-0x07, 0x00, /* sup hysteresis*/
-
-/*DAY light */
-0xFF, 0x83, /*Page mode */
-0xEA, 0x00, /*gAwb_s16AdapCCMTbl_0*/
-0xEB, 0x53, /*gAwb_s16AdapCCMTbl_1*/
-0xEC, 0xFF, /*gAwb_s16AdapCCMTbl_2*/
-0xED, 0xE1, /*gAwb_s16AdapCCMTbl_3*/
-0xEE, 0x00, /*gAwb_s16AdapCCMTbl_4*/
-0xEF, 0x05, /*gAwb_s16AdapCCMTbl_5*/
-0xF0, 0xFF, /*gAwb_s16AdapCCMTbl_6*/
-0xF1, 0xF3, /*gAwb_s16AdapCCMTbl_7*/
-0xF2, 0x00, /*gAwb_s16AdapCCMTbl_8*/
-0xF3, 0x4B, /*gAwb_s16AdapCCMTbl_9*/
-0xF4, 0xFF, /*gAwb_s16AdapCCMTbl_10*/
-0xF5, 0xFA, /*gAwb_s16AdapCCMTbl_11*/
-0xF6, 0xFF, /*gAwb_s16AdapCCMTbl_12*/
-0xF7, 0xFa, /*gAwb_s16AdapCCMTbl_13*/
-0xF8, 0xFF, /*gAwb_s16AdapCCMTbl_14*/
-0xF9, 0xC3, /*gAwb_s16AdapCCMTbl_15*/
-0xFA, 0x00, /*gAwb_s16AdapCCMTbl_16*/
-0xFB, 0x80, /*gAwb_s16AdapCCMTbl_17*/
-
-/*CWF lgiht */
-0xFF, 0x83, /*Page mode */
-0xFC, 0x00, /* gAwb_s16AdapCCMTbl_18 */
-0xFD, 0x68, /* gAwb_s16AdapCCMTbl_19 */
-0xFF, 0x85, /*Page mode */
-0xE0, 0xFF, /* gAwb_s16AdapCCMTbl_20 */
-0xE1, 0xde, /* gAwb_s16AdapCCMTbl_21 */
-0xFF, 0x84, /*Page mode */
-0x00, 0xff, /* gAwb_s16AdapCCMTbl_22 */
-0x01, 0xfa, /* gAwb_s16AdapCCMTbl_23 */
-0x02, 0xFF, /* gAwb_s16AdapCCMTbl_24 */
-0x03, 0xf0, /* gAwb_s16AdapCCMTbl_25 */
-0x04, 0x00, /* gAwb_s16AdapCCMTbl_26 */
-0x05, 0x52, /* gAwb_s16AdapCCMTbl_27 */
-0x06, 0xFF, /* gAwb_s16AdapCCMTbl_28 */
-0x07, 0xFa, /* gAwb_s16AdapCCMTbl_29 */
-0x08, 0x00, /* gAwb_s16AdapCCMTbl_30 */
-0x09, 0x00, /* gAwb_s16AdapCCMTbl_31 */
-0x0A, 0xFF, /* gAwb_s16AdapCCMTbl_32 */
-0x0B, 0xdb, /* gAwb_s16AdapCCMTbl_33 */
-0x0C, 0x00, /* gAwb_s16AdapCCMTbl_34 */
-0x0D, 0x68, /* gAwb_s16AdapCCMTbl_35 */
-
-/*A light */
-
-0x0E, 0x00, /* gAwb_s16AdapCCMTbl_36 */
-0x0F, 0x6d, /* gAwb_s16AdapCCMTbl_37 */
-0x10, 0xFF, /* gAwb_s16AdapCCMTbl_38 */
-0x11, 0xd5, /* gAwb_s16AdapCCMTbl_39 */
-0x12, 0xff, /* gAwb_s16AdapCCMTbl_40 */
-0x13, 0xfe, /* gAwb_s16AdapCCMTbl_41 */
-0x14, 0xFF, /* gAwb_s16AdapCCMTbl_42 */
-0x15, 0xf4, /* gAwb_s16AdapCCMTbl_43 */
-0x16, 0x00, /* gAwb_s16AdapCCMTbl_44 */
-0x17, 0x5a, /* gAwb_s16AdapCCMTbl_45 */
-0x18, 0xff, /* gAwb_s16AdapCCMTbl_46 */
-0x19, 0xef, /* gAwb_s16AdapCCMTbl_47 */
-0x1A, 0xff, /* gAwb_s16AdapCCMTbl_48 */
-0x1B, 0xfa, /* gAwb_s16AdapCCMTbl_49 */
-0x1C, 0xFF, /* gAwb_s16AdapCCMTbl_50 */
-0x1D, 0xbe, /* gAwb_s16AdapCCMTbl_51 */
-0x1E, 0x00, /* gAwb_s16AdapCCMTbl_52 */
-0x1F, 0x86, /* gAwb_s16AdapCCMTbl_53 */
-
-
-/***************************************************/
-/* ADF */
-/***************************************************/
-
-/* ISP setting*/
-0xFF, 0xA0, /*Page mode */
-0x10, 0x80, /* BLC: ABLC db*/
-0x60, 0x73, /* CDC: Dark CDC ON */
-0x61, 0x1F, /* Six CDC_Edge En, Slash EN*/
-0x69, 0x0C, /* Slash direction Line threshold*/
-0x6A, 0x60, /* Slash direction Pixel threshold*/
-0xC2, 0x04, /* NSF: directional smoothing*/
-0xD0, 0x51, /* DEM: pattern detection*/
-0xFF, 0xA1, /*Page mode */
-0x30, 0x01, /* EDE: Luminane adaptation on*/
-0x32, 0x50, /* EDE: Adaptation slope */
-0x34, 0x00, /* EDE: x1 point */
-0x35, 0x0B, /* EDE: x1 point */
-0x36, 0x01, /* EDE: x2 point */
-0x37, 0x80, /* EDE: x2 point */
-0x3A, 0x00, /* EDE: Adaptation left margin*/
-0x3B, 0x30, /* EDE: Adaptation right margin*/
-0x3C, 0x08, /* EDE: rgb edge threshol*/
-
-/* Adaptive Setting*/
-0xFF, 0x85, /*Page mode */
-/* LSC*/
-0x0F, 0x43, /* LVLSC lux level threshold*/
-0x10, 0x43, /* LSLSC Light source , threshold lux*/
-
-/* BGT*/
-0x17, 0x30, /* BGT lux level threshold*/
-0x26, 0x20, /* MinVal */
-0x3c, 0x00, /* MaxVal */
-
-/* CNT*/
-0x18, 0x43, /* CNT lux level threshold*/
-0x27, 0x00, /* MinVal */
-0x3d, 0x00, /* MaxVal */
-
-/* NSF */
-0x12, 0xA5, /* NSF lux level threshold */
-0x22, 0x38, /* u8MinVal_NSF1*/
-0x23, 0x70, /* u8MinVal_NSF2*/
-0xFF, 0x86, /*Page mode */
-0x12, 0x00, /* u8MinVal_NSF3*/
-0xFF, 0x85, /*Page mode */
-0x38, 0x12, /* u8MaxVal_NSF1*/
-0x39, 0x30, /* u8MaxVal_NSF2*/
-0xFF, 0x86, /*Page mode */
-0x13, 0x08, /* u8MaxVal_NSF3*/
-
-/* GDC*/
-0xFF, 0x85, /*Page mode */
-0x15, 0xF4, /* GDC lux level threshold */
-0x2D, 0x20, /* u8MinVal_GDC1*/
-0x2E, 0x30, /* u8MinVal_GDC2*/
-0x43, 0x40, /* u8MaxVal_GDC1*/
-0x44, 0x80, /* u8MaxVal_GDC2*/
-
-/* ISP Edge*/
-0x04, 0xFB, /* EnEDE*/
-0x14, 0x54, /* u8ThrLevel_EDE*/
-0x28, 0x00, /* u8MinVal_EDE_CP*/
-0x29, 0x03, /* u8MinVal_EDE1*/
-0x2A, 0x20, /* u8MinVal_EDE2*/
-0x2B, 0x00, /* u8MinVal_EDE_OFS*/
-0x2C, 0x22, /* u8MinVal_SG*/
-0x3E, 0x00, /* u8MaxVal_EDE_CP*/
-0x3F, 0x09, /* u8MaxVal_EDE1*/
-0x40, 0x22, /* u8MaxVal_EDE2*/
-0x41, 0x02, /* u8MaxVal_EDE_OFS*/
-0x42, 0x33, /* u8MaxVal_SG*/
-
-/* Gamma Adaptive*/
-
-0x16, 0xA0, /* Gamma Threshold*/
-0x47, 0x00, /* Min_Gamma_0*/
-0x48, 0x03, /* Min_Gamma_1*/
-0x49, 0x10, /* Min_Gamma_2*/
-0x4A, 0x25, /* Min_Gamma_3*/
-0x4B, 0x3B, /* Min_Gamma_4*/
-0x4C, 0x4F, /* Min_Gamma_5*/
-0x4D, 0x6D, /* Min_Gamma_6*/
-0x4E, 0x86, /* Min_Gamma_7*/
-0x4F, 0x9B, /* Min_Gamma_8*/
-0x50, 0xAD, /* Min_Gamma_9*/
-0x51, 0xC2, /* Min_Gamma_10*/
-0x52, 0xD3, /* Min_Gamma_11*/
-0x53, 0xE1, /* Min_Gamma_12*/
-0x54, 0xE9, /* Min_Gamma_13*/
-0x55, 0xF2, /* Min_Gamma_14*/
-0x56, 0xFA, /* Min_Gamma_15*/
-0x57, 0xFF, /* Min_Gamma_16*/
-0x58, 0x00, /* Max_Gamma_0 */
-0x59, 0x06, /* Max_Gamma_1 */
-0x5a, 0x14, /* Max_Gamma_2 */
-0x5b, 0x30, /* Max_Gamma_3 */
-0x5c, 0x4A, /* Max_Gamma_4 */
-0x5d, 0x5D, /* Max_Gamma_5 */
-0x5e, 0x75, /* Max_Gamma_6 */
-0x5f, 0x89, /* Max_Gamma_7 */
-0x60, 0x9A, /* Max_Gamma_8 */
-0x61, 0xA7, /* Max_Gamma_9 */
-0x62, 0xBC, /* Max_Gamma_10 */
-0x63, 0xD0, /* Max_Gamma_11 */
-0x64, 0xE0, /* Max_Gamma_12 */
-0x65, 0xE7, /* Max_Gamma_13 */
-0x66, 0xEE, /* Max_Gamma_14 */
-0x67, 0xF7, /* Max_Gamma_15 */
-0x68, 0xFF, /* Max_Gamma_16 */
-
-/* Initial edge, noise filter setting*/
-0xFF, 0xA0, /*Page mode */
-0xC0, 0x12, /*NSFTh1_Addr*/
-0xC1, 0x30, /*NSFTh2_Addr*/
-0xC2, 0x08, /*NSFTh3_Addr*/
-0xFF, 0xA1, /*Page mode */
-0x30, 0x01, /*EDEOption_Addr*/
-0x31, 0x33, /*EDESlopeGain_Addr*/
-0x32, 0x50, /*EDELuAdpCtrl_Addr*/
-0x33, 0x00, /*EDEPreCoringPt_Addr*/
-0x34, 0x00, /*EDETransFuncXp1_Addr1*/
-0x35, 0x0B, /*EDETransFuncXp1_Addr0*/
-0x36, 0x01, /*EDETransFuncXp2_Addr1*/
-0x37, 0x80, /*EDETransFuncXp2_Addr0*/
-0x38, 0x09, /*EDETransFuncSl1_Addr*/
-0x39, 0x22, /*EDETransFuncSl2_Addr*/
-0x3A, 0x00, /*EDELuAdpLOffset_Addr*/
-0x3B, 0x30, /*EDELuAdpROffset_Addr*/
-0x3C, 0x08, /*EDERBThrd_Addr*/
-0x3D, 0x02, /*EDESmallOffset_Addr*/
-
-
-/* CCM Saturation Level*/
-0xFF, 0x85, /*Page mode */
-0x1A, 0x64, /* SUP Threshold */
-0x30, 0x40, /* MinSUP */
-
-0xFF, 0xA0, /*Page mode */
-/* Lens Shading*/
-0x43, 0x80, /* RH7 rrhrhh*/
-0x44, 0x80, /* RV*/
-0x45, 0x80, /* RH */
-0x46, 0x80, /* RV*/
-0x47, 0x80, /* GH*/
-0x48, 0x80, /* GV*/
-0x49, 0x80, /* GH*/
-0x4A, 0x80, /* GV */
-0x4B, 0x80, /* BH*/
-0x4C, 0x80, /* BV*/
-0x4D, 0x80, /* BH*/
-0x4E, 0x80, /* BV */
-0x52, 0x90, /* GGain*/
-0x53, 0x20, /* GGain*/
-0x54, 0x00, /* GGain*/
-
-/*Max Shading*/
-0xFF, 0x85, /*Page mode */
-0x32, 0xC0,
-0x33, 0x30,
-0x34, 0x00,
-0x35, 0x90,
-0x36, 0x20,
-0x37, 0x00,
-
-/*Min Shading*/
-0x1c, 0xC0,
-0x1d, 0x30,
-0x1e, 0x00,
-0x1f, 0x90,
-0x20, 0x18,
-0x21, 0x00,
-
-/* LineLength */
-0xFF, 0x87, /*Page mode */
-0xDC, 0x05, /* by Yong In Han 091511*/
-0xDD, 0xB0, /* by Yong In Han 091511*/
-0xd5, 0x00, /* Flip*/
-/***************************************************/
-/* SensorCon */
-/***************************************************/
-0xFF, 0xD0, /*Page mode */
-0x20, 0x0E, /* ABLK_Rsrv_Addr*/
-0x20, 0x0D, /* ABLK_Rsrv_Addr*/
-
-/***************************************************/
-/* MIPI */
-/***************************************************/
-0xFF, 0xB0, /*Page mode */
-0x54, 0x02, /* MIPI PHY_HS_TX_CTRL*/
-0x38, 0x05, /* MIPI DPHY_CTRL_SET*/
-
-
-/* SXGA PR*/
-0xFF, 0x85, /*Page mode */
-0xB8, 0x0A, /* gPT_u8PR_Active_SXGA_WORD_COUNT_Addr0*/
-0xB9, 0x00, /* gPT_u8PR_Active_SXGA_WORD_COUNT_Addr1*/
-0xBC, 0x04, /* gPT_u8PR_Active_SXGA_DPHY_CLK_TIME_Addr3*/
-0xFF, 0x87, /*Page mode */
-0x0C, 0x00, /* start Y*/
-0x0D, 0x20, /* start Y */
-0x10, 0x03, /* end Y*/
-0x11, 0xE0, /* end Y */
-
-/* Recoding */
-0xFF, 0x86, /*Page mode */
-0x38, 0x05, /* gPT_u8PR_Active_720P_WORD_COUNT_Addr0*/
-0x39, 0x00, /* gPT_u8PR_Active_720P_WORD_COUNT_Addr1*/
-0x3C, 0x04, /* gPT_u8PR_Active_720P_DPHY_CLK_TIME_Addr3*/
-
-0xFF, 0x87,
-0x23, 0x02, /*gPR_Active_720P_u8SensorCtrl_Addr */
-0x25, 0x01, /*gPR_Active_720P_u8PLL_P_Addr */
-0x26, 0x0F, /*gPR_Active_720P_u8PLL_M_Addr */
-0x27, 0x00, /*gPR_Active_720P_u8PLL_S_Addr */
-0x28, 0x00, /*gPR_Active_720P_u8PLL_Ctrl_Addr */
-0x29, 0x01, /*gPR_Active_720P_u8src_clk_sel_Addr */
-0x2A, 0x00, /*gPR_Active_720P_u8output_pad_status_Addr */
-0x2B, 0x3F, /*gPR_Active_720P_u8ablk_ctrl_10_Addr */
-0x2C, 0xFF, /*gPR_Active_720P_u8BayerFunc_Addr */
-0x2D, 0xFF, /*gPR_Active_720P_u8RgbYcFunc_Addr */
-0x2E, 0x00, /*gPR_Active_720P_u8ISPMode_Addr */
-0x2F, 0x02, /*gPR_Active_720P_u8SCLCtrl_Addr */
-0x30, 0x01, /*gPR_Active_720P_u8SCLHorScale_Addr0 */
-0x31, 0xFF, /*gPR_Active_720P_u8SCLHorScale_Addr1 */
-0x32, 0x03, /*gPR_Active_720P_u8SCLVerScale_Addr0 */
-0x33, 0xFF, /*gPR_Active_720P_u8SCLVerScale_Addr1 */
-0x34, 0x00, /*gPR_Active_720P_u8SCLCropStartX_Addr0 */
-0x35, 0x00, /*gPR_Active_720P_u8SCLCropStartX_Addr1 */
-0x36, 0x00, /*gPR_Active_720P_u8SCLCropStartY_Addr0 */
-0x37, 0x10, /*gPR_Active_720P_u8SCLCropStartY_Addr1 */
-0x38, 0x02, /*gPR_Active_720P_u8SCLCropEndX_Addr0 */
-0x39, 0x80, /*gPR_Active_720P_u8SCLCropEndX_Addr1 */
-0x3A, 0x01, /*gPR_Active_720P_u8SCLCropEndY_Addr0 */
-0x3B, 0xF0, /*gPR_Active_720P_u8SCLCropEndY_Addr1 */
-0x3C, 0x01, /*gPR_Active_720P_u8OutForm_Addr */
-0x3D, 0x0C, /*gPR_Active_720P_u8OutCtrl_Addr */
-0x3E, 0x04, /*gPR_Active_720P_u8AEWinStartX_Addr */
-0x3F, 0x04, /*gPR_Active_720P_u8AEWinStartY_Addr */
-0x40, 0x66, /*gPR_Active_720P_u8MergedWinWidth_Addr */
-0x41, 0x5E, /*gPR_Active_720P_u8MergedWinHeight_Addr */
-0x42, 0x04, /*gPR_Active_720P_u8AEHistWinAx_Addr */
-0x43, 0x04, /*gPR_Active_720P_u8AEHistWinAy_Addr */
-0x44, 0x98, /*gPR_Active_720P_u8AEHistWinBx_Addr */
-0x45, 0x78, /*gPR_Active_720P_u8AEHistWinBy_Addr */
-0x46, 0x22, /*gPR_Active_720P_u8AWBTrim_Addr */
-0x47, 0x28, /*gPR_Active_720P_u8AWBCTWinAx_Addr */
-0x48, 0x20, /*gPR_Active_720P_u8AWBCTWinAy_Addr */
-0x49, 0x78, /*gPR_Active_720P_u8AWBCTWinBx_Addr */
-0x4A, 0x60, /*gPR_Active_720P_u8AWBCTWinBy_Addr */
-0x4B, 0x03, /*gPR_Active_720P_u16AFCFrameLength_0 */
-0x4C, 0x00, /*gPR_Active_720P_u16AFCFrameLength_1 */
-
-
-/* VGA PR */
-0xFF, 0x86, /*Page mode */
-0x2F, 0x05, /* gPT_u8PR_Active_VGA_WORD_COUNT_Addr0*/
-0x30, 0x00, /* gPT_u8PR_Active_VGA_WORD_COUNT_Addr1*/
-0x33, 0x04, /* gPT_u8PR_Active_VGA_DPHY_CLK_TIME_Addr3*/
-
-0xFF, 0x87, /*Page mode */
-0x4D, 0x00, /*gPR_Active_VGA_u8SensorCtrl_Addr*/
-0x4E, 0x72, /*gPR_Active_VGA_u8SensorMode_Addr*/
-0x4F, 0x01, /*gPR_Active_VGA_u8PLL_P_Addr*/
-0x50, 0x0F, /*gPR_Active_VGA_u8PLL_M_Addr*/
-0x51, 0x00, /*gPR_Active_VGA_u8PLL_S_Addr*/
-0x52, 0x00, /*gPR_Active_VGA_u8PLL_Ctrl_Addr*/
-0x53, 0x01, /*gPR_Active_VGA_u8src_clk_sel_Addr*/
-0x54, 0x00, /*gPR_Active_VGA_u8output_pad_status_Addr*/
-0x55, 0x3F, /*gPR_Active_VGA_u8ablk_ctrl_10_Addr*/
-0x56, 0xFF, /*gPR_Active_VGA_u8BayerFunc_Addr*/
-0x57, 0xFF, /*gPR_Active_VGA_u8RgbYcFunc_Addr*/
-0x58, 0x00, /*gPR_Active_VGA_u8ISPMode_Addr*/
-0x59, 0x02, /*gPR_Active_VGA_u8SCLCtrl_Addr*/
-0x5A, 0x01, /*gPR_Active_VGA_u8SCLHorScale_Addr0*/
-0x5B, 0xFF, /*gPR_Active_VGA_u8SCLHorScale_Addr1*/
-0x5C, 0x01, /*gPR_Active_VGA_u8SCLVerScale_Addr0*/
-0x5D, 0xFF, /*gPR_Active_VGA_u8SCLVerScale_Addr1*/
-0x5E, 0x00, /*gPR_Active_VGA_u8SCLCropStartX_Addr0*/
-0x5F, 0x00, /*gPR_Active_VGA_u8SCLCropStartX_Addr1*/
-0x60, 0x00, /*gPR_Active_VGA_u8SCLCropStartY_Addr0*/
-0x61, 0x20, /*gPR_Active_VGA_u8SCLCropStartY_Addr1*/
-0x62, 0x05, /*gPR_Active_VGA_u8SCLCropEndX_Addr0*/
-0x63, 0x00, /*gPR_Active_VGA_u8SCLCropEndX_Addr1*/
-0x64, 0x03, /*gPR_Active_VGA_u8SCLCropEndY_Addr0*/
-0x65, 0xE0, /*gPR_Active_VGA_u8SCLCropEndY_Addr1*/
-
-0xFF, 0xd1, /*Page mode */
-0x07, 0x00, /* power off mask clear*/
-0x0b, 0x00, /* clock off mask clear*/
-0xFF, 0xC0, /*Page mode */
-0x10, 0x41,
-
-/* Wifi VT-Call END of Initial*/
-};
-
-/***************************************************/
-/* CAMERA_PREVIEW - ÃÔ¿µ ÈÄ ÇÁ¸®ºä º¹±Í½Ã ¼ÂÆà */
-/***************************************************/
-
-static const u8 db8131m_preview[] = {
-0xff, 0x82,
-0x7F, 0x35,
-};
-
-/***************************************************/
-/* CAMERA_SNAPSHOT - ÃÔ¿µ */
-/***************************************************/
-static const u8 db8131m_capture[] = {
-0xff, 0x82,
-0x7F, 0x34,
-0xff, 0xC0,
-0x10, 0x03,
-};
-/*Wait 150ms*/
-/* capture ½ÇÇà*/
-
-/***************************************************/
-/* CAMERA_RECORDING WITH 25fps */
-/***************************************************/
-
-static const u8 db8131m_recording_60Hz_common[] = {
-/***************************************************/
-/* Device : DB8131M */
-/* MIPI Interface for Noncontious Clock */
-/***************************************************/
-
-/* Recording Anti-Flicker 60Hz END of Initial */
-0xFF, 0x87,
-0xDE, 0x7A, /*gPR_Active_720P_u8SensorMode_Addr */
-0xFF, 0xC0, /* Page mode*/
-0x10, 0x42, /* Preview Command*/
-
-/* Fixed 25fps Mode*/
-0xFF, 0x82, /* Page mode*/
-0x91, 0x02, /* AeMode*/
-0xFF, 0x83, /* Page mode*/
-0x0B, 0x02, /* Frame Rate*/
-0x0C, 0x94, /* Frame Rate*/
-0x03, 0x04, /* TimeMax60Hz*/
-0x04, 0x03, /* Time3Lux60Hz*/
-0x05, 0x02, /* Time2Lut60Hz*/
-0x06, 0x01, /* Time1Lut60Hz*/
-0xFF, 0x82, /* Page mode*/
-0x92, 0x5D,
-};
-
-
-static const u8 db8131m_stream_stop[] = {
-
-};
-
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_1 (1/9) M4 */
-/***************************************************/
-static const u8 db8131m_bright_m4[] = {
-/* Brightness -4 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0xE0, /* Brightness*/
-};
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_2 (2/9) M3 */
-/***************************************************/
-
-static const u8 db8131m_bright_m3[] = {
-/* Brightness -3 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0xE8, /* Brightness*/
-};
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_3 (3/9) M2 */
-/***************************************************/
-static const u8 db8131m_bright_m2[] = {
-/* Brightness -2 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0xF0, /* Brightness*/
-};
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_4 (4/9) M1 */
-/***************************************************/
-
-static const u8 db8131m_bright_m1[] = {
-/* Brightness -1 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0xF8, /* Brightness*/
-};
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_5 (5/9) Default */
-/***************************************************/
-static const u8 db8131m_bright_default[] = {
-/* Brightness 0 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0x00, /* Brightness*/
-};
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_6 (6/9) P1 */
-/***************************************************/
-static const u8 db8131m_bright_p1[] = {
-/* Brightness +1 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0x08, /* Brightness*/
-};
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_7 (7/9) P2 */
-/***************************************************/
-static const u8 db8131m_bright_p2[] = {
-/* Brightness +2 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0x10, /* Brightness*/
-};
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_8 (8/9) P3 */
-/***************************************************/
-static const u8 db8131m_bright_p3[] = {
-/* Brightness +3 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0x18, /* Brightness*/
-};
-
-/***************************************************/
-/* CAMERA_BRIGHTNESS_9 (9/9) P4 */
-/***************************************************/
-static const u8 db8131m_bright_p4[] = {
-/* Brightness +4 */
-0xFF, 0x87, /* Page mode*/
-0xAE, 0x20, /* Brightness*/
-};
-
-
-static const u8 db8131m_vt_7fps[] = {
-/* Fixed 7fps Mode*/
-0xFF, 0x82, /* Page mode*/
-0x91, 0x02, /* AeMode*/
-0xFF, 0x83, /* Page mode*/
-0x0B, 0x09, /* Frame Rate*/
-0x0C, 0x33, /* Frame Rate*/
-0x03, 0x0F, /* TimeMax60Hz*/
-0x04, 0x0A, /* Time3Lux60Hz*/
-0x05, 0x06, /* Time2Lut60Hz*/
-0x06, 0x04, /* Time1Lut60Hz*/
-0xFF, 0x82, /* Page mode*/
-0x92, 0x5D,
-};
-
-static const u8 db8131m_vt_10fps[] = {
-/* Fixed 10fps Mode */
-0xFF, 0x82, /* Page mode*/
-0x91, 0x02, /* AeMode*/
-0xFF, 0x83, /* Page mode*/
-0x0B, 0x06, /* Frame Rate*/
-0x0C, 0x70, /* Frame Rate*/
-0x03, 0x0A, /* TimeMax60Hz*/
-0x04, 0x08, /* Time3Lux60Hz*/
-0x05, 0x06, /* Time2Lut60Hz*/
-0x06, 0x04, /* Time1Lut60Hz*/
-0xFF, 0x82, /* Page mode*/
-0x92, 0x5D,
-
-};
-
-static const u8 db8131m_vt_12fps[] = {
-/* Fixed 12fps Mode */
-0xFF, 0x82, /* Page mode*/
-0x91, 0x02, /* AeMode*/
-0xFF, 0x83, /* Page mode*/
-0x0B, 0x05, /* Frame Rate*/
-0x0C, 0x5E, /* Frame Rate*/
-0x03, 0x0C, /* TimeMax60Hz*/
-0x04, 0x0A, /* Time3Lux60Hz*/
-0x05, 0x06, /* Time2Lut60Hz*/
-0x06, 0x04, /* Time1Lut60Hz*/
-0xFF, 0x82, /* Page mode*/
-0x92, 0x5D,
-};
-
-static const u8 db8131m_vt_15fps[] = {
-/* Fixed 15fps Mode */
-0xFF, 0x82, /* Page mode*/
-0x91, 0x02, /* AeMode*/
-0xFF, 0x83, /* Page mode*/
-0x0B, 0x04, /* Frame Rate*/
-0x0C, 0x4C, /* Frame Rate*/
-0x03, 0x08, /* TimeMax60Hz*/
-0x04, 0x06, /* Time3Lux60Hz*/
-0x05, 0x04, /* Time2Lut60Hz*/
-0x06, 0x04, /* Time1Lut60Hz*/
-0xFF, 0x82, /* Page mode*/
-0x92, 0x5D,
-
-};
-
-/***************************************************/
-/* CAMERA_DTP_ON */
-/***************************************************/
-static const u8 db8131m_pattern_on[] = {
-0xFF, 0x87, /* Page mode*/
-0xAB, 0x00, /* BayerFunc*/
-0xAC, 0x28, /* RGBYcFunc*/
-0xFF, 0xA0, /* Page mode*/
-0x02, 0x05, /* TPG ? Gamma*/
-
-};
-
-/***************************************************/
-/* CAMERA_DTP_OFF */
-/***************************************************/
-static const u8 db8131m_pattern_off[] = {
-0xFF, 0x87, /* Page mode*/
-0xAB, 0xFF, /* BayerFunc*/
-0xAC, 0xFF, /* RGBYcFunc*/
-0xFF, 0xA0, /* Page mode*/
-0x02, 0x00, /* TPG Disable*/
-
-};
-#endif /* __DB8131M_SETFILE_H */
diff --git a/drivers/media/video/slp_s5c73m3.c b/drivers/media/video/slp_s5c73m3.c
deleted file mode 100644
index 08726d2..0000000
--- a/drivers/media/video/slp_s5c73m3.c
+++ /dev/null
@@ -1,3415 +0,0 @@
-/*
- * driver for LSI S5C73M3 (ISP for 8MP Camera)
- *
- * Copyright (c) 2011, Samsung Electronics. All rights reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * for more details.
- */
-
-#include <linux/i2c.h>
-#include <linux/init.h>
-#include <media/v4l2-device.h>
-#include <linux/delay.h>
-#include <linux/vmalloc.h>
-#include <linux/firmware.h>
-#include <linux/videodev2.h>
-
-#include <plat/gpio-cfg.h>
-#include <linux/gpio.h>
-
-#ifdef CONFIG_BUSFREQ_OPP
-#include <mach/dev.h>
-#else
-#include <linux/pm_qos_params.h>
-#endif
-
-#ifdef CONFIG_VIDEO_SAMSUNG_V4L2
-#include <linux/videodev2_exynos_media.h>
-#include <linux/videodev2_exynos_camera.h>
-#endif
-
-#include <linux/regulator/machine.h>
-
-#include <media/s5c73m3_platform.h>
-#ifdef CONFIG_VIDEO_SLP_S5C73M3
-#include "slp_s5c73m3.h"
-#else
-#include "s5c73m3.h"
-#endif
-
-#define S5C73M3_DRIVER_NAME "S5C73M3"
-
-extern struct class *camera_class; /*sys/class/camera*/
-struct device *s5c73m3_dev; /*sys/class/camera/rear*/
-struct v4l2_subdev *sd_internal;
-
-#ifdef CONFIG_BUSFREQ_OPP
-struct device *bus_dev;
-#else
-static struct pm_qos_request_list entry = {};
-#endif
-
-/*#define S5C73M3_FROM_BOOTING*/
-
-#ifdef CONFIG_VIDEO_SLP_S5C73M3
-
-#define S5C73M3_FW_PATH "/lib/firmware/SlimISP.bin"
-#define S5C73M3_FW_GC_PATH "/lib/firmware/SlimISP_GC.bin"
-#define S5C73M3_FW_GD_PATH "/lib/firmware/SlimISP_GD.bin"
-#define S5C73M3_FW_GE_PATH "/lib/firmware/SlimISP_GE.bin"
-#define S5C73M3_FW_GF_PATH "/lib/firmware/SlimISP_GF.bin"
-#define S5C73M3_FW_ZC_PATH "/lib/firmware/SlimISP_ZC.bin"
-#define S5C73M3_FW_ZD_PATH "/lib/firmware/SlimISP_ZD.bin"
-#define S5C73M3_FW_ZE_PATH "/lib/firmware/SlimISP_ZE.bin"
-#define S5C73M3_FW_ZF_PATH "/lib/firmware/SlimISP_ZF.bin"
-#define S5C73M3_FW_ZG_PATH "/lib/firmware/SlimISP_ZG.bin"
-
-#else /* CONFIG_VIDEO_SLP_S5C73M3 */
-
-/* For Android */
-#define S5C73M3_FW_PATH "/sdcard/SlimISP.bin"
-
-#endif /* CONFIG_VIDEO_SLP_S5C73M3 */
-
-#define S5C73M3_FW_VER_LEN 6
-#define S5C73M3_FW_VER_FILE_CUR 0x60
-
-#define S5C73M3_FLASH_BASE_ADDR 0x10000000
-#define S5C73M3_INT_RAM_BASE_ADDR 0x68000000
-
-#define S5C73M3_I2C_RETRY 5
-#define S5C73M3_I2C_VERIFY 100
-#define S5C73M3_ISP_TIMEOUT 3000
-#define S5C73M3_ISP_AFB_TIMEOUT 15000 /* FIXME */
-#define S5C73M3_ISP_ESD_TIMEOUT 1000
-
-#define S5C73M3_JPEG_MAXSIZE 0x800000
-#define S5C73M3_YUV_MAXSIZE 0x3F4800 /*FHD*/
-#define S5C73M3_POINTER_MAXSIZE 0x10E0 /*FHD*/
-
-#define S5C73M3_DEF_APEX_DEN 100
-
-#define CHECK_ERR(x) if ((x) < 0) { \
- cam_err("i2c failed, err %d\n", x); \
- return x; \
- }
-static const struct s5c73m3_frmsizeenum preview_frmsizes[] = {
- { S5C73M3_PREVIEW_QVGA, 320, 240, 0x01 },
- { S5C73M3_PREVIEW_CIF, 352, 288, 0x0E },
- { S5C73M3_PREVIEW_VGA, 640, 480, 0x02 },
- { S5C73M3_PREVIEW_880X720, 880, 720, 0x03 },
- { S5C73M3_PREVIEW_960X720, 960, 720, 0x04 },
- { S5C73M3_PREVIEW_1008X672, 1008, 672, 0x0F },
- { S5C73M3_PREVIEW_1184X666, 1184, 666, 0x05 },
- { S5C73M3_PREVIEW_720P, 1280, 720, 0x06 },
- { S5C73M3_VDIS_720P, 1536, 864, 0x07 },
- { S5C73M3_PREVIEW_1080P, 1920, 1080, 0x0A},
- { S5C73M3_VDIS_1080P, 2304, 1296, 0x0C},
-};
-
-static const struct s5c73m3_frmsizeenum capture_frmsizes[] = {
- { S5C73M3_CAPTURE_VGA, 640, 480, 0x10 },
- { S5C73M3_CAPTURE_1024X768, 1024, 768, 0xD0 },
- { S5C73M3_CAPTURE_HD, 1280, 720, 0x40 },
- { S5C73M3_CAPTURE_2MP, 1600, 1200, 0x70 },
- { S5C73M3_CAPTURE_W2MP, 2048, 1152, 0x80 },
- { S5C73M3_CAPTURE_3MP, 2048, 1536, 0x90 },
- { S5C73M3_CAPTURE_W4MP, 2560, 1440, 0xA0 },
- { S5C73M3_CAPTURE_5MP, 2560, 1920, 0xB0 },
- { S5C73M3_CAPTURE_W6MP, 3264, 1836, 0xE0 },
- { S5C73M3_CAPTURE_3264X2176, 3264, 2176, 0xC0 },
- { S5C73M3_CAPTURE_8MP, 3264, 2448, 0xF0 },
-};
-
-static struct s5c73m3_control s5c73m3_ctrls[] = {
- /* Exposure & Scenemode stuff(ISO, Metering, Saturation, etc) */
- {
- .id = V4L2_CID_CAMERA_ISO,
- .minimum = ISO_AUTO,
- .maximum = ISO_800,
- .step = 1,
- .value = ISO_AUTO,
- .default_value = ISO_AUTO,
- }, {
- /* Capture */
- .id = V4L2_CID_CAM_JPEG_QUALITY,
- .minimum = 1,
- .maximum = 100,
- .step = 1,
- .value = 100,
- .default_value = 100,
- },
-#ifdef CONFIG_VIDEO_SLP_S5C73M3
- {
- /* Flash */
- .id = V4L2_CID_CAMERA_FLASH_MODE,
- .minimum = FLASH_MODE_OFF,
- .maximum = FLASH_MODE_MAX - 1,
- .step = 1,
- .value = FLASH_MODE_OFF,
- .default_value = FLASH_MODE_OFF,
- }, {
- .id = V4L2_CID_EXPOSURE,
- .minimum = EV_MINUS_4,
- .maximum = EV_MAX - 1,
- .step = 1,
- .value = EV_DEFAULT,
- .default_value = EV_DEFAULT,
- }, {
- .id = V4L2_CID_SATURATION,
- .minimum = SATURATION_MINUS_2,
- .maximum = SATURATION_MAX - 1,
- .step = 1,
- .value = SATURATION_DEFAULT,
- .default_value = SATURATION_DEFAULT,
- }, {
- .id = V4L2_CID_SHARPNESS,
- .minimum = SHARPNESS_MINUS_2,
- .maximum = SHARPNESS_MAX - 1,
- .step = 1,
- .value = SHARPNESS_DEFAULT,
- .default_value = SHARPNESS_DEFAULT,
- }, {
- .id = V4L2_CID_CAMERA_METERING,
- .minimum = METERING_MATRIX,
- .maximum = METERING_MAX - 1,
- .step = 1,
- .value = METERING_MATRIX,
- .default_value = METERING_MATRIX,
- }, {
- .id = V4L2_CID_WHITE_BALANCE_PRESET,
- .minimum = WHITE_BALANCE_AUTO,
- .maximum = WHITE_BALANCE_MAX - 1,
- .step = 1,
- .value = WHITE_BALANCE_AUTO,
- .default_value = WHITE_BALANCE_AUTO,
- }, {
- .id = V4L2_CID_COLORFX,
- .minimum = V4L2_COLORFX_NONE,
- .maximum = V4L2_COLORFX_VIVID,
- .step = 1,
- .value = V4L2_COLORFX_NONE,
- .default_value = V4L2_COLORFX_NONE,
- }, {
- .id = V4L2_CID_CAMERA_SCENE_MODE,
- .minimum = SCENE_MODE_NONE,
- .maximum = SCENE_MODE_MAX - 1,
- .step = 1,
- .value = SCENE_MODE_NONE,
- .default_value = SCENE_MODE_MAX,
- }, {
- /* Zoom */
- .id = V4L2_CID_ZOOM_ABSOLUTE,
- .minimum = ZOOM_LEVEL_0,
- .maximum = ZOOM_LEVEL_MAX - 1,
- .step = 1,
- .value = ZOOM_LEVEL_0,
- .default_value = ZOOM_LEVEL_0,
- }, {
- /* Focus */
- .id = V4L2_CID_FOCUS_AUTO_RECTANGLE_LEFT,
- .minimum = 0,
- .maximum = 4000, /* FIXME */
- .step = 1,
- .value = 0,
- .default_value = 0,
- }, {
- .id = V4L2_CID_FOCUS_AUTO_RECTANGLE_TOP,
- .minimum = 0,
- .maximum = 3000, /* FIXME */
- .step = 1,
- .value = 0,
- .default_value = 0,
- }, {
- .id = V4L2_CID_FOCUS_AUTO_RECTANGLE_WIDTH,
- .minimum = 0,
- .maximum = 4000, /* FIXME */
- .step = 1,
- .value = 0,
- .default_value = 0,
- }, {
- .id = V4L2_CID_FOCUS_AUTO_RECTANGLE_HEIGHT,
- .minimum = 0,
- .maximum = 3000, /* FIXME */
- .step = 1,
- .value = 0,
- .default_value = 0,
- }, {
- .id = V4L2_CID_CAMERA_FOCUS_MODE,
- .minimum = FOCUS_MODE_AUTO,
- .maximum = FOCUS_MODE_MAX,
- .step = 1,
- .value = FOCUS_MODE_AUTO,
- .default_value = FOCUS_MODE_AUTO,
- }, {
- .id = V4L2_CID_CAMERA_SET_AUTO_FOCUS,
- .minimum = 0,
- .maximum = 1,
- .step = 1,
- .value = 0,
- .default_value = 0,
- }, {
- .id = V4L2_CID_PHYSICAL_ROTATION,
- .minimum = IS_ROTATION_0,
- .maximum = IS_ROTATION_MAX - 1,
- .step = 1,
- .value = IS_ROTATION_90,
- .default_value = IS_ROTATION_90,
- },
-#else
- {
- .id = V4L2_CID_CAMERA_BRIGHTNESS,
- .minimum = EV_MINUS_4,
- .maximum = EV_MAX - 1,
- .step = 1,
- .value = EV_DEFAULT,
- .default_value = EV_DEFAULT,
- }, {
- .id = V4L2_CID_CAMERA_SATURATION,
- .minimum = SATURATION_MINUS_2,
- .maximum = SATURATION_MAX - 1,
- .step = 1,
- .value = SATURATION_DEFAULT,
- .default_value = SATURATION_DEFAULT,
- }, {
- .id = V4L2_CID_CAMERA_SHARPNESS,
- .minimum = SHARPNESS_MINUS_2,
- .maximum = SHARPNESS_MAX - 1,
- .step = 1,
- .value = SHARPNESS_DEFAULT,
- .default_value = SHARPNESS_DEFAULT,
- }, {
- /* Zoom */
- .id = V4L2_CID_CAMERA_ZOOM,
- .minimum = ZOOM_LEVEL_0,
- .maximum = ZOOM_LEVEL_MAX - 1,
- .step = 1,
- .value = ZOOM_LEVEL_0,
- .default_value = ZOOM_LEVEL_0,
- },
-#endif
-
-};
-
-static u8 sysfs_sensor_fw[10] = {0,};
-static u8 sysfs_phone_fw[10] = {0,};
-static u8 sysfs_sensor_type[15] = {0,};
-static u8 sysfs_isp_core[10] = {0,};
-
-static int s5c73m3_s_stream_sensor(struct v4l2_subdev *sd, int onoff);
-static int s5c73m3_set_touch_auto_focus(struct v4l2_subdev *sd);
-static int s5c73m3_SPI_booting(struct v4l2_subdev *sd);
-static int s5c73m3_get_af_cal_version(struct v4l2_subdev *sd);
-
-static inline struct s5c73m3_state *to_state(struct v4l2_subdev *sd)
-{
- return container_of(sd, struct s5c73m3_state, sd);
-}
-
-static int s5c73m3_i2c_write(struct v4l2_subdev *sd,
- unsigned short addr, unsigned short data)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- struct i2c_msg msg;
- unsigned char buf[4];
- int i, err;
-
- if (!client->adapter)
- return -ENODEV;
-
- msg.addr = client->addr;
- msg.flags = 0;
- msg.len = sizeof(buf);
- msg.buf = buf;
-
- buf[0] = addr >> 8;
- buf[1] = addr & 0xff;
- buf[2] = data >> 8;
- buf[3] = data & 0xff;
-
- cam_i2c_dbg("addr %#x, data %#x\n", addr, data);
-
- for (i = S5C73M3_I2C_RETRY; i; i--) {
- err = i2c_transfer(client->adapter, &msg, 1);
- if (err == 1)
- break;
- msleep(20);
- }
-
- return err;
-}
-
-static int s5c73m3_i2c_write_block(struct v4l2_subdev *sd,
- const u32 regs[], int size)
-{
- int i, err = 0;
-
- for (i = 0; i < size; i++) {
- err = s5c73m3_i2c_write(sd, (regs[i]>>16), regs[i]);
- CHECK_ERR(err);
- }
-
- return err;
-}
-
-static int s5c73m3_i2c_read(struct v4l2_subdev *sd,
- unsigned short addr, unsigned short *data)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- struct i2c_msg msg;
- unsigned char buf[2];
- int i, err;
-
- if (!client->adapter)
- return -ENODEV;
-
- msg.addr = client->addr;
- msg.flags = 0;
- msg.len = sizeof(buf);
- msg.buf = buf;
-
- buf[0] = addr >> 8;
- buf[1] = addr & 0xff;
-
- for (i = S5C73M3_I2C_RETRY; i; i--) {
- err = i2c_transfer(client->adapter, &msg, 1);
- if (err == 1)
- break;
- msleep(20);
- }
-
- if (err != 1) {
- cam_err("addr %#x\n", addr);
- return err;
- }
-
- msg.flags = I2C_M_RD;
-
- for (i = S5C73M3_I2C_RETRY; i; i--) {
- err = i2c_transfer(client->adapter, &msg, 1);
- if (err == 1)
- break;
- msleep(20);
- }
-
- if (err != 1) {
- cam_err("addr %#x\n", addr);
- return err;
- }
-
- *data = ((buf[0] << 8) | buf[1]);
-
- return err;
-}
-
-static int s5c73m3_write(struct v4l2_subdev *sd,
- unsigned short addr1, unsigned short addr2, unsigned short data)
-{
- int err;
-
- err = s5c73m3_i2c_write(sd, 0x0050, addr1);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, addr2);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, data);
- CHECK_ERR(err);
-
- return err;
-}
-
-static int s5c73m3_read(struct v4l2_subdev *sd,
- unsigned short addr1, unsigned short addr2, unsigned short *data)
-{
- int err;
-
- err = s5c73m3_i2c_write(sd, 0xfcfc, 0x3310);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0058, addr1);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x005C, addr2);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_read(sd, 0x0F14, data);
- CHECK_ERR(err);
-
- return err;
-}
-
-static int s5c73m3_i2c_check_status(struct v4l2_subdev *sd)
-{
- int err = 0;
- int index = 0;
- u16 status = 0;
- u16 i2c_status = 0;
-
- do {
- err = s5c73m3_read(sd, 0x0009, 0x5080, &status);
- if (status == 0xffff)
- break;
- err = s5c73m3_read(sd, 0x0009, 0x599E, &i2c_status);
- if (i2c_status != 0)
- cam_dbg("i2c_status = %#x\n", i2c_status);
-
- index++;
- udelay(500);
- } while (index < 2000); /* 1 sec */
-
- cam_dbg("index : %d, status : %#x, i2c_stauts : %#x\n",
- index, status, i2c_status);
-
- if (index >= 2000)
- err = -1;
-
- return err;
-}
-
-static int s5c73m3_writeb_no_check_status(struct v4l2_subdev *sd,
- unsigned short addr, unsigned short data)
-{
- int err;
-
- err = s5c73m3_i2c_write(sd, 0x0050, 0x0009);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5000);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, addr);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, data);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5080);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0001);
- CHECK_ERR(err);
-
- return err;
-}
-
-static int s5c73m3_writeb(struct v4l2_subdev *sd,
- unsigned short addr, unsigned short data)
-{
- int err;
- err = s5c73m3_i2c_check_status(sd);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0050, 0x0009);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5000);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, addr);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, data);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5080);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0001);
- CHECK_ERR(err);
-
- return err;
-}
-
-static int s5c73m3_set_mode(struct v4l2_subdev *sd)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
- cam_trace("E\n");
-
- if (state->format_mode != V4L2_PIX_FMT_MODE_CAPTURE) {
- if (state->hdr_mode) {
- err = s5c73m3_writeb(sd, S5C73M3_IMG_OUTPUT,
- S5C73M3_HDR_OUTPUT);
- CHECK_ERR(err);
- cam_dbg("hdr ouput mode\n");
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_IMG_OUTPUT,
- S5C73M3_YUV_OUTPUT);
- CHECK_ERR(err);
- cam_dbg("yuv ouput mode\n");
- }
- } else {
- if (state->hybrid_mode) {
- err = s5c73m3_writeb(sd, S5C73M3_IMG_OUTPUT,
- S5C73M3_HYBRID_OUTPUT);
- CHECK_ERR(err);
- cam_dbg("hybrid ouput mode\n");
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_IMG_OUTPUT,
- S5C73M3_INTERLEAVED_OUTPUT);
- CHECK_ERR(err);
- cam_dbg("interleaved ouput mode\n");
- }
- }
-
- cam_trace("X\n");
- return 0;
-}
-
-/*
- * v4l2_subdev_core_ops
- */
-static int s5c73m3_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
-{
- int i;
-
- for (i = 0; i < ARRAY_SIZE(s5c73m3_ctrls); i++) {
- if (qc->id == s5c73m3_ctrls[i].id) {
- qc->maximum = s5c73m3_ctrls[i].maximum;
- qc->minimum = s5c73m3_ctrls[i].minimum;
- qc->step = s5c73m3_ctrls[i].step;
- qc->default_value = s5c73m3_ctrls[i].default_value;
- return 0;
- }
- }
-
- return -EINVAL;
-}
-
-#ifdef CONFIG_TARGET_LOCALE_KOR
-static int s5c73m3_set_antibanding(struct v4l2_subdev *sd, int val)
-{
- return 0;
-}
-#endif
-
-static int s5c73m3_set_af_softlanding(struct v4l2_subdev *sd)
-{
- int err = 0;
-
- cam_trace("E\n");
-
- err = s5c73m3_writeb(sd, S5C73M3_AF_SOFTLANDING,
- S5C73M3_AF_SOFTLANDING_ON);
- CHECK_ERR(err);
- cam_trace("X\n");
-
- return 0;
-}
-
-static int s5c73m3_dump_fw(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int s5c73m3_get_sensor_fw_version(struct v4l2_subdev *sd)
-{
- struct s5c73m3_state *state = to_state(sd);
- u16 read_val;
- u16 sensor_fw;
- u16 sensor_type;
- int i;
- int err = 0;
-
- /*ARM go*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFF);
- CHECK_ERR(err);
-
- udelay(400);
-
- /*Check boot done*/
- for (i = 0; i < 3; i++) {
- err = s5c73m3_read(sd, 0x3010, 0x0010, &read_val);
- CHECK_ERR(err);
-
- if (read_val == 0x0C)
- break;
-
- udelay(100);
- }
-
- if (read_val != 0x0C) {
- cam_err("boot fail, read_val %#x\n", read_val);
- return -1;
- }
-
- /*P,M,S and Boot Mode*/
- err = s5c73m3_write(sd, 0x3010, 0x0014, 0x2146);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3010, 0x0010, 0x230C);
- CHECK_ERR(err);
-
- udelay(200);
-
- /*Check SPI ready*/
- for (i = 0; i < 300; i++) {
- err = s5c73m3_read(sd, 0x3010, 0x0010, &read_val);
- CHECK_ERR(err);
-
- if (read_val == 0x230E)
- break;
-
- udelay(100);
- }
-
- if (read_val != 0x230E) {
- cam_err("SPI not ready, read_val %#x\n", read_val);
- return -1;
- }
-
- /*ARM reset*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFD);
- CHECK_ERR(err);
-
- /*remap*/
- err = s5c73m3_write(sd, 0x3010, 0x00A4, 0x0183);
- CHECK_ERR(err);
-
- /*ARM go again*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFF);
- CHECK_ERR(err);
-
- for (i = 0; i < 3; i++) {
- err = s5c73m3_read(sd, 0x0000, 0x0060+i*2, &sensor_fw);
- CHECK_ERR(err);
- state->sensor_fw[i*2] = sensor_fw&0x00ff;
- state->sensor_fw[i*2+1] = (sensor_fw&0xff00)>>8;
- }
- state->sensor_fw[i*2+2] = ' ';
-
- for (i = 0; i < 6; i++) {
- err = s5c73m3_read(sd, 0x0000, 0x0066+i*2, &sensor_type);
- CHECK_ERR(err);
- state->sensor_type[i*2] = sensor_type&0x00ff;
- state->sensor_type[i*2+1] = (sensor_type&0xff00)>>8;
- }
- state->sensor_type[i*2+2] = ' ';
-
- memcpy(sysfs_sensor_fw, state->sensor_fw,
- sizeof(state->sensor_fw));
- memcpy(sysfs_sensor_type, state->sensor_type,
- sizeof(state->sensor_type));
-
- cam_dbg("Sensor_version = %s, Sensor_Type = %s\n",
- state->sensor_fw, state->sensor_type);
-
- if ((state->sensor_fw[0] < 'A') || state->sensor_fw[0] > 'Z') {
- cam_dbg("Sensor Version is invalid data\n");
- err = -1;
- }
- return err;
-}
-
-
-static int s5c73m3_get_phone_fw_version(struct v4l2_subdev *sd)
-{
- struct device *dev = sd->v4l2_dev->dev;
- struct s5c73m3_state *state = to_state(sd);
- const struct firmware *fw = {0, };
- char fw_path[20] = {0,};
- u8 *buf = NULL;
- int err = 0;
-
- struct file *fp;
- mm_segment_t old_fs;
- long nread;
- int fw_requested = 1;
-
- buf = vmalloc(S5C73M3_FW_VER_LEN+1);
- if (!buf) {
- cam_err("failed to allocate memory\n");
- err = -ENOMEM;
- goto out;
- }
-
- old_fs = get_fs();
- set_fs(KERNEL_DS);
-
- fp = filp_open(S5C73M3_FW_PATH, O_RDONLY, 0);
- if (IS_ERR(fp)) {
- cam_trace("failed to open %s, err %ld\n",
- S5C73M3_FW_PATH, PTR_ERR(fp));
- goto request_fw;
- }
-
- fw_requested = 0;
- err = vfs_llseek(fp, S5C73M3_FW_VER_FILE_CUR, SEEK_SET);
- if (err < 0) {
- cam_warn("failed to fseek, %d\n", err);
- goto out;
- }
-
- nread = vfs_read(fp, (char __user *)buf,
- S5C73M3_FW_VER_LEN,
- &fp->f_pos);
-
- if (nread != S5C73M3_FW_VER_LEN) {
- cam_err("failed to read firmware file, %ld Bytes\n", nread);
- err = -EIO;
- goto out;
- }
-
-request_fw:
- if (fw_requested) {
- set_fs(old_fs);
-
- if (state->sensor_fw[0] == 'O') {
- sprintf(fw_path, "SlimISP_G%c.bin",
- state->sensor_fw[1]);
- } else if (state->sensor_fw[0] == 'S') {
- sprintf(fw_path, "SlimISP_Z%c.bin",
- state->sensor_fw[1]);
- } else {
- sprintf(fw_path, "SlimISP_%c%c.bin",
- state->sensor_fw[0],
- state->sensor_fw[1]);
- }
- cam_dbg("file_name = %s\n", fw_path);
-
- err = request_firmware(&fw, fw_path, dev);
- if (err != 0) {
- cam_err("request_firmware falied\n");
- err = -EINVAL;
- goto out;
- }
-
- memcpy(buf, (u8 *)&fw->data[S5C73M3_FW_VER_FILE_CUR],
- S5C73M3_FW_VER_LEN);
-
- }
-
- memcpy(state->phone_fw, buf, S5C73M3_FW_VER_LEN);
- state->phone_fw[S5C73M3_FW_VER_LEN+1] = ' ';
-
- memcpy(sysfs_phone_fw, state->phone_fw, sizeof(state->phone_fw));
- cam_dbg("Phone_version = %s\n", state->phone_fw);
-
- cam_dbg("end\n");
-
-out:
- if (!fw_requested) {
- vfree(buf);
-
- filp_close(fp, current->files);
- set_fs(old_fs);
- } else {
- release_firmware(fw);
- }
-
- return err;
-}
-
-static int s5c73m3_update_camerafw_to_FROM(struct v4l2_subdev *sd)
-{
- int err;
- int index = 0;
- u16 status = 0;
-
- do {
- /* stauts 0 : not ready ISP */
- if (status == 0) {
- err = s5c73m3_writeb(sd, 0x0906, 0x0000);
- CHECK_ERR(err);
- }
-
- err = s5c73m3_read(sd, 0x0009, 0x5906, &status);
- /* Success : 0x05, Fail : 0x07 , Progressing : 0xFFFF*/
- if (status == 0x0005 ||
- status == 0x0007)
- break;
-
- index++;
- msleep(20);
- } while (index < 500); /* 10 sec */
-
-
- if (status == 0x0007)
- return -1;
- else
- return 0;
-}
-
-static int s5c73m3_check_fw(struct v4l2_subdev *sd, int download)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
-
- if (download) {
- err = state->pdata->is_isp_reset();
- CHECK_ERR(err);
- }
-
- err = s5c73m3_get_sensor_fw_version(sd);
- err = s5c73m3_get_phone_fw_version(sd);
-
- if (state->phone_fw[0] == 'Z' || state->phone_fw[0] == 'G' ||
- state->phone_fw[0] == 'S' || state->phone_fw[0] == 'O') {
- err = state->pdata->is_isp_reset();
- CHECK_ERR(err);
-
- err = s5c73m3_SPI_booting(sd);
- CHECK_ERR(err);
-
- if (download) {
- err = s5c73m3_update_camerafw_to_FROM(sd);
- CHECK_ERR(err);
- }
- }
- s5c73m3_get_af_cal_version(sd);
- return 0;
-}
-
-static int s5c73m3_set_sensor_mode(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case SENSOR_CAMERA:
- err = s5c73m3_writeb(sd, S5C73M3_AE_MODE,
- S5C73M3_AUTO_MODE_AE_SET);
- CHECK_ERR(err);
- break;
-
- case SENSOR_MOVIE:
- err = s5c73m3_writeb(sd, S5C73M3_AE_MODE,
- S5C73M3_FIXED_30FPS);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = SENSOR_CAMERA;
- goto retry;
- }
- state->sensor_mode = val;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_flash(struct v4l2_subdev *sd, int val, int recording)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case FLASH_MODE_OFF:
- err = s5c73m3_writeb(sd, S5C73M3_FLASH_MODE,
- S5C73M3_FLASH_MODE_OFF);
- CHECK_ERR(err);
- err = s5c73m3_writeb(sd, S5C73M3_FLASH_TORCH,
- S5C73M3_FLASH_TORCH_OFF);
- CHECK_ERR(err);
- break;
-
- case FLASH_MODE_AUTO:
- err = s5c73m3_writeb(sd, S5C73M3_FLASH_TORCH,
- S5C73M3_FLASH_TORCH_OFF);
- CHECK_ERR(err);
- err = s5c73m3_writeb(sd, S5C73M3_FLASH_MODE,
- S5C73M3_FLASH_MODE_AUTO);
- CHECK_ERR(err);
- break;
-
- case FLASH_MODE_ON:
- err = s5c73m3_writeb(sd, S5C73M3_FLASH_TORCH,
- S5C73M3_FLASH_TORCH_OFF);
- CHECK_ERR(err);
- err = s5c73m3_writeb(sd, S5C73M3_FLASH_MODE,
- S5C73M3_FLASH_MODE_ON);
- CHECK_ERR(err);
- break;
-
- case FLASH_MODE_TORCH:
- err = s5c73m3_writeb(sd, S5C73M3_FLASH_MODE,
- S5C73M3_FLASH_MODE_OFF);
- CHECK_ERR(err);
- err = s5c73m3_writeb(sd, S5C73M3_FLASH_TORCH,
- S5C73M3_FLASH_TORCH_ON);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = FLASH_MODE_OFF;
- goto retry;
- }
- state->flash_mode = val;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_iso(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- int err;
- struct s5c73m3_state *state = to_state(sd);
- cam_dbg("E, value %d\n", ctrl->value);
-
-retry:
- switch (ctrl->value) {
- case ISO_AUTO:
- err = s5c73m3_writeb(sd, S5C73M3_ISO,
- S5C73M3_ISO_AUTO);
- CHECK_ERR(err);
- break;
-
- case ISO_50:
- case ISO_100:
- err = s5c73m3_writeb(sd, S5C73M3_ISO,
- S5C73M3_ISO_100);
- CHECK_ERR(err);
- break;
-
- case ISO_200:
- err = s5c73m3_writeb(sd, S5C73M3_ISO,
- S5C73M3_ISO_200);
- CHECK_ERR(err);
- break;
-
- case ISO_400:
- err = s5c73m3_writeb(sd, S5C73M3_ISO,
- S5C73M3_ISO_400);
- CHECK_ERR(err);
- break;
-
- case ISO_800:
- err = s5c73m3_writeb(sd, S5C73M3_ISO,
- S5C73M3_ISO_800);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", ctrl->value);
- ctrl->value = ISO_AUTO;
- goto retry;
- }
-
- state->exif.iso = ctrl->value;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_metering(struct v4l2_subdev *sd, int val)
-{
- int err;
- struct s5c73m3_state *state = to_state(sd);
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case METERING_CENTER:
- err = s5c73m3_writeb(sd, S5C73M3_METER,
- S5C73M3_METER_CENTER);
- CHECK_ERR(err);
- break;
-
- case METERING_SPOT:
- err = s5c73m3_writeb(sd, S5C73M3_METER,
- S5C73M3_METER_SPOT);
- CHECK_ERR(err);
- break;
-
- case METERING_MATRIX:
- err = s5c73m3_writeb(sd, S5C73M3_METER,
- S5C73M3_METER_AVERAGE);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = METERING_CENTER;
- goto retry;
- }
-
- state->exif.metering = val;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_exposure(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- int err;
- struct s5c73m3_state *state = to_state(sd);
- cam_dbg("E, value %d\n", ctrl->value);
-
- if (ctrl->value < -4 || ctrl->value > 4) {
- cam_warn("invalid value, %d\n", ctrl->value);
- ctrl->value = 0;
- }
- err = s5c73m3_writeb(sd, S5C73M3_EV,
- ctrl->value + 4);
- CHECK_ERR(err);
-
- state->exif.bv = ctrl->value;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_contrast(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- int err;
- int contrast = 0;
- cam_dbg("E, value %d\n", ctrl->value);
-
- if (ctrl->value < -2 || ctrl->value > 2) {
- cam_warn("invalid value, %d\n", ctrl->value);
- ctrl->value = 0;
- }
- if (ctrl->value < 0)
- contrast = (ctrl->value * (-1)) + 2;
- else
- contrast = ctrl->value;
- err = s5c73m3_writeb(sd, S5C73M3_CONTRAST,
- contrast);
- CHECK_ERR(err);
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_whitebalance(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case WHITE_BALANCE_AUTO:
- err = s5c73m3_writeb(sd, S5C73M3_AWB_MODE,
- S5C73M3_AWB_MODE_AUTO);
- CHECK_ERR(err);
- break;
-
- case WHITE_BALANCE_SUNNY:
- err = s5c73m3_writeb(sd, S5C73M3_AWB_MODE,
- S5C73M3_AWB_MODE_DAYLIGHT);
- CHECK_ERR(err);
- break;
-
- case WHITE_BALANCE_CLOUDY:
- err = s5c73m3_writeb(sd, S5C73M3_AWB_MODE,
- S5C73M3_AWB_MODE_CLOUDY);
- CHECK_ERR(err);
- break;
-
- case WHITE_BALANCE_TUNGSTEN:
- err = s5c73m3_writeb(sd, S5C73M3_AWB_MODE,
- S5C73M3_AWB_MODE_INCANDESCENT);
- CHECK_ERR(err);
- break;
-
- case WHITE_BALANCE_FLUORESCENT:
- err = s5c73m3_writeb(sd, S5C73M3_AWB_MODE,
- S5C73M3_AWB_MODE_FLUORESCENT1);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = WHITE_BALANCE_AUTO;
- goto retry;
- }
-
- state->wb_mode = val;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_sharpness(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct s5c73m3_state *state = to_state(sd);
- cam_dbg("E, value %d\n", ctrl->value);
-
- cam_err("Sharpness control is not supported\n");
-
- state->exif.sharpness = ctrl->value;
-
- return 0;
-}
-
-static int s5c73m3_set_saturation(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct s5c73m3_state *state = to_state(sd);
- cam_dbg("E, value %d\n", ctrl->value);
-
- cam_err("Saturation control is not supported\n");
-
- state->exif.saturation = ctrl->value;
-
- return 0;
-}
-
-static int s5c73m3_set_scene_mode(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case SCENE_MODE_NONE:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_NONE);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_PORTRAIT:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_PORTRAIT);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_LANDSCAPE:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_LANDSCAPE);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_SPORTS:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_SPORTS);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_PARTY_INDOOR:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_INDOOR);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_BEACH_SNOW:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_BEACH);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_SUNSET:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_SUNSET);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_DUSK_DAWN:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_DAWN);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_FALL_COLOR:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_FALL);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_NIGHTSHOT:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_NIGHT);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_BACK_LIGHT:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_AGAINSTLIGHT);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_FIREWORKS:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_FIRE);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_TEXT:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_TEXT);
- CHECK_ERR(err);
- break;
-
- case SCENE_MODE_CANDLE_LIGHT:
- err = s5c73m3_writeb(sd, S5C73M3_SCENE_MODE,
- S5C73M3_SCENE_MODE_CANDLE);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = SCENE_MODE_NONE;
- goto retry;
- }
-
- state->scene_mode = val;
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_capture_firework(struct v4l2_subdev *sd)
-{
- int err = 0;
-
- cam_dbg("E, capture_firework\n");
-
- err = s5c73m3_writeb(sd, S5C73M3_FIREWORK_CAPTURE, 0x0001);
- CHECK_ERR(err);
-
- return err;
-}
-
-static int s5c73m3_set_effect(struct v4l2_subdev *sd, int val)
-{
- int err;
- struct s5c73m3_state *state = to_state(sd);
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case IMAGE_EFFECT_NONE:
- err = s5c73m3_writeb(sd, S5C73M3_IMAGE_EFFECT,
- S5C73M3_IMAGE_EFFECT_NONE);
- CHECK_ERR(err);
- break;
-
- case IMAGE_EFFECT_SEPIA:
- err = s5c73m3_writeb(sd, S5C73M3_IMAGE_EFFECT,
- S5C73M3_IMAGE_EFFECT_SEPIA);
- CHECK_ERR(err);
- break;
-
- case IMAGE_EFFECT_BNW:
- err = s5c73m3_writeb(sd, S5C73M3_IMAGE_EFFECT,
- S5C73M3_IMAGE_EFFECT_MONO);
- CHECK_ERR(err);
- break;
-
- case IMAGE_EFFECT_NEGATIVE:
- err = s5c73m3_writeb(sd, S5C73M3_IMAGE_EFFECT,
- S5C73M3_IMAGE_EFFECT_NEGATIVE);
- CHECK_ERR(err);
- break;
-
- case IMAGE_EFFECT_AQUA:
- err = s5c73m3_writeb(sd, S5C73M3_IMAGE_EFFECT,
- S5C73M3_IMAGE_EFFECT_AQUA);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = IMAGE_EFFECT_NONE;
- goto retry;
- }
-
- state->exif.effect = val;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_wdr(struct v4l2_subdev *sd, int val)
-{
- int err;
- struct s5c73m3_state *state = to_state(sd);
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case WDR_OFF:
- err = s5c73m3_writeb(sd, S5C73M3_WDR,
- S5C73M3_WDR_OFF);
- CHECK_ERR(err);
- break;
-
- case WDR_ON:
- err = s5c73m3_writeb(sd, S5C73M3_WDR,
- S5C73M3_WDR_ON);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = WDR_OFF;
- goto retry;
- }
- state->exif.wdr = val;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_antishake(struct v4l2_subdev *sd, int val)
-{
- int err = 0;
- if (val) {
- err = s5c73m3_writeb(sd, S5C73M3_AE_MODE,
- S5C73M3_ANTI_SHAKE);
- CHECK_ERR(err);
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_AE_MODE,
- S5C73M3_AUTO_MODE_AE_SET);
- CHECK_ERR(err);
- }
- return err;
-}
-
-static int s5c73m3_set_face_beauty(struct v4l2_subdev *sd, int val)
-{
- return 0;
-}
-
-static int s5c73m3_set_ae_lock(struct v4l2_subdev *sd, int val)
-{
- int err;
-
- if (val)
- err = s5c73m3_writeb(sd, S5C73M3_AE_CON, S5C73M3_AE_STOP);
- else
- err = s5c73m3_writeb(sd, S5C73M3_AE_CON, S5C73M3_AE_START);
-
- CHECK_ERR(err);
-
- return err;
-}
-
-static int s5c73m3_set_awb_lock(struct v4l2_subdev *sd, int val)
-{
- int err;
-
- if (val)
- err = s5c73m3_writeb(sd, S5C73M3_AWB_CON, S5C73M3_AWB_STOP);
- else
- err = s5c73m3_writeb(sd, S5C73M3_AWB_CON, S5C73M3_AWB_START);
-
- CHECK_ERR(err);
-
- return err;
-}
-
-static int s5c73m3_set_ae_awb_lock(struct v4l2_subdev *sd, int val)
-{
- return 0;
-}
-
-static int s5c73m3_get_af_cal_version(struct v4l2_subdev *sd)
-{
- struct s5c73m3_state *state = to_state(sd);
- u16 status = 0;
- int err = 0;
-
- /* Calibration Device */
- err = s5c73m3_read(sd, 0x0009, 0x300C, &status);
- CHECK_ERR(err);
- state->cal_device = status;
-
- /* Calibration DLL Version */
- status = 0;
- err = s5c73m3_read(sd, 0x0009, 0x4FF8, &status);
- CHECK_ERR(err);
- state->cal_dll = status;
-
- cam_dbg("Cal_Device = 0x%x, Cal_DLL = 0x%x\n",
- state->cal_device, state->cal_dll);
-
- return 0;
-}
-
-static int s5c73m3_stop_af_lens(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
- cam_dbg("E, value\n");
-
- if (val == CAF_START) {
- if (state->focus.mode == FOCUS_MODE_CONTINOUS_VIDEO) {
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_MOVIE_CAF_START);
-
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_PREVIEW_CAF_START);
- }
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_AF_CON,
- S5C73M3_AF_CON_STOP);
- }
- CHECK_ERR(err);
-
- cam_dbg("X\n");
-
- return err;
-}
-
-static int s5c73m3_set_af(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err = 0;
-
- cam_info("%s, mode %#x\n", val ? "start" : "stop", state->focus.mode);
-
- state->focus.status = 0;
-
- if (val) {
- state->isflash = S5C73M3_ISNEED_FLASH_ON;
-
- if (state->focus.mode == FOCUS_MODE_TOUCH)
- err = s5c73m3_set_touch_auto_focus(sd);
- else
- err = s5c73m3_writeb(sd, S5C73M3_AF_CON,
- S5C73M3_AF_CON_START);
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_STILL_MAIN_FLASH
- , S5C73M3_STILL_MAIN_FLASH_CANCEL);
- err = s5c73m3_writeb(sd, S5C73M3_AF_CON,
- S5C73M3_AF_CON_STOP);
- state->isflash = S5C73M3_ISNEED_FLASH_UNDEFINED;
- }
-
- CHECK_ERR(err);
-
- cam_info("X\n");
- return err;
-}
-
-static int s5c73m3_get_pre_flash(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- int err = 0;
- u16 pre_flash = false;
-
- s5c73m3_read(sd, 0x0009, S5C73M3_STILL_PRE_FLASH | 0x5000, &pre_flash);
- ctrl->value = pre_flash;
- return err;
-}
-
-static int s5c73m3_get_af_result(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err = 0;
- u16 af_status = S5C73M3_AF_STATUS_UNFOCUSED;
- /*u16 temp_status = 0;*/
-
- err = s5c73m3_read(sd, 0x0009, S5C73M3_AF_STATUS, &af_status);
-
- /*err = s5c73m3_read(sd, 0x0009, 0x5840, &temp_status);*/
-
- switch (af_status) {
- case S5C73M3_AF_STATUS_FOCUSING:
- case S5C73M3_CAF_STATUS_FOCUSING:
- case S5C73M3_CAF_STATUS_FIND_SEARCHING_DIR:
- case S5C73M3_AF_STATUS_INVALID:
- ctrl->value = CAMERA_AF_STATUS_IN_PROGRESS;
- break;
-
- case S5C73M3_AF_STATUS_FOCUSED:
- case S5C73M3_CAF_STATUS_FOCUSED:
- ctrl->value = CAMERA_AF_STATUS_SUCCESS;
- break;
-
- case S5C73M3_CAF_STATUS_UNFOCUSED:
- case S5C73M3_AF_STATUS_UNFOCUSED:
- default:
- ctrl->value = CAMERA_AF_STATUS_FAIL;
- break;
- }
- state->focus.status = af_status;
-
- /*cam_dbg("af_status = %d, frame_cnt = %d\n",
- state->focus.status, temp_status);*/
- return err;
-}
-
-static int s5c73m3_set_af_mode(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case FOCUS_MODE_AUTO:
- case FOCUS_MODE_INFINITY:
- if (state->focus.mode != FOCUS_MODE_CONTINOUS_PICTURE) {
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_NORMAL);
- CHECK_ERR(err);
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_AF_CON,
- S5C73M3_AF_CON_STOP);
- CHECK_ERR(err);
- }
-
- state->focus.mode = val;
- state->caf_mode = S5C73M3_AF_MODE_NORMAL;
- break;
-
- case FOCUS_MODE_MACRO:
- if (state->focus.mode != FOCUS_MODE_CONTINOUS_PICTURE_MACRO) {
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_MACRO);
- CHECK_ERR(err);
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_AF_CON,
- S5C73M3_AF_CON_STOP);
- CHECK_ERR(err);
- }
-
- state->focus.mode = val;
- state->caf_mode = S5C73M3_AF_MODE_MACRO;
- break;
-
- case FOCUS_MODE_CONTINOUS_PICTURE:
- state->isflash = S5C73M3_ISNEED_FLASH_UNDEFINED;
-
- if (val != state->focus.mode &&
- state->caf_mode != S5C73M3_AF_MODE_NORMAL) {
- state->focus.mode = val;
-
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_NORMAL);
- CHECK_ERR(err);
- state->caf_mode = S5C73M3_AF_MODE_NORMAL;
- }
-
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_PREVIEW_CAF_START);
- CHECK_ERR(err);
- break;
-
- case FOCUS_MODE_CONTINOUS_PICTURE_MACRO:
- state->isflash = S5C73M3_ISNEED_FLASH_UNDEFINED;
- if (val != state->focus.mode &&
- state->caf_mode != S5C73M3_AF_MODE_MACRO) {
- state->focus.mode = val;
-
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_MACRO);
- state->caf_mode = S5C73M3_AF_MODE_MACRO;
- CHECK_ERR(err);
- }
-
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_PREVIEW_CAF_START);
- CHECK_ERR(err);
- break;
-
- case FOCUS_MODE_CONTINOUS_VIDEO:
- state->focus.mode = val;
-
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_MOVIE_CAF_START);
- CHECK_ERR(err);
- break;
-
- case FOCUS_MODE_FACEDETECT:
- state->focus.mode = val;
- break;
-
- case FOCUS_MODE_TOUCH:
- state->focus.mode = val;
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = FOCUS_MODE_AUTO;
- goto retry;
- }
-
- state->focus.mode = val;
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_touch_auto_focus(struct v4l2_subdev *sd)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
-
- cam_dbg("s5c73m3_set_touch_auto_focus\n");
-
-#ifdef CONFIG_VIDEO_SLP_S5C73M3
- cam_dbg("Rectangle Position(%d,%d,%d,%d)\n",
- state->focus.top, state->focus.left,
- state->focus.width, state->focus.height);
- state->focus.pos_x = state->focus.left + state->focus.width / 2;
- state->focus.pos_y = state->focus.top + state->focus.height / 2;
-#endif
- cam_dbg("Touch Position(%d,%d)\n",
- state->focus.pos_x, state->focus.pos_y);
- cam_dbg("Preview Size(%d,%d)\n",
- state->preview->width, state->preview->height);
-
- err = s5c73m3_i2c_write(sd, 0xfcfc, 0x3310);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0050, 0x0009);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, S5C73M3_AF_TOUCH_POSITION);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, state->focus.pos_x);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, state->focus.pos_y);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, state->preview->width);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, state->preview->height);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0050, 0x0009);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5000);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0E0A);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0000);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5080);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0001);
- CHECK_ERR(err);
-
- return 0;
-}
-
-static int s5c73m3_set_zoom(struct v4l2_subdev *sd, int value)
-{
- int err;
- cam_dbg("E, value %d\n", value);
-
-retry:
- if (value < 0 || value > 30) {
- cam_warn("invalid value, %d\n", value);
- value = 0;
- goto retry;
- }
- err = s5c73m3_writeb_no_check_status(sd, S5C73M3_ZOOM_STEP,
- value);
- CHECK_ERR(err);
- mdelay(10);
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_set_jpeg_quality(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- int val = ctrl->value, err;
- cam_dbg("E, value %d\n", val);
-
- if (val <= 65) /* Normal */
- err = s5c73m3_writeb(sd, S5C73M3_IMAGE_QUALITY,
- S5C73M3_IMAGE_QUALITY_NORMAL);
- else if (val <= 75) /* Fine */
- err = s5c73m3_writeb(sd, S5C73M3_IMAGE_QUALITY,
- S5C73M3_IMAGE_QUALITY_FINE);
- else /* Superfine */
- err = s5c73m3_writeb(sd, S5C73M3_IMAGE_QUALITY,
- S5C73M3_IMAGE_QUALITY_SUPERFINE);
-
- CHECK_ERR(err);
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_get_exif(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int s5c73m3_aeawb_lock_unlock(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err = 0;
- int ae_lock = val & 0x1;
- int awb_lock = (val & 0x2) >> 1;
- int ae_lock_changed =
- ~(ae_lock & state->ae_lock) & (ae_lock | state->ae_lock);
- int awb_lock_changed =
- ~(awb_lock & state->awb_lock) & (awb_lock | state->awb_lock);
-
- if (ae_lock_changed) {
- cam_dbg("ae lock - %s\n", ae_lock ? "true" : "false");
- err = s5c73m3_writeb(sd, S5C73M3_AE_CON,
- ae_lock ? S5C73M3_AE_STOP : S5C73M3_AE_START);
- CHECK_ERR(err);
- state->ae_lock = ae_lock;
- }
- if (awb_lock_changed &&
- state->wb_mode == WHITE_BALANCE_AUTO) {
- cam_dbg("awb lock - %s\n", awb_lock ? "true" : "false");
- err = s5c73m3_writeb(sd, S5C73M3_AWB_CON,
- awb_lock ? S5C73M3_AWB_STOP : S5C73M3_AWB_START);
- CHECK_ERR(err);
- state->awb_lock = awb_lock;
- }
-
- return 0;
-}
-
-static int s5c73m3_start_capture(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err = 0;
- u16 isneed_flash = false;
- u16 pre_flash = false;
-
- s5c73m3_read(sd, 0x0009, S5C73M3_STILL_PRE_FLASH | 0x5000, &pre_flash);
-
- if (state->flash_mode == FLASH_MODE_ON) {
- if (!pre_flash) {
- err = s5c73m3_writeb(sd, S5C73M3_STILL_PRE_FLASH
- , S5C73M3_STILL_PRE_FLASH_FIRE);
- msleep(100);
- }
- err = s5c73m3_writeb(sd, S5C73M3_STILL_MAIN_FLASH
- , S5C73M3_STILL_MAIN_FLASH_FIRE);
- } else if (state->flash_mode == FLASH_MODE_AUTO) {
- if (pre_flash) {
- err = s5c73m3_writeb(sd, S5C73M3_STILL_MAIN_FLASH
- , S5C73M3_STILL_MAIN_FLASH_FIRE);
- } else if (state->isflash != S5C73M3_ISNEED_FLASH_ON) {
- err = s5c73m3_read(sd, 0x0009,
- S5C73M3_AE_ISNEEDFLASH | 0x5000, &isneed_flash);
- if (isneed_flash) {
- err = s5c73m3_writeb(sd, S5C73M3_STILL_PRE_FLASH
- , S5C73M3_STILL_PRE_FLASH_FIRE);
- msleep(100);
- err = s5c73m3_writeb(sd,
- S5C73M3_STILL_MAIN_FLASH,
- S5C73M3_STILL_MAIN_FLASH_FIRE);
- }
- }
- }
-
- state->isflash = S5C73M3_ISNEED_FLASH_UNDEFINED;
-
- return 0;
-}
-
-static int s5c73m3_set_auto_bracket_mode(struct v4l2_subdev *sd)
-{
- int err = 0;
-
- err = s5c73m3_writeb(sd, S5C73M3_AE_AUTO_BRAKET,
- S5C73M3_AE_AUTO_BRAKET_EV20);
- CHECK_ERR(err);
-
- return err;
-}
-
-static int s5c73m3_check_dataline(struct v4l2_subdev *sd, int val)
-{
- return 0;
-}
-
-static int s5c73m3_check_esd(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int s5c73m3_set_frame_rate(struct v4l2_subdev *sd, int fps)
-{
- int err = 0;
- struct s5c73m3_state *state = to_state(sd);
-
- if (!state->stream_enable) {
- state->fps = fps;
- return 0;
- }
-
- switch (fps) {
- case 30:
- err = s5c73m3_writeb(sd, S5C73M3_AE_MODE,
- S5C73M3_FIXED_30FPS); /* 30fps */
- break;
- case 20:
- err = s5c73m3_writeb(sd, S5C73M3_AE_MODE,
- S5C73M3_FIXED_20FPS); /* 20fps */
- break;
- case 15:
- err = s5c73m3_writeb(sd, S5C73M3_AE_MODE,
- S5C73M3_FIXED_15FPS); /* 15fps */
- break;
- default:
- err = s5c73m3_writeb(sd, S5C73M3_AE_MODE,
- S5C73M3_AUTO_MODE_AE_SET); /* auto */
- break;
- }
- return err;
-}
-
-static int s5c73m3_set_face_zoom(struct v4l2_subdev *sd, int val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
-
- cam_dbg("s5c73m3_set_face_zoom\n");
-#ifdef CONFIG_VIDEO_SLP_S5C73M3
- cam_dbg("Rectangle Position(%d,%d,%d,%d)\n",
- state->focus.top, state->focus.left,
- state->focus.width, state->focus.height);
- state->focus.pos_x = state->focus.left + state->focus.width / 2;
- state->focus.pos_y = state->focus.top + state->focus.height / 2;
-#endif
- cam_dbg("Touch Position(%d,%d)\n",
- state->focus.pos_x, state->focus.pos_y);
- cam_dbg("Preview Size(%d,%d)\n",
- state->preview->width, state->preview->height);
-
- err = s5c73m3_i2c_write(sd, 0xfcfc, 0x3310);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0050, 0x0009);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, S5C73M3_AF_TOUCH_POSITION);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, state->focus.pos_x);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, state->focus.pos_y);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, state->preview->width);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, state->preview->height);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0050, 0x0009);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5000);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, S5C73M3_AF_FACE_ZOOM);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, val); /*0:reset, 1:Start*/
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5080);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0001);
- CHECK_ERR(err);
-
- return 0;
-}
-
-
-static int s5c73m3_set_face_detection(struct v4l2_subdev *sd, int val)
-{
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case FACE_DETECTION_ON:
- err = s5c73m3_writeb(sd, S5C73M3_FACE_DET,
- S5C73M3_FACE_DET_ON);
- CHECK_ERR(err);
-
- err = s5c73m3_writeb(sd, S5C73M3_AF_MODE,
- S5C73M3_AF_MODE_PREVIEW_CAF_START);
- CHECK_ERR(err);
-
- break;
-
- case FACE_DETECTION_OFF:
- err = s5c73m3_writeb(sd, S5C73M3_FACE_DET,
- S5C73M3_FACE_DET_OFF);
- CHECK_ERR(err);
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = FACE_DETECTION_OFF;
- goto retry;
- }
-
- cam_trace("X\n");
- return 0;
-
-}
-
-static int s5c73m3_set_hybrid_capture(struct v4l2_subdev *sd)
-{
- int err;
- cam_trace("E\n");
-
- err = s5c73m3_writeb(sd, S5C73M3_HYBRID_CAPTURE, 1);
-
- CHECK_ERR(err);
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err = 0;
-
- if (unlikely(state->isp.bad_fw && ctrl->id != V4L2_CID_CAM_UPDATE_FW)) {
- cam_err("\"Unknown\" state, please update F/W");
- return -ENOSYS;
- }
-
- switch (ctrl->id) {
- case V4L2_CID_CAMERA_FRAME_RATE:
- err = s5c73m3_set_frame_rate(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_FACE_DETECTION:
- err = s5c73m3_set_face_detection(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_FACE_ZOOM:
- err = s5c73m3_set_face_zoom(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAM_UPDATE_FW:
- if (ctrl->value == FW_MODE_DUMP)
- err = s5c73m3_dump_fw(sd);
- else if (ctrl->value == FW_MODE_UPDATE)
- err = s5c73m3_check_fw(sd, 1);
- else
- err = 0;
- break;
-
- case V4L2_CID_CAMERA_SENSOR_MODE:
- err = s5c73m3_set_sensor_mode(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_FLASH_MODE:
- err = s5c73m3_set_flash(sd, ctrl->value, 0);
- break;
-
- case V4L2_CID_CAMERA_ISO:
- err = s5c73m3_set_iso(sd, ctrl);
- break;
-
- case V4L2_CID_CAMERA_METERING:
- if (state->sensor_mode == SENSOR_CAMERA)
- err = s5c73m3_set_metering(sd, ctrl->value);
- break;
-
- case V4L2_CID_EXPOSURE:
- ctrl->value -= 4;
- err = s5c73m3_set_exposure(sd, ctrl);
- break;
-
- case V4L2_CID_CAMERA_BRIGHTNESS:
- err = s5c73m3_set_exposure(sd, ctrl);
- break;
-
- case V4L2_CID_CAMERA_CONTRAST:
- err = s5c73m3_set_contrast(sd, ctrl);
- break;
-
- case V4L2_CID_WHITE_BALANCE_PRESET:
- err = s5c73m3_set_whitebalance(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_WHITE_BALANCE:
- err = s5c73m3_set_whitebalance(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_SCENE_MODE:
- err = s5c73m3_set_scene_mode(sd, ctrl->value);
- break;
-
- case V4L2_CID_COLORFX:
- err = s5c73m3_set_effect(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_EFFECT:
- err = s5c73m3_set_effect(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_WDR:
- err = s5c73m3_set_wdr(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_ANTI_SHAKE:
- err = s5c73m3_set_antishake(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_BEAUTY_SHOT:
- err = s5c73m3_set_face_beauty(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_DEFAULT_FOCUS_POSITION:
- /*err = s5c73m3_set_af_mode(sd, state->focus.mode);*/
- err = 0;
- break;
-
- case V4L2_CID_FOCUS_AUTO_MODE:
- err = s5c73m3_set_af_mode(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_FOCUS_MODE:
- err = s5c73m3_set_af_mode(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_SET_AUTO_FOCUS:
- err = s5c73m3_set_af(sd, ctrl->value);
- break;
-
- case V4L2_CID_FOCUS_AUTO_RECTANGLE_LEFT:
- state->focus.left = ctrl->value;
- break;
-
- case V4L2_CID_FOCUS_AUTO_RECTANGLE_TOP:
- state->focus.top = ctrl->value;
- break;
-
- case V4L2_CID_FOCUS_AUTO_RECTANGLE_WIDTH:
- state->focus.width = ctrl->value;
- break;
-
- case V4L2_CID_FOCUS_AUTO_RECTANGLE_HEIGHT:
- state->focus.height = ctrl->value;
- break;
-
- case V4L2_CID_CAMERA_OBJECT_POSITION_X:
- state->focus.pos_x = ctrl->value;
- break;
-
- case V4L2_CID_CAMERA_OBJECT_POSITION_Y:
- state->focus.pos_y = ctrl->value;
- break;
-
- case V4L2_CID_CAMERA_ZOOM:
- err = s5c73m3_set_zoom(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAM_JPEG_QUALITY:
- err = s5c73m3_set_jpeg_quality(sd, ctrl);
- break;
-
- case V4L2_CID_CAMERA_CAPTURE:
- err = s5c73m3_start_capture(sd, ctrl->value);
-
- if (state->scene_mode == SCENE_MODE_FIREWORKS)
- err = s5c73m3_capture_firework(sd);
- break;
-
- case V4L2_CID_CAMERA_HDR:
- state->hdr_mode = ctrl->value;
- err = 0;
- break;
-
- case V4L2_CID_CAMERA_HYBRID:
- state->hybrid_mode = ctrl->value;
- err = 0;
- break;
-
- case V4L2_CID_CAMERA_HYBRID_CAPTURE:
- err = s5c73m3_set_hybrid_capture(sd);
- break;
-
- case V4L2_CID_CAMERA_VT_MODE:
- state->vt_mode = ctrl->value;
- break;
-
- case V4L2_CID_CAMERA_CHECK_DATALINE:
- state->check_dataline = ctrl->value;
- break;
-
- case V4L2_CID_CAMERA_CHECK_ESD:
- err = s5c73m3_check_esd(sd);
- break;
-
- case V4L2_CID_CAMERA_JPEG_RESOLUTION:
- state->jpeg_width = (u32)ctrl->value >> 16;
- state->jpeg_height = (u32)ctrl->value & 0x0FFFF;
- break;
-
- case V4L2_CID_CAMERA_AEAWB_LOCK_UNLOCK:
- err = s5c73m3_aeawb_lock_unlock(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_CAF_START_STOP:
- err = s5c73m3_stop_af_lens(sd, ctrl->value);
- break;
-
- case V4L2_CID_SATURATION:
- err = s5c73m3_set_saturation(sd, ctrl);
- break;
-
- case V4L2_CID_SHARPNESS:
- err = s5c73m3_set_sharpness(sd, ctrl);
- break;
-
- default:
- if ((ctrl->id & 0xFFFF) <= 2000) {
- cam_err("no such control id(PRIVATE_BASE) %d, value %d\n",
- ctrl->id & 0xFFFF, ctrl->value);
- /*err = -ENOIOCTLCMD;*/
- } else if ((ctrl->id - V4L2_CID_BASE) <= 10000) {
- cam_err("no such control id(BASE_CID) %d\n",
- ctrl->id - V4L2_CID_BASE);
- } else {
- cam_err("no such control id(CAMERA_CLASS_BASE CID) %d\n",
- ctrl->id - V4L2_CID_CAMERA_CLASS_BASE);
- }
- err = 0;
- break;
- }
-
- if (err < 0 && err != -ENOIOCTLCMD)
- cam_err("failed, id %d, value %d\n",
- ctrl->id - V4L2_CID_PRIVATE_BASE, ctrl->value);
- return err;
-}
-
-static int s5c73m3_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err = 0;
-
- switch (ctrl->id) {
- case V4L2_CID_CAMERA_CAPTURE:
- err = s5c73m3_get_pre_flash(sd, ctrl);
- break;
- case V4L2_CID_CAMERA_AUTO_FOCUS_RESULT:
- err = s5c73m3_get_af_result(sd, ctrl);
- break;
-
- case V4L2_CID_CAM_JPEG_MEMSIZE:
- ctrl->value = 0xA00000;
- break;
-
- case V4L2_CID_CAM_JPEG_MAIN_SIZE:
- ctrl->value = state->jpeg.main_size;
- break;
-
- case V4L2_CID_CAM_JPEG_MAIN_OFFSET:
- ctrl->value = state->jpeg.main_offset;
- break;
-
- case V4L2_CID_CAM_JPEG_THUMB_SIZE:
- ctrl->value = state->jpeg.thumb_size;
- break;
-
- case V4L2_CID_CAM_JPEG_THUMB_OFFSET:
- ctrl->value = state->jpeg.thumb_offset;
- break;
-
- case V4L2_CID_CAM_JPEG_POSTVIEW_OFFSET:
- ctrl->value = state->jpeg.postview_offset;
- break;
-
- case V4L2_CID_CAMERA_EXIF_FLASH:
- ctrl->value = state->exif.flash;
- break;
-
- case V4L2_CID_CAMERA_ISO:
- ctrl->value = state->exif.iso;
- break;
-
- case V4L2_CID_CAMERA_EXIF_ISO:
- ctrl->value = state->exif.iso;
- break;
-
- case V4L2_CID_CAMERA_EXIF_TV:
- ctrl->value = state->exif.tv;
- break;
-
- case V4L2_CID_CAMERA_EXIF_BV:
- ctrl->value = state->exif.bv;
- break;
-
- case V4L2_CID_CAMERA_EXIF_EBV:
- ctrl->value = state->exif.ebv;
- break;
-
- case V4L2_CID_WHITE_BALANCE_PRESET:
- ctrl->value = state->wb_mode;
- break;
-
- case V4L2_CID_EXPOSURE:
- ctrl->value = state->exif.bv;
- break;
-
- case V4L2_CID_COLORFX:
- ctrl->value = state->exif.effect;
- break;
-
- case V4L2_CID_SATURATION:
- ctrl->value = state->exif.saturation;
- break;
-
- case V4L2_CID_SHARPNESS:
- ctrl->value = state->exif.sharpness;
- break;
-
- case V4L2_CID_CAMERA_METERING:
- ctrl->value = state->exif.metering;
- break;
-
- case V4L2_CID_CAMERA_WDR:
- ctrl->value = state->exif.wdr;
- break;
-
- case V4L2_CID_CAMERA_FLASH_MODE:
- ctrl->value = state->flash_mode;
- break;
-
- case V4L2_CID_FOCUS_AUTO_RECTANGLE_LEFT:
- ctrl->value = state->focus.left;
- break;
-
- case V4L2_CID_FOCUS_AUTO_RECTANGLE_TOP:
- ctrl->value = state->focus.top;
- break;
-
- case V4L2_CID_FOCUS_AUTO_RECTANGLE_WIDTH:
- ctrl->value = state->focus.width;
- break;
-
- case V4L2_CID_FOCUS_AUTO_RECTANGLE_HEIGHT:
- ctrl->value = state->focus.height;
- break;
-
- case V4L2_CID_CAM_STABILIZE:
- cam_err("V4L2_CID_CAM_STABILIZE is not supported\n");
- break;
-
- case V4L2_CID_PHYSICAL_ROTATION:
- ctrl->value = IS_ROTATION_90;
- break;
-
- default:
- if ((ctrl->id & 0xFFFF) <= 2000) {
- cam_err("no such control id(PRIVATE_BASE) %d, value %d\n",
- ctrl->id & 0xFFFF, ctrl->value);
- /*err = -ENOIOCTLCMD;*/
- } else if ((ctrl->id - V4L2_CID_BASE) <= 10000) {
- cam_err("no such control id(BASE_CID) %d\n",
- ctrl->id - V4L2_CID_BASE);
- } else {
- cam_err("no such control id(CAMERA_CLASS_BASE CID) %d\n",
- ctrl->id - V4L2_CID_CAMERA_CLASS_BASE);
- }
- err = 0;
- break;
- }
-
- if (err < 0 && err != -ENOIOCTLCMD)
- cam_err("failed, id %d\n", ctrl->id - V4L2_CID_PRIVATE_BASE);
-
- return err;
-}
-
-
-static int s5c73m3_g_ext_ctrl(struct v4l2_subdev *sd,
- struct v4l2_ext_control *ctrl)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err = 0;
-
- switch (ctrl->id) {
- case V4L2_CID_CAM_SENSOR_FW_VER:
- strcpy(ctrl->string, state->phone_fw);
- break;
-
- default:
- cam_err("no such control id %d\n",
- ctrl->id - V4L2_CID_CAMERA_CLASS_BASE);
- /*err = -ENOIOCTLCMD*/
- err = 0;
- break;
- }
-
- if (err < 0 && err != -ENOIOCTLCMD)
- cam_err("failed, id %d\n",
- ctrl->id - V4L2_CID_CAMERA_CLASS_BASE);
-
- return err;
-}
-
-static int s5c73m3_g_ext_ctrls(struct v4l2_subdev *sd,
- struct v4l2_ext_controls *ctrls)
-{
- struct v4l2_ext_control *ctrl = ctrls->controls;
- int i, err = 0;
-
- for (i = 0; i < ctrls->count; i++, ctrl++) {
- err = s5c73m3_g_ext_ctrl(sd, ctrl);
- if (err) {
- ctrls->error_idx = i;
- break;
- }
- }
- return err;
-}
-
-
-static int s5c73m3_program_fw(struct v4l2_subdev *sd,
- u8 *buf, u32 addr, u32 unit, u32 count, u8 id)
-{
- return 0;
-}
-
-#ifndef CONFIG_VIDEO_S5C73M3_SPI
-int s5c73m3_spi_write(const u8 *addr, const int len, const int txSize)
-{ return 0; }
-#endif
-
-static int s5c73m3_load_fw(struct v4l2_subdev *sd)
-{
- struct device *dev = sd->v4l2_dev->dev;
- struct s5c73m3_state *state = to_state(sd);
- const struct firmware *fw;
- char fw_path[20] = {0,};
- u8 *buf = NULL;
- int err, txSize;
-
- struct file *fp;
- mm_segment_t old_fs;
- long fsize, nread;
- int fw_requested = 1;
-
- old_fs = get_fs();
- set_fs(KERNEL_DS);
-
- if ((state->sensor_fw[0] == 'G') && (state->sensor_fw[1] == 'C'))
- fp = filp_open(S5C73M3_FW_GC_PATH, O_RDONLY, 0);
- else if ((state->sensor_fw[0] == 'G') && (state->sensor_fw[1] == 'D'))
- fp = filp_open(S5C73M3_FW_GD_PATH, O_RDONLY, 0);
- else if ((state->sensor_fw[0] == 'G') && (state->sensor_fw[1] == 'E'))
- fp = filp_open(S5C73M3_FW_GE_PATH, O_RDONLY, 0);
- else if ((state->sensor_fw[0] == 'G') && (state->sensor_fw[1] == 'F'))
- fp = filp_open(S5C73M3_FW_GF_PATH, O_RDONLY, 0);
- else if ((state->sensor_fw[0] == 'Z') && (state->sensor_fw[1] == 'C'))
- fp = filp_open(S5C73M3_FW_ZC_PATH, O_RDONLY, 0);
- else if ((state->sensor_fw[0] == 'Z') && (state->sensor_fw[1] == 'D'))
- fp = filp_open(S5C73M3_FW_ZD_PATH, O_RDONLY, 0);
- else if ((state->sensor_fw[0] == 'Z') && (state->sensor_fw[1] == 'E'))
- fp = filp_open(S5C73M3_FW_ZE_PATH, O_RDONLY, 0);
- else if ((state->sensor_fw[0] == 'Z') && (state->sensor_fw[1] == 'F'))
- fp = filp_open(S5C73M3_FW_ZF_PATH, O_RDONLY, 0);
- else if ((state->sensor_fw[0] == 'Z') && (state->sensor_fw[1] == 'G'))
- fp = filp_open(S5C73M3_FW_ZG_PATH, O_RDONLY, 0);
- else
- fp = filp_open(S5C73M3_FW_PATH, O_RDONLY, 0);
-
- if (IS_ERR(fp)) {
- cam_trace("failed to open %s, err %ld\n",
- S5C73M3_FW_PATH, PTR_ERR(fp));
- goto request_fw;
- }
-
- fw_requested = 0;
- fsize = fp->f_path.dentry->d_inode->i_size;
-
- buf = vmalloc(fsize);
- if (!buf) {
- cam_err("failed to allocate memory\n");
- err = -ENOMEM;
- goto out;
- }
-
- nread = vfs_read(fp, (char __user *)buf, fsize, &fp->f_pos);
- if (nread != fsize) {
- cam_err("failed to read firmware file, %ld Bytes\n", nread);
- err = -EIO;
- goto out;
- }
-
-request_fw:
- if (fw_requested) {
- set_fs(old_fs);
-
- if (state->sensor_fw[0] == 'O') {
- sprintf(fw_path, "SlimISP_G%c.bin",
- state->sensor_fw[1]);
- } else if (state->sensor_fw[0] == 'S') {
- sprintf(fw_path, "SlimISP_Z%c.bin",
- state->sensor_fw[1]);
- } else {
- sprintf(fw_path, "SlimISP_%c%c.bin",
- state->sensor_fw[0],
- state->sensor_fw[1]);
- }
- cam_dbg("file_name = %s\n", fw_path);
-
- err = request_firmware(&fw, fw_path, dev);
- if (err != 0) {
- cam_err("request_firmware falied\n");
- err = -EINVAL;
- goto out;
- }
-
- cam_dbg("start, size %d Bytes\n", fw->size);
- buf = (u8 *)fw->data;
- fsize = fw->size;
- }
-
- if (fw_requested)
- txSize = 60*1024; /*60KB*/
- else
- txSize = 64; /*64 byte for non-DMA mode*/
-
- err = s5c73m3_spi_write(buf, fsize, txSize);
- if (err < 0) {
- cam_err("s5c73m3_spi_write falied\n");
- goto out;
- }
-
- cam_dbg("end\n");
-
-out:
- if (!fw_requested) {
- vfree(buf);
-
- filp_close(fp, current->files);
- set_fs(old_fs);
- } else {
- release_firmware(fw);
- }
-
- return err;
-}
-
-/*
- * v4l2_subdev_video_ops
- */
-static const struct s5c73m3_frmsizeenum *s5c73m3_get_frmsize
- (const struct s5c73m3_frmsizeenum *frmsizes, int num_entries, int index)
-{
- int i;
-
- for (i = 0; i < num_entries; i++) {
- if (frmsizes[i].index == index)
- return &frmsizes[i];
- }
-
- return NULL;
-}
-
-static int s5c73m3_set_frmsize(struct v4l2_subdev *sd)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err ;
- cam_trace("E\n");
-
- if (state->format_mode != V4L2_PIX_FMT_MODE_CAPTURE) {
- err = s5c73m3_writeb(sd, S5C73M3_CHG_MODE,
- S5C73M3_YUV_MODE | state->preview->reg_val |
- (state->sensor_mode<<8));
- CHECK_ERR(err);
-
- cam_dbg("yuv frame size %dx%d\n",
- state->preview->width, state->preview->height);
- } else {
- err = s5c73m3_writeb(sd, S5C73M3_CHG_MODE,
- S5C73M3_INTERLEAVED_MODE
- | state->capture->reg_val | state->preview->reg_val
- |(state->sensor_mode<<8));
- CHECK_ERR(err);
-
- cam_dbg("interleaved yuv size %dx%d\n",
- state->preview->width, state->preview->height);
-
- cam_dbg("interleaved jpeg size %dx%d\n",
- state->capture->width, state->capture->height);
- }
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_s_fmt(struct v4l2_subdev *sd,
- struct v4l2_mbus_framefmt *ffmt)
-{
- struct s5c73m3_state *state = to_state(sd);
- const struct s5c73m3_frmsizeenum **frmsize;
- const struct s5c73m3_frmsizeenum **capfrmsize;
-
- u32 width = ffmt->width;
- u32 height = ffmt->height;
- u32 tmp_width;
- u32 old_index, old_index_cap;
- int i, num_entries;
- cam_trace("E\n");
-
- if (unlikely(state->isp.bad_fw)) {
- cam_err("\"Unknown\" state, please update F/W");
- return -ENOSYS;
- }
- if (ffmt->width < ffmt->height) {
- tmp_width = ffmt->height;
- height = ffmt->width;
- width = tmp_width;
- }
-
- if (ffmt->colorspace == V4L2_COLORSPACE_JPEG)
- state->format_mode = V4L2_PIX_FMT_MODE_CAPTURE;
- else
- state->format_mode = V4L2_PIX_FMT_MODE_PREVIEW;
-
- s5c73m3_set_mode(sd);
-
- /*set frame size for preview(yuv)*/
- frmsize = &state->preview;
- old_index = *frmsize ? (*frmsize)->index : -1;
- *frmsize = NULL;
-
- num_entries = ARRAY_SIZE(preview_frmsizes);
- for (i = 0; i < num_entries; i++) {
- if (width == preview_frmsizes[i].width &&
- height == preview_frmsizes[i].height) {
- *frmsize = &preview_frmsizes[i];
- break;
- }
- }
-
- if (*frmsize == NULL) {
- cam_warn("invalid yuv frame size %dx%d\n", width, height);
- *frmsize = s5c73m3_get_frmsize(preview_frmsizes,
- num_entries,
- S5C73M3_PREVIEW_960X720);
- }
-
- /*set frame size for capture(jpeg)*/
- /*it's meaningful for interleaved mode*/
- capfrmsize = &state->capture;
- old_index_cap = *capfrmsize ? (*capfrmsize)->index : -1;
- *capfrmsize = NULL;
-
- width = state->jpeg_width;
- height = state->jpeg_height;
-
- num_entries = ARRAY_SIZE(capture_frmsizes);
- for (i = 0; i < num_entries; i++) {
- if (width == capture_frmsizes[i].width &&
- height == capture_frmsizes[i].height) {
- *capfrmsize = &capture_frmsizes[i];
- break;
- }
- }
-
- if (*capfrmsize == NULL) {
- cam_warn("invalid jpeg frame size %dx%d\n", width, height);
- *capfrmsize = s5c73m3_get_frmsize(capture_frmsizes, num_entries,
- S5C73M3_CAPTURE_VGA);
- }
-
- cam_dbg("yuv %dx%d\n", (*frmsize)->width, (*frmsize)->height);
- cam_dbg("jpeg %dx%d\n", (*capfrmsize)->width, (*capfrmsize)->height);
- if (state->stream_enable) {
- if (ffmt->colorspace == V4L2_COLORSPACE_JPEG) {
- if ((old_index != (*frmsize)->index)
- || (old_index_cap != (*capfrmsize)->index))
- s5c73m3_set_frmsize(sd);
- } else {
- if (old_index != (*frmsize)->index)
- s5c73m3_set_frmsize(sd);
- }
- } else
- s5c73m3_set_frmsize(sd);
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *a)
-{
- struct s5c73m3_state *state = to_state(sd);
-
- cam_info("g_parm: FPS %d\n", state->fps);
- if (state->fps == 0) {
- a->parm.capture.timeperframe.numerator = state->fps;
- a->parm.capture.timeperframe.denominator = 1;
- } else {
- a->parm.capture.timeperframe.numerator = 1;
- a->parm.capture.timeperframe.denominator = state->fps;
- }
-
- return 0;
-}
-
-static int s5c73m3_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *a)
-{
- struct s5c73m3_state *state = to_state(sd);
- u32 denom = a->parm.capture.timeperframe.denominator;
- u32 numer = a->parm.capture.timeperframe.numerator;
- u32 err = 0;
- u32 fps;
-
- if (unlikely(state->isp.bad_fw)) {
- cam_err("\"Unknown\" state, please update F/W");
- return -ENOSYS;
- }
-
- if (numer == 0) {
- fps = 0;
- } else {
- fps = denom / numer;
- if (fps != state->fps) {
- if (fps < 0 || fps > 30) {
- cam_err("invalid frame rate %d\n", fps);
- fps = 30;
- }
- }
- }
-
- state->fps = fps;
-
- cam_err("Frame rate = %d(%d)\n", fps, state->fps);
-
- err = s5c73m3_set_frame_rate(sd, state->fps);
- CHECK_ERR(err);
-
- return 0;
-}
-
-static int s5c73m3_enum_framesizes(struct v4l2_subdev *sd,
- struct v4l2_frmsizeenum *fsize)
-{
- struct s5c73m3_state *state = to_state(sd);
- unsigned int i;
- int index = fsize->index;
-
- /*
- * Compatible with current fimc code, we have added this condition.
- * Fimc use this subdev call for getting width and height of current
- * state.
- */
- if (index != -1) {
- if (index < ARRAY_SIZE(preview_frmsizes)) {
- for (i = 0; i < ARRAY_SIZE(preview_frmsizes); ++i) {
- /*
- * If we need to check pixelformat, please add
- * condition at this line.
- */
- if (index == i) {
- fsize->type =
- V4L2_FRMSIZE_TYPE_DISCRETE;
- fsize->discrete.width =
- preview_frmsizes[i].width;
- fsize->discrete.height =
- preview_frmsizes[i].height;
- return 0;
- }
- }
- }
- return -EINVAL;
- }
-
- /*
- * The camera interface should read this value, this is the resolution
- * at which the sensor would provide framedata to the camera i/f
- * In case of image capture,
- * this returns the default camera resolution (VGA)
- */
- if (state->preview == NULL)
- return -EINVAL;
-
- fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
- if (state->hdr_mode) {
- fsize->discrete.width = state->capture->width;
- fsize->discrete.height = state->capture->height;
- } else {
- fsize->discrete.width = state->preview->width;
- fsize->discrete.height = state->preview->height;
- }
- return 0;
-}
-
-static int s5c73m3_s_stream_sensor(struct v4l2_subdev *sd, int onoff)
-{
- int err = 0;
- int index = 0;
- u16 stream_status = 0;
-
- cam_info("%s::::onoff=%d\n", __func__, onoff);
- err = s5c73m3_writeb(sd, S5C73M3_SENSOR_STREAMING,
- onoff ? S5C73M3_SENSOR_STREAMING_ON :
- S5C73M3_SENSOR_STREAMING_OFF);
- CHECK_ERR(err);
-
- do {
- err = s5c73m3_read(sd, 0x0009, 0x5080, &stream_status);
- if (stream_status == 0xffff)
- break;
-
- index++;
- msleep(20);
- } while (index < 30);
-
- if (index >= 30) {
- cam_info("%s::::TimeOut!! index = %d, status = 0x%x",
- __func__, index, stream_status);
- err = -1;
- }
-
- return err;
-}
-
-static int s5c73m3_s_stream_hdr(struct v4l2_subdev *sd, int enable)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err = 0;
- cam_info("s_stream_hdr\n");
-
- if (enable) {
- err = s5c73m3_i2c_write(sd, 0x0050, 0x0009);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5000);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0902);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0008);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x091A);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0002);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0B10);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x8000 |
- state->capture->reg_val |
- state->preview->reg_val);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0054, 0x5080);
- CHECK_ERR(err);
-
- err = s5c73m3_i2c_write(sd, 0x0F14, 0x0003);
- CHECK_ERR(err);
-
- err = s5c73m3_s_stream_sensor(sd, enable);
- err = s5c73m3_set_auto_bracket_mode(sd);
- } else {
- err = s5c73m3_s_stream_sensor(sd, enable);
- }
-
- return 0;
-}
-
-static int s5c73m3_s_stream(struct v4l2_subdev *sd, int enable)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
-
- cam_trace("E\n");
-
- if (unlikely(state->isp.bad_fw)) {
- cam_err("\"Unknown\" state, please update F/W");
- return -ENOSYS;
- }
-
- switch (enable) {
- case STREAM_MODE_CAM_ON:
- case STREAM_MODE_CAM_OFF:
- switch (state->format_mode) {
- case V4L2_PIX_FMT_MODE_CAPTURE:
- cam_info("capture %s",
- enable == STREAM_MODE_CAM_ON ? "on" : "off");
-
- s5c73m3_s_stream_sensor(sd, enable);
- if (enable == STREAM_MODE_CAM_ON &&
- state->focus.mode ==
- FOCUS_MODE_CONTINOUS_VIDEO) {
- s5c73m3_set_af_mode(sd,
- FOCUS_MODE_CONTINOUS_VIDEO);
- }
- break;
-
- default:
- cam_info("preview %s",
- enable == STREAM_MODE_CAM_ON ? "on" : "off");
-
- if (state->hdr_mode) {
- err = s5c73m3_set_flash(sd, FLASH_MODE_OFF, 0);
- err = s5c73m3_s_stream_hdr(sd, enable);
- } else {
- err = s5c73m3_s_stream_sensor(sd, enable);
- if (enable == STREAM_MODE_CAM_ON &&
- state->focus.mode ==
- FOCUS_MODE_CONTINOUS_VIDEO) {
- s5c73m3_set_af_mode(sd,
- FOCUS_MODE_CONTINOUS_VIDEO);
- }
- }
- break;
- }
- break;
-
- case STREAM_MODE_MOVIE_ON:
- if (state->flash_mode != FLASH_MODE_OFF)
- err = s5c73m3_set_flash(sd, state->flash_mode, 1);
-
- if (state->preview->index == S5C73M3_PREVIEW_720P ||
- state->preview->index == S5C73M3_PREVIEW_1080P)
- err = s5c73m3_set_af(sd, 1);
- break;
-
- case STREAM_MODE_MOVIE_OFF:
- if (state->preview->index == S5C73M3_PREVIEW_720P ||
- state->preview->index == S5C73M3_PREVIEW_1080P)
- err = s5c73m3_set_af(sd, 0);
-
- s5c73m3_set_flash(sd, FLASH_MODE_OFF, 1);
- break;
-
- default:
- cam_err("invalid stream option, %d\n", enable);
- break;
- }
-
-#if 0
- err = s5c73m3_writeb(sd, S5C73M3_AF_CAL, 0);
- CHECK_ERR(err);
-#endif
- state->stream_enable = enable;
- if (state->stream_enable && state->hdr_mode == 0) {
- if (state->fps)
- s5c73m3_set_frame_rate(sd, state->fps);
- }
-
- cam_trace("X\n");
- return 0;
-}
-
-static int s5c73m3_check_version(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int s5c73m3_init_param(struct v4l2_subdev *sd)
-{
- s5c73m3_set_flash(sd, FLASH_MODE_OFF, 0);
- return 0;
-}
-
-static int s5c73m3_FROM_booting(struct v4l2_subdev *sd)
-{
- u16 read_val;
- int i, err;
-
- cam_trace("E\n");
-
- /*ARM go*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFF);
- CHECK_ERR(err);
-
- udelay(400);
-
- /*Check boot done*/
- for (i = 0; i < 4; i++) {
- err = s5c73m3_read(sd, 0x3010, 0x0010, &read_val);
- CHECK_ERR(err);
-
- if (read_val == 0x0C)
- break;
-
- udelay(100);
- }
-
- if (read_val != 0x0C) {
- cam_err("boot fail, read_val %#x\n", read_val);
- return -1;
- }
-
- /*P,M,S and Boot Mode*/
- err = s5c73m3_write(sd, 0x3100, 0x010C, 0x0044);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3100, 0x0108, 0x000D);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3100, 0x0304, 0x0001);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x0001, 0x0000, 0x5800);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x0001, 0x0002, 0x0002);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3100, 0x0000, 0x0001);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3010, 0x0014, 0x1B85);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3010, 0x0010, 0x230C);
- CHECK_ERR(err);
-
- mdelay(300);
-
- /*Check binary read done*/
- for (i = 0; i < 3; i++) {
- err = s5c73m3_read(sd, 0x3010, 0x0010, &read_val);
- CHECK_ERR(err);
-
- if (read_val == 0x230E)
- break;
-
- udelay(100);
- }
-
- if (read_val != 0x230E) {
- cam_err("binary read fail, read_val %#x\n", read_val);
- return -1;
- }
-
- /*ARM reset*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFD);
- CHECK_ERR(err);
-
- /*remap*/
- err = s5c73m3_write(sd, 0x3010, 0x00A4, 0x0183);
- CHECK_ERR(err);
-
- /*ARM go again*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFF);
- CHECK_ERR(err);
-
- cam_trace("X\n");
-
- return 0;
-}
-
-static int s5c73m3_SPI_booting(struct v4l2_subdev *sd)
-{
- u16 read_val;
- int i, err;
-
- cam_trace("E\n");
-
- /*ARM go*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFF);
- CHECK_ERR(err);
-
- udelay(400);
-
- /*Check boot done*/
- for (i = 0; i < 3; i++) {
- err = s5c73m3_read(sd, 0x3010, 0x0010, &read_val);
- CHECK_ERR(err);
-
- if (read_val == 0x0C)
- break;
-
- udelay(100);
- }
-
- if (read_val != 0x0C) {
- cam_err("boot fail, read_val %#x\n", read_val);
- return -1;
- }
-
- /*P,M,S and Boot Mode*/
- err = s5c73m3_write(sd, 0x3010, 0x0014, 0x2146);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3010, 0x0010, 0x210C);
- CHECK_ERR(err);
-
- udelay(200);
-
- /*Check SPI ready*/
- for (i = 0; i < 3; i++) {
- err = s5c73m3_read(sd, 0x3010, 0x0010, &read_val);
- CHECK_ERR(err);
-
- if (read_val == 0x210D)
- break;
-
- udelay(100);
- }
-
- if (read_val != 0x210D) {
- cam_err("SPI not ready, read_val %#x\n", read_val);
- return -1;
- }
-
- /*download fw by SPI*/
- s5c73m3_load_fw(sd);
-
- /*ARM reset*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFD);
- CHECK_ERR(err);
-
- /*remap*/
- err = s5c73m3_write(sd, 0x3010, 0x00A4, 0x0183);
- CHECK_ERR(err);
-
- /*ARM go again*/
- err = s5c73m3_write(sd, 0x3000, 0x0004, 0xFFFF);
- CHECK_ERR(err);
-
- cam_trace("X\n");
-
- return 0;
-}
-
-static int s5c73m3_read_vdd_core(struct v4l2_subdev *sd)
-{
- struct s5c73m3_state *state = to_state(sd);
- u16 read_val;
- int err;
-
- cam_trace("E\n");
-
- /*Initialize OTP Controller*/
- err = s5c73m3_write(sd, 0x3800, 0xA004, 0x0000);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA000, 0x0004);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA0D8, 0x0000);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA0DC, 0x0004);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA0C4, 0x4000);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA0D4, 0x0015);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA000, 0x0001);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA0B4, 0x9F90);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA09C, 0x9A95);
- CHECK_ERR(err);
-
- /*Page Select*/
- err = s5c73m3_write(sd, 0x3800, 0xA0C4, 0x4800);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA0C4, 0x4400);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA0C4, 0x4200);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA004, 0x00C0);
- CHECK_ERR(err);
- err = s5c73m3_write(sd, 0x3800, 0xA000, 0x0001);
- CHECK_ERR(err);
-
-#if 0 /*read_val should be 0x7383*/
- err = s5c73m3_read(sd, 0x0000, 0x131C, &read_val);
- CHECK_ERR(err);
-
- cam_dbg("read_val %#x\n", read_val);
-#endif
-
- /*Read Data*/
- err = s5c73m3_read(sd, 0x3800, 0xA034, &read_val);
- CHECK_ERR(err);
-
- cam_dbg("read_val %#x\n", read_val);
-
- /*Read Data End*/
- err = s5c73m3_write(sd, 0x3800, 0xA000, 0x0000);
- CHECK_ERR(err);
-
- if (read_val & 0x200) {
- state->pdata->set_vdd_core(1150000);
- strcpy(sysfs_isp_core, "1.15V");
- } else if (read_val & 0x800) {
- state->pdata->set_vdd_core(1100000);
- strcpy(sysfs_isp_core, "1.10V");
- } else if (read_val & 0x2000) {
- state->pdata->set_vdd_core(1050000);
- strcpy(sysfs_isp_core, "1.05V");
- } else if (read_val & 0x8000) {
- state->pdata->set_vdd_core(1000000);
- strcpy(sysfs_isp_core, "1.00V");
- } else {
- state->pdata->set_vdd_core(1150000);
- strcpy(sysfs_isp_core, "1.15V");
- }
-
- cam_trace("X\n");
-
- return 0;
-}
-
-
-static int s5c73m3_init(struct v4l2_subdev *sd, u32 val)
-{
- struct s5c73m3_state *state = to_state(sd);
- int err;
-
- sd_internal = sd;
-
- /* Default state values */
- state->isp.bad_fw = 0;
-
- state->preview = NULL;
- state->capture = NULL;
-
- state->format_mode = V4L2_PIX_FMT_MODE_PREVIEW;
- state->sensor_mode = SENSOR_CAMERA;
- state->flash_mode = FLASH_MODE_OFF;
- state->beauty_mode = 0;
- state->focus.mode = FOCUS_MODE_CONTINOUS_PICTURE;
- state->focus.touch = 0;
-
- state->fps = 0; /* auto */
-
- memset(&state->focus, 0, sizeof(state->focus));
-
- if (!state->pdata->is_vdd_core_set())
- s5c73m3_read_vdd_core(sd);
-
-#ifdef S5C73M3_FROM_BOOTING
- err = s5c73m3_FROM_booting(sd);
-#else
- err = s5c73m3_check_fw(sd, 0);
- if (err < 0) {
- cam_dbg("isp.bad_fw is true\n");
- state->isp.bad_fw = 1;
- }
-#endif
- CHECK_ERR(err);
-
- s5c73m3_init_param(sd);
-
- return 0;
-}
-
-static const struct v4l2_subdev_core_ops s5c73m3_core_ops = {
- .init = s5c73m3_init, /* initializing API */
- .load_fw = s5c73m3_load_fw,
- .queryctrl = s5c73m3_queryctrl,
- .g_ctrl = s5c73m3_g_ctrl,
- .s_ctrl = s5c73m3_s_ctrl,
- .g_ext_ctrls = s5c73m3_g_ext_ctrls,
-};
-
-static const struct v4l2_subdev_video_ops s5c73m3_video_ops = {
- .s_mbus_fmt = s5c73m3_s_fmt,
- .g_parm = s5c73m3_g_parm,
- .s_parm = s5c73m3_s_parm,
- .enum_framesizes = s5c73m3_enum_framesizes,
- .s_stream = s5c73m3_s_stream,
-};
-
-static const struct v4l2_subdev_ops s5c73m3_ops = {
- .core = &s5c73m3_core_ops,
- .video = &s5c73m3_video_ops,
-};
-
-static ssize_t s5c73m3_camera_rear_camtype_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- char type[25];
-
- strcpy(type, sysfs_sensor_type);
- return sprintf(buf, "%s\n", type);
-}
-
-static ssize_t s5c73m3_camera_rear_camfw_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- return sprintf(buf, "%s %s\n", sysfs_sensor_fw, sysfs_phone_fw);
-}
-
-static ssize_t s5c73m3_camera_rear_flash(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count)
-{
- int err;
-
- if (buf[0] == '0')
- err = s5c73m3_writeb(sd_internal, S5C73M3_FLASH_TORCH,
- S5C73M3_FLASH_TORCH_OFF);
- else
- err = s5c73m3_writeb(sd_internal, S5C73M3_FLASH_TORCH,
- S5C73M3_FLASH_TORCH_ON);
-
- CHECK_ERR(err);
-
- return count;
-}
-
-static ssize_t s5c73m3_camera_isp_core_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- char core[10];
-
- strcpy(core, sysfs_isp_core);
- return sprintf(buf, "%s\n", core);
-}
-
-static DEVICE_ATTR(rear_camtype, S_IRUGO,
- s5c73m3_camera_rear_camtype_show, NULL);
-static DEVICE_ATTR(rear_camfw, S_IRUGO, s5c73m3_camera_rear_camfw_show, NULL);
-static DEVICE_ATTR(rear_flash, S_IWUSR | S_IWGRP, NULL,
- s5c73m3_camera_rear_flash);
-static DEVICE_ATTR(isp_core, S_IRUGO, s5c73m3_camera_isp_core_show, NULL);
-
-/*
- * s5c73m3_probe
- * Fetching platform data is being done with s_config subdev call.
- * In probe routine, we just register subdev device
- */
-static int __devinit s5c73m3_probe(struct i2c_client *client,
- const struct i2c_device_id *id)
-{
- struct s5c73m3_state *state;
- struct v4l2_subdev *sd;
-
- state = kzalloc(sizeof(struct s5c73m3_state), GFP_KERNEL);
- if (state == NULL)
- return -ENOMEM;
-
- sd = &state->sd;
- strcpy(sd->name, S5C73M3_DRIVER_NAME);
-
- state->pdata = client->dev.platform_data;
-
- /* Registering subdev */
- v4l2_i2c_subdev_init(sd, client, &s5c73m3_ops);
-
-#ifdef CAM_DEBUG
- state->dbg_level = CAM_DEBUG;
-#endif
-
-#ifdef CONFIG_BUSFREQ_OPP
- /* lock bus frequency */
- dev_lock(bus_dev, s5c73m3_dev, 400200);
-#else
- pm_qos_update_request(&entry, 400200);
-#endif
-
- if (s5c73m3_dev)
- dev_set_drvdata(s5c73m3_dev, state);
-
- printk(KERN_DEBUG "%s\n", __func__);
-
- return 0;
-}
-
-static int __devexit s5c73m3_remove(struct i2c_client *client)
-{
- struct v4l2_subdev *sd = i2c_get_clientdata(client);
- struct s5c73m3_state *state = to_state(sd);
-
- if (unlikely(state->isp.bad_fw)) {
- cam_err("camera is not ready!!\n");
- } else {
- if (s5c73m3_set_af_softlanding(sd) < 0)
- cam_err("failed to set soft landing\n");
- }
- v4l2_device_unregister_subdev(sd);
-
-#ifdef CONFIG_BUSFREQ_OPP
- /* Unlock bus frequency */
- dev_unlock(bus_dev, s5c73m3_dev);
-#else
- pm_qos_update_request(&entry, 0);
-#endif
-
- kfree(state->fw_version);
- kfree(state);
-
- return 0;
-}
-
-static const struct i2c_device_id s5c73m3_id[] = {
- { S5C73M3_DRIVER_NAME, 0 },
- { }
-};
-MODULE_DEVICE_TABLE(i2c, s5c73m3_id);
-
-static struct i2c_driver s5c73m3_i2c_driver = {
- .driver = {
- .name = S5C73M3_DRIVER_NAME,
- },
- .probe = s5c73m3_probe,
- .remove = __devexit_p(s5c73m3_remove),
- .id_table = s5c73m3_id,
-};
-
-static int __init s5c73m3_mod_init(void)
-{
-#ifdef CONFIG_BUSFREQ_OPP
- /* To lock bus frequency in OPP mode */
- bus_dev = dev_get("exynos-busfreq");
-#else
- pm_qos_add_request(&entry, PM_QOS_BUS_DMA_THROUGHPUT, 0);
-#endif
-
- if (!s5c73m3_dev) {
- s5c73m3_dev = device_create(camera_class,
- NULL, 0, NULL, "rear");
- if (IS_ERR(s5c73m3_dev)) {
- cam_warn("failed to create device!\n");
- return 0;
- }
-
- if (device_create_file(s5c73m3_dev, &dev_attr_rear_camtype)
- < 0) {
- cam_warn("failed to create device file, %s\n",
- dev_attr_rear_camtype.attr.name);
- }
-
- if (device_create_file(s5c73m3_dev, &dev_attr_rear_camfw) < 0) {
- cam_warn("failed to create device file, %s\n",
- dev_attr_rear_camfw.attr.name);
- }
-
- if (device_create_file(s5c73m3_dev, &dev_attr_rear_flash) < 0) {
- cam_warn("failed to create device file, %s\n",
- dev_attr_rear_flash.attr.name);
- }
-
- if (device_create_file(s5c73m3_dev, &dev_attr_isp_core) < 0) {
- cam_warn("failed to create device file, %s\n",
- dev_attr_isp_core.attr.name);
- }
- }
-
- return i2c_add_driver(&s5c73m3_i2c_driver);
-}
-
-static void __exit s5c73m3_mod_exit(void)
-{
- i2c_del_driver(&s5c73m3_i2c_driver);
-}
-module_init(s5c73m3_mod_init);
-module_exit(s5c73m3_mod_exit);
-
-
-MODULE_DESCRIPTION("driver for LSI S5C73M3");
-MODULE_LICENSE("GPL");
diff --git a/drivers/media/video/slp_s5c73m3.h b/drivers/media/video/slp_s5c73m3.h
deleted file mode 100644
index 314c65f..0000000
--- a/drivers/media/video/slp_s5c73m3.h
+++ /dev/null
@@ -1,516 +0,0 @@
-/*
- * Driver for LSI S5C73M3 (ISP for 8MP Camera)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef __SLP_S5C73M3_H
-#define __SLP_S5C73M3_H
-
-#define CONFIG_CAM_DEBUG 1
-
-#define cam_warn(fmt, ...) \
- do { \
- printk(KERN_WARNING "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#define cam_err(fmt, ...) \
- do { \
- printk(KERN_ERR "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#define cam_info(fmt, ...) \
- do { \
- printk(KERN_INFO "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#ifdef CONFIG_CAM_DEBUG
-#define CAM_DEBUG (1 << 0)
-#define CAM_TRACE (1 << 1)
-#define CAM_I2C (1 << 2)
-
-#define cam_dbg(fmt, ...) \
- do { \
- if (to_state(sd)->dbg_level & CAM_DEBUG) \
- printk(KERN_DEBUG "%s: " fmt, \
- __func__, ##__VA_ARGS__); \
- } while (0)
-
-#define cam_trace(fmt, ...) \
- do { \
- if (to_state(sd)->dbg_level & CAM_TRACE) \
- printk(KERN_DEBUG "%s: " fmt, \
- __func__, ##__VA_ARGS__); \
- } while (0)
-
-#define cam_i2c_dbg(fmt, ...) \
- do { \
- if (to_state(sd)->dbg_level & CAM_I2C) \
- printk(KERN_DEBUG "%s: " fmt, \
- __func__, ##__VA_ARGS__); \
- } while (0)
-#else
-#define cam_dbg(fmt, ...)
-#define cam_trace(fmt, ...)
-#define cam_i2c_dbg(fmt, ...)
-#endif
-
-enum s5c73m3_prev_frmsize {
- S5C73M3_PREVIEW_QCIF,
- S5C73M3_PREVIEW_QCIF2,
- S5C73M3_PREVIEW_QVGA,
- S5C73M3_PREVIEW_CIF,
- S5C73M3_PREVIEW_VGA,
- S5C73M3_PREVIEW_D1,
- S5C73M3_PREVIEW_WVGA,
- S5C73M3_PREVIEW_880X720,
- S5C73M3_PREVIEW_960X720,
- S5C73M3_PREVIEW_1008X672,
- S5C73M3_PREVIEW_1056X704,
- S5C73M3_PREVIEW_1184X666,
- S5C73M3_PREVIEW_720P,
- S5C73M3_VDIS_720P,
- S5C73M3_PREVIEW_1080P,
- S5C73M3_VDIS_1080P,
- S5C73M3_PREVIEW_HDR,
-};
-
-enum s5c73m3_cap_frmsize {
- S5C73M3_CAPTURE_VGA, /* 640 x 480 */
- S5C73M3_CAPTURE_WVGA, /* 800 x 480 */
- S5C73M3_CAPTURE_1024X768, /* 1024 x 768 */
- S5C73M3_CAPTURE_HD, /* 1280 x 720 */
- S5C73M3_CAPTURE_W1MP, /* 1600 x 960 */
- S5C73M3_CAPTURE_2MP, /* UXGA - 1600 x 1200 */
- S5C73M3_CAPTURE_W2MP, /* 2048 x 1232 */
- S5C73M3_CAPTURE_3MP, /* QXGA - 2048 x 1536 */
- S5C73M3_CAPTURE_W4MP, /* WQXGA - 2560 x 1440 */
- S5C73M3_CAPTURE_5MP, /* 2560 x 1920 */
- S5C73M3_CAPTURE_W6MP, /* 3072 x 1856 */
- S5C73M3_CAPTURE_7MP, /* 3072 x 2304 */
- S5C73M3_CAPTURE_W7MP, /* WQXGA - 2560 x 1536 */
- S5C73M3_CAPTURE_3264X2176, /* 3264 x 2176 */
- S5C73M3_CAPTURE_8MP, /* 3264 x 2448 */
-};
-
-enum s5c73m3_isneed_flash_tristate {
- S5C73M3_ISNEED_FLASH_OFF = 0x00,
- S5C73M3_ISNEED_FLASH_ON = 0x01,
- S5C73M3_ISNEED_FLASH_UNDEFINED = 0x02,
-};
-
-struct s5c73m3_control {
- u32 id;
- s32 value;
- s32 minimum; /* Note signedness */
- s32 maximum;
- s32 step;
- s32 default_value;
-};
-
-struct s5c73m3_frmsizeenum {
- unsigned int index;
- unsigned int width;
- unsigned int height;
- u8 reg_val; /* a value for category parameter */
-};
-
-struct s5c73m3_isp {
- wait_queue_head_t wait;
- unsigned int irq; /* irq issued by ISP */
- unsigned int issued;
- unsigned int int_factor;
- unsigned int bad_fw:1;
-};
-
-struct s5c73m3_jpeg {
- int quality;
- unsigned int main_size; /* Main JPEG file size */
- unsigned int thumb_size; /* Thumbnail file size */
- unsigned int main_offset;
- unsigned int thumb_offset;
- unsigned int postview_offset;
-};
-
-struct s5c73m3_focus {
- unsigned int mode;
- unsigned int lock;
- unsigned int status;
- unsigned int touch;
- unsigned int pos_x;
- unsigned int pos_y;
-
- /* rectangle type values */
- unsigned int left;
- unsigned int top;
- unsigned int width;
- unsigned int height;
-};
-
-struct s5c73m3_exif {
- char unique_id[7];
- u32 exptime; /* us */
- u16 flash;
- u16 iso;
- int tv; /* shutter speed */
- int bv; /* brightness */
- int ebv; /* exposure bias */
- int effect; /* effect(colorfx) */
- int saturation;
- int sharpness;
- int metering;
- int wdr;
-};
-
-struct s5c73m3_state {
- struct s5c73m3_platform_data *pdata;
- struct v4l2_subdev sd;
-
- struct s5c73m3_isp isp;
-
- const struct s5c73m3_frmsizeenum *preview;
- const struct s5c73m3_frmsizeenum *capture;
-
- enum v4l2_pix_format_mode format_mode;
- enum v4l2_sensor_mode sensor_mode;
- enum v4l2_flash_mode flash_mode;
- enum v4l2_wb_mode wb_mode;
- enum v4l2_scene_mode scene_mode;
- int vt_mode;
- int beauty_mode;
- int hdr_mode;
- int hybrid_mode;
- int zoom;
- int stream_enable;
- int ae_lock;
- int awb_lock;
-
- int cal_device;
- int cal_dll;
-
- unsigned int fps;
- struct s5c73m3_focus focus;
- int caf_mode;
- char isflash;
-
- struct s5c73m3_jpeg jpeg;
- struct s5c73m3_exif exif;
-
- int check_dataline;
- char *fw_version;
-
- u32 jpeg_width;
- u32 jpeg_height;
-
- u8 sensor_fw[10];
- u8 phone_fw[10];
-
- u8 sensor_type[15];
-
-#ifdef CONFIG_CAM_DEBUG
- u8 dbg_level;
-#endif
-};
-
-#define S5C73M3_IMG_OUTPUT 0x0902
-#define S5C73M3_HDR_OUTPUT 0x0008
-#define S5C73M3_YUV_OUTPUT 0x0009
-#define S5C73M3_INTERLEAVED_OUTPUT 0x000D
-#define S5C73M3_HYBRID_OUTPUT 0x0016
-
-#define S5C73M3_STILL_PRE_FLASH 0x0A00
-#define S5C73M3_STILL_PRE_FLASH_FIRE 0x0000
-#define S5C73M3_STILL_PRE_FLASH_NON_FIRED 0x0000
-#define S5C73M3_STILL_PRE_FLASH_FIRED 0x0001
-
-#define S5C73M3_STILL_MAIN_FLASH 0x0A02
-#define S5C73M3_STILL_MAIN_FLASH_CANCEL 0x0001
-#define S5C73M3_STILL_MAIN_FLASH_FIRE 0x0002
-
-
-#define S5C73M3_ZOOM_STEP 0x0B00
-
-
-#define S5C73M3_IMAGE_EFFECT 0x0B0A
-#define S5C73M3_IMAGE_EFFECT_NONE 0x0001
-#define S5C73M3_IMAGE_EFFECT_NEGATIVE 0x0002
-#define S5C73M3_IMAGE_EFFECT_AQUA 0x0003
-#define S5C73M3_IMAGE_EFFECT_SEPIA 0x0004
-#define S5C73M3_IMAGE_EFFECT_MONO 0x0005
-
-#define S5C73M3_IMAGE_QUALITY 0x0B0C
-#define S5C73M3_IMAGE_QUALITY_SUPERFINE 0x0000
-#define S5C73M3_IMAGE_QUALITY_FINE 0x0001
-#define S5C73M3_IMAGE_QUALITY_NORMAL 0x0002
-
-
-#define S5C73M3_FLASH_MODE 0x0B0E
-#define S5C73M3_FLASH_MODE_OFF 0x0000
-#define S5C73M3_FLASH_MODE_ON 0x0001
-#define S5C73M3_FLASH_MODE_AUTO 0x0002
-
-#define S5C73M3_FLASH_TORCH 0x0B12
-#define S5C73M3_FLASH_TORCH_OFF 0x0000
-#define S5C73M3_FLASH_TORCH_ON 0x0001
-
-#define S5C73M3_AE_ISNEEDFLASH 0x0CBA
-#define S5C73M3_AE_ISNEEDFLASH_OFF 0x0000
-#define S5C73M3_AE_ISNEEDFLASH_ON 0x0001
-
-
-#define S5C73M3_CHG_MODE 0x0B10
-#define S5C73M3_YUV_MODE 0x8000
-#define S5C73M3_INTERLEAVED_MODE 0x8000
-#define S5C73M3_CHG_MODE_YUV_320_240 0x8001
-#define S5C73M3_CHG_MODE_YUV_400_300 0x8002
-#define S5C73M3_CHG_MODE_YUV_640_480 0x8003
-#define S5C73M3_CHG_MODE_YUV_800_600 0x8004
-#define S5C73M3_CHG_MODE_YUV_960_720 0x8005
-#define S5C73M3_CHG_MODE_YUV_1280_720 0x8006
-#define S5C73M3_CHG_MODE_YUV_1280_960 0x8007
-#define S5C73M3_CHG_MODE_YUV_1600_1200 0x8008
-#define S5C73M3_CHG_MODE_YUV_1632_1224 0x8009
-#define S5C73M3_CHG_MODE_YUV_1920_1080 0x800A
-#define S5C73M3_CHG_MODE_YUV_1920_1440 0x800B
-#define S5C73M3_CHG_MODE_YUV_2304_1296 0x800C
-#define S5C73M3_CHG_MODE_YUV_2304_1728 0x800D
-#define S5C73M3_CHG_MODE_JPEG_640_480 0x0010
-#define S5C73M3_CHG_MODE_JPEG_800_450 0x0020
-#define S5C73M3_CHG_MODE_JPEG_800_600 0x0030
-#define S5C73M3_CHG_MODE_JPEG_1600_960 0x0040
-#define S5C73M3_CHG_MODE_JPEG_1600_1200 0x0050
-#define S5C73M3_CHG_MODE_JPEG_2048_1152 0x0060
-#define S5C73M3_CHG_MODE_JPEG_2048_1536 0x0070
-#define S5C73M3_CHG_MODE_JPEG_2560_1440 0x0080
-#define S5C73M3_CHG_MODE_JPEG_2560_1920 0x0090
-#define S5C73M3_CHG_MODE_JPEG_3072_1728 0x00A0
-#define S5C73M3_CHG_MODE_JPEG_3264_2304 0x00B0
-#define S5C73M3_CHG_MODE_JPEG_3264_1836 0x00C0
-#define S5C73M3_CHG_MODE_JPEG_3264_2448 0x00D0
-
-
-#define S5C73M3_AF_CON 0x0E00
-#define S5C73M3_AF_CON_STOP 0x0000
-#define S5C73M3_AF_CON_SCAN 0x0001/*AF_SCAN:Full Search*/
-#define S5C73M3_AF_CON_START 0x0002/*AF_START:Fast Search*/
-
-#define S5C73M3_AF_STATUS 0x5E80
-
-#define S5C73M3_AF_TOUCH_AF 0x0E0A
-
-#define S5C73M3_AF_CAL 0x0E06
-
-#define S5C73M3_CAF_STATUS_FIND_SEARCHING_DIR 0x0001
-#define S5C73M3_CAF_STATUS_FOCUSING 0x0002
-#define S5C73M3_CAF_STATUS_FOCUSED 0x0003
-#define S5C73M3_CAF_STATUS_UNFOCUSED 0x0004
-
-#define S5C73M3_AF_STATUS_INVALID 0x0010
-#define S5C73M3_AF_STATUS_FOCUSING 0x0020
-#define S5C73M3_AF_STATUS_FOCUSED 0x0030/*SUCCESS*/
-#define S5C73M3_AF_STATUS_UNFOCUSED 0x0040/*FAIL*/
-
-#define S5C73M3_AF_TOUCH_POSITION 0x5E8E
-
-#define S5C73M3_AF_FACE_ZOOM 0x0E10
-
-#define S5C73M3_AF_MODE 0x0E02
-#define S5C73M3_AF_MODE_NORMAL 0x0000
-#define S5C73M3_AF_MODE_MACRO 0x0001
-#define S5C73M3_AF_MODE_MOVIE_CAF_START 0x0002
-#define S5C73M3_AF_MODE_MOVIE_CAF_STOP 0x0003
-#define S5C73M3_AF_MODE_PREVIEW_CAF_START 0x0004
-#define S5C73M3_AF_MODE_PREVIEW_CAF_STOP 0x0005
-
-#define S5C73M3_AF_SOFTLANDING 0x0E16
-#define S5C73M3_AF_SOFTLANDING_ON 0x0000
-
-#define S5C73M3_FACE_DET 0x0E0C
-#define S5C73M3_FACE_DET_OFF 0x0000
-#define S5C73M3_FACE_DET_ON 0x0001
-
-#define S5C73M3_FACE_DET_OSD 0x0E0E
-#define S5C73M3_FACE_DET_OSD_OFF 0x0000
-#define S5C73M3_FACE_DET_OSD_ON 0x0001
-
-#define S5C73M3_AE_CON 0x0C00
-#define S5C73M3_AE_STOP 0x0000/*LOCK*/
-#define S5C73M3_AE_START 0x0001/*UNLOCK*/
-
-#define S5C73M3_ISO 0x0C02
-#define S5C73M3_ISO_AUTO 0x0000
-#define S5C73M3_ISO_100 0x0001
-#define S5C73M3_ISO_200 0x0002
-#define S5C73M3_ISO_400 0x0003
-#define S5C73M3_ISO_800 0x0004
-#define S5C73M3_ISO_SPORTS 0x0005
-#define S5C73M3_ISO_NIGHT 0x0006
-#define S5C73M3_ISO_INDOOR 0x0007
-
-#define S5C73M3_EV 0x0C04
-#define S5C73M3_EV_M20 0x0000
-#define S5C73M3_EV_M15 0x0001
-#define S5C73M3_EV_M10 0x0002
-#define S5C73M3_EV_M05 0x0003
-#define S5C73M3_EV_ZERO 0x0004
-#define S5C73M3_EV_P05 0x0005
-#define S5C73M3_EV_P10 0x0006
-#define S5C73M3_EV_P15 0x0007
-#define S5C73M3_EV_P20 0x0008
-
-#define S5C73M3_METER 0x0C06
-#define S5C73M3_METER_CENTER 0x0000
-#define S5C73M3_METER_SPOT 0x0001
-#define S5C73M3_METER_AVERAGE 0x0002
-#define S5C73M3_METER_SMART 0x0003
-
-#define S5C73M3_WDR 0x0C08
-#define S5C73M3_WDR_OFF 0x0000
-#define S5C73M3_WDR_ON 0x0001
-
-#define S5C73M3_AE_MODE 0x0C1E
-#define S5C73M3_AUTO_MODE_AE_SET 0x0000
-#define S5C73M3_FIXED_30FPS 0x0002
-#define S5C73M3_FIXED_20FPS 0x0003
-#define S5C73M3_FIXED_15FPS 0x0004
-#define S5C73M3_FIXED_120FPS 0x0008
-#define S5C73M3_FIXED_7FPS 0x0009
-#define S5C73M3_ANTI_SHAKE 0x0013
-
-#define S5C73M3_SHARPNESS 0x0C14
-#define S5C73M3_SHARPNESS_0 0x0000
-#define S5C73M3_SHARPNESS_1 0x0001
-#define S5C73M3_SHARPNESS_2 0x0002
-#define S5C73M3_SHARPNESS_M1 0x0003
-#define S5C73M3_SHARPNESS_M2 0x0004
-
-#define S5C73M3_SATURATION 0x0C16
-#define S5C73M3_SATURATION_0 0x0000
-#define S5C73M3_SATURATION_1 0x0001
-#define S5C73M3_SATURATION_2 0x0002
-#define S5C73M3_SATURATION_M1 0x0003
-#define S5C73M3_SATURATION_M2 0x0004
-
-#define S5C73M3_CONTRAST 0x0C18
-#define S5C73M3_CONTRAST_0 0x0000
-#define S5C73M3_CONTRAST_1 0x0001
-#define S5C73M3_CONTRAST_2 0x0002
-#define S5C73M3_CONTRAST_M1 0x0003
-#define S5C73M3_CONTRAST_M2 0x0004
-
-#define S5C73M3_SCENE_MODE 0x0C1A
-#define S5C73M3_SCENE_MODE_NONE 0x0000
-#define S5C73M3_SCENE_MODE_PORTRAIT 0x0001
-#define S5C73M3_SCENE_MODE_LANDSCAPE 0x0002
-#define S5C73M3_SCENE_MODE_SPORTS 0x0003
-#define S5C73M3_SCENE_MODE_INDOOR 0x0004
-#define S5C73M3_SCENE_MODE_BEACH 0x0005
-#define S5C73M3_SCENE_MODE_SUNSET 0x0006
-#define S5C73M3_SCENE_MODE_DAWN 0x0007
-#define S5C73M3_SCENE_MODE_FALL 0x0008
-#define S5C73M3_SCENE_MODE_NIGHT 0x0009
-#define S5C73M3_SCENE_MODE_AGAINSTLIGHT 0x000A
-#define S5C73M3_SCENE_MODE_FIRE 0x000B
-#define S5C73M3_SCENE_MODE_TEXT 0x000C
-#define S5C73M3_SCENE_MODE_CANDLE 0x000D
-
-#define S5C73M3_FIREWORK_CAPTURE 0x0C20
-
-#define S5C73M3_AE_AUTO_BRAKET 0x0B14
-#define S5C73M3_AE_AUTO_BRAKET_EV05 0x0080
-#define S5C73M3_AE_AUTO_BRAKET_EV10 0x0100
-#define S5C73M3_AE_AUTO_BRAKET_EV15 0x0180
-#define S5C73M3_AE_AUTO_BRAKET_EV20 0x0200
-
-#define S5C73M3_SENSOR_STREAMING 0x090A
-#define S5C73M3_SENSOR_STREAMING_OFF 0x0000
-#define S5C73M3_SENSOR_STREAMING_ON 0x0001
-
-#define S5C73M3_AWB_MODE 0x0D02
-#define S5C73M3_AWB_MODE_INCANDESCENT 0x0000
-#define S5C73M3_AWB_MODE_FLUORESCENT1 0x0001
-#define S5C73M3_AWB_MODE_FLUORESCENT2 0x0002
-#define S5C73M3_AWB_MODE_DAYLIGHT 0x0003
-#define S5C73M3_AWB_MODE_CLOUDY 0x0004
-#define S5C73M3_AWB_MODE_AUTO 0x0005
-
-#define S5C73M3_AWB_CON 0x0D00
-#define S5C73M3_AWB_STOP 0x0000/*LOCK*/
-#define S5C73M3_AWB_START 0x0001/*UNLOCK*/
-
-#define S5C73M3_HYBRID_CAPTURE 0x0996
-
-/* S5C73M3 Sensor Mode */
-#define S5C73M3_SYSINIT_MODE 0x0
-#define S5C73M3_PARMSET_MODE 0x1
-#define S5C73M3_MONITOR_MODE 0x2
-#define S5C73M3_STILLCAP_MODE 0x3
-
-/* Interrupt Factor */
-#define S5C73M3_INT_SOUND (1 << 7)
-#define S5C73M3_INT_LENS_INIT (1 << 6)
-#define S5C73M3_INT_FD (1 << 5)
-#define S5C73M3_INT_FRAME_SYNC (1 << 4)
-#define S5C73M3_INT_CAPTURE (1 << 3)
-#define S5C73M3_INT_ZOOM (1 << 2)
-#define S5C73M3_INT_AF (1 << 1)
-#define S5C73M3_INT_MODE (1 << 0)
-
-/* ESD Interrupt */
-#define S5C73M3_INT_ESD (1 << 0)
-
-static const u32 S5C73M3_INIT[] = {
-0x00500009,
-0x00545000,
-0x0F140B08,
-0x0F140000,
-0x0F140900,
-0x0F140403, /*640MHz*/
-0x00545080,
-0x0F140002
-};
-
-static u32 S5C73M3_OTP_CONTROL[] = {
-0xFCFC3310,
-0x00503800,
-0x0054A004,
-0x0F140000,
-0x0054A000,
-0x0F140004,
-0x0054A0D8,
-0x0F140000,
-0x0054A0DC,
-0x0F140004,
-0x0054A0C4,
-0x0F144000,
-0x0054A0D4,
-0x0F140015,
-0x0054A000,
-0x0F140001,
-0x0054A0B4,
-0x0F149F90,
-0x0054A09C,
-0x0F149A95,
-};
-
-static u32 S5C73M3_OTP_PAGE[] = {
-0x0054A0C4,
-0x0F144800,
-0x0054A0C4,
-0x0F144400,
-0x0054A0C4,
-0x0F144200,
-0x0054A004,
-0x0F1400C0,
-0x0054A000,
-0x0F140001,
-};
-
-#ifdef CONFIG_VIDEO_S5C73M3_SPI
-extern int s5c73m3_spi_write(const u8 *addr, const int len, const int txSize);
-#endif
-
-#endif /* __SLP_S5C73M3_H */
diff --git a/drivers/media/video/slp_s5k4ecgx.c b/drivers/media/video/slp_s5k4ecgx.c
deleted file mode 100644
index c78ca71..0000000
--- a/drivers/media/video/slp_s5k4ecgx.c
+++ /dev/null
@@ -1,2335 +0,0 @@
-/*
- * Driver for S5K4ECGX from Samsung Electronics
- *
- * 5Mp CMOS Image Sensor SoC with an Embedded Image Processor
- *
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#include <linux/i2c.h>
-#include <linux/init.h>
-#include <media/v4l2-device.h>
-#include <linux/delay.h>
-#include <linux/version.h>
-#include <media/v4l2-device.h>
-#include <media/v4l2-subdev.h>
-#include <linux/workqueue.h>
-#ifdef CONFIG_VIDEO_SAMSUNG_V4L2
-#include <linux/videodev2_exynos_media.h>
-#include <linux/videodev2_exynos_camera.h>
-#endif
-#include <media/s5k4ecgx_platform.h>
-
-#include "slp_s5k4ecgx.h"
-
-#ifdef S5K4ECGX_USLEEP
-#include <linux/hrtimer.h>
-#endif
-
-#define S5K4ECGX_BURST_MODE
-#ifdef S5K4ECGX_BURST_MODE
- static u16 addr, value;
-
- static int len;
- static u8 buf[SZ_4K] = {0,};
-#else
- static u8 buf[4] = {0,};
-#endif
-
-/* 5M mem size */
-#define S5K4ECGX_INTLV_DATA_MAXSIZE (5 << 20)
-
-static const struct s5k4ecgx_framesize preview_frmsizes[] = {
- { S5K4ECGX_PREVIEW_640, 640, 480 },
- { S5K4ECGX_PREVIEW_176, 640, 480 },
- { S5K4ECGX_PREVIEW_320, 320, 240 },
- { S5K4ECGX_PREVIEW_720, 720, 480 },
- { S5K4ECGX_PREVIEW_800, 800, 480 },
- { S5K4ECGX_PREVIEW_1280, 1280, 720 },
-};
-
-static const struct s5k4ecgx_framesize capture_frmsizes[] = {
- { S5K4ECGX_CAPTURE_5MP, 2560, 1920 },
- { S5K4ECGX_CAPTURE_3MP, 2048, 1536 },
- { S5K4ECGX_CAPTURE_2MP, 1600, 1200 },
- { S5K4ECGX_CAPTURE_1MP, 1280, 960 },
- { S5K4ECGX_CAPTURE_XGA, 1024, 768 },
- { S5K4ECGX_CAPTURE_VGA, 640, 480 },
-};
-
-#define CHECK_ERR(x) if (unlikely((x) < 0)) { \
- cam_err("i2c failed, err %d\n", x); \
- return x; \
- }
-
-#define NELEMS(array) (sizeof(array) / sizeof(array[0]))
-
-#ifdef S5K4ECGX_USLEEP
-/*
- * Use msleep() if the sleep time is over 1000 us.
-*/
-static void s5k4ecgx_usleep(u32 usecs)
-{
- ktime_t expires;
- u64 add_time = (u64)usecs * 1000;
-
- if (unlikely(!usecs))
- return;
-
- expires = ktime_add_ns(ktime_get(), add_time);
- set_current_state(TASK_UNINTERRUPTIBLE);
- schedule_hrtimeout(&expires, HRTIMER_MODE_ABS);
-}
-#endif
-
-static void s5k4ecgx_cam_delay(struct v4l2_subdev *sd)
-{
- struct s5k4ecgx_state *state = to_state(sd);
-
- if (state->scene_mode == SCENE_MODE_NIGHTSHOT ||
- state->scene_mode == SCENE_MODE_FIREWORKS)
- msleep(250);
- else
- msleep(200);
-}
-
-static inline int s5k4ecgx_read(struct i2c_client *client,
- u16 subaddr, u16 *data)
-{
- u8 buf[2];
- int err = 0;
- struct i2c_msg msg = {
- .addr = client->addr,
- .flags = 0,
- .len = 2,
- .buf = buf,
- };
-
- *(u16 *)buf = cpu_to_be16(subaddr);
-
- err = i2c_transfer(client->adapter, &msg, 1);
- if (unlikely(err < 0))
- cam_err("ERR: %d register read fail\n", __LINE__);
-
- msg.flags = I2C_M_RD;
-
- err = i2c_transfer(client->adapter, &msg, 1);
- if (unlikely(err < 0))
- cam_err("ERR: %d register read fail\n", __LINE__);
-
- *data = ((buf[0] << 8) | buf[1]);
-
- return err;
-}
-
-static inline int s5k4ecgx_write(struct i2c_client *client,
- u32 packet)
-{
- u8 buf[4];
- int err = 0, retry_count = 5;
-
- struct i2c_msg msg = {
- .addr = client->addr,
- .flags = 0,
- .buf = buf,
- .len = 4,
- };
-
- if (!client->adapter) {
- cam_err("ERR - can't search i2c client adapter\n");
- return -EIO;
- }
-
- while (retry_count--) {
- *(u32 *)buf = cpu_to_be32(packet);
- err = i2c_transfer(client->adapter, &msg, 1);
- if (likely(err == 1))
- break;
- mdelay(10);
- }
-
- if (unlikely(err < 0)) {
- cam_err("ERR - 0x%08x write failed err=%d\n",
- (u32)packet, err);
- return err;
- }
-
- return (err != 1) ? -1 : 0;
-}
-
-/*
-* Read a register.
-*/
-static int s5k4ecgx_read_reg(struct v4l2_subdev *sd,
- u16 page, u16 addr, u16 *val)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- u32 page_cmd = (0x002C << 16) | page;
- u32 addr_cmd = (0x002E << 16) | addr;
- int err = 0;
-
- cam_dbg("page_cmd=0x%X, addr_cmd=0x%X\n", page_cmd, addr_cmd);
-
- err = s5k4ecgx_write(client, page_cmd);
- CHECK_ERR(err);
- err = s5k4ecgx_write(client, addr_cmd);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, val);
- CHECK_ERR(err);
-
- return 0;
-}
-
-/* program multiple registers */
-static int s5k4ecgx_write_regs(struct v4l2_subdev *sd,
- const u32 *packet, u32 num)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- int ret = -EAGAIN;
- u32 temp = 0;
- u16 delay = 0;
- int retry_count = 5;
-
- struct i2c_msg msg = {
- msg.addr = client->addr,
- msg.flags = 0,
- msg.len = 4,
- msg.buf = buf,
- };
-
- while (num--) {
- temp = *packet++;
-
- if ((temp & S5K4ECGX_DELAY) == S5K4ECGX_DELAY) {
- delay = temp & 0xFFFF;
- cam_dbg("line(%d):delay(0x%x):delay(%d)\n",
- __LINE__, delay, delay);
- msleep(delay);
- continue;
- }
-
-#ifdef S5K4ECGX_BURST_MODE
- addr = temp >> 16;
- value = temp & 0xFFFF;
-
- switch (addr) {
- case 0x0F12:
- if (len == 0) {
- buf[len++] = addr >> 8;
- buf[len++] = addr & 0xFF;
- }
- buf[len++] = value >> 8;
- buf[len++] = value & 0xFF;
-
- if ((*packet >> 16) != addr) {
- msg.len = len;
- goto s5k4ecgx_burst_write;
- }
- break;
-
- case 0xFFFF:
- break;
-
- default:
- msg.len = 4;
- *(u32 *)buf = cpu_to_be32(temp);
- goto s5k4ecgx_burst_write;
- }
-
- continue;
-#else
- *(u32 *)buf = cpu_to_be32(temp);
-#endif
-
-#ifdef S5K4ECGX_BURST_MODE
-s5k4ecgx_burst_write:
- len = 0;
-#endif
- retry_count = 5;
-
- while (retry_count--) {
- ret = i2c_transfer(client->adapter, &msg, 1);
- if (likely(ret == 1))
- break;
- mdelay(10);
- }
-
- if (unlikely(ret < 0)) {
- cam_err("ERR - 0x%08x write failed err=%d\n", \
- (u32)packet, ret);
- break;
- }
- }
-
- if (unlikely(ret < 0)) {
- cam_err("fail to write registers!!\n");
- return -EIO;
- }
-
- return 0;
-}
-
-static int camera_flash_manual_ctrl(struct v4l2_subdev *sd, int mode)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int ret = 0;
- cam_dbg(" E\n");
- if (mode == CAM_FLASH_ON) {
- /* FLASH mode */
- ret = state->pdata->flash_ctrl(CAM_FLASH_ON);
- state->preflash = PREFLASH_ON;
- } else if (mode == CAM_FLASH_TORCH) {
- /* TORCH mode */
- ret = state->pdata->flash_ctrl(CAM_FLASH_TORCH);
- state->preflash = PREFLASH_ON;
- } else {
- ret = state->pdata->flash_ctrl(CAM_FLASH_OFF);
- state->preflash = PREFLASH_OFF;
- }
- return ret;
-}
-
-static int s5k4ecgx_get_exif(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int s5k4ecgx_get_lux(struct v4l2_subdev *sd)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- int msb = 0;
- int lsb = 0;
- int cur_lux = 0;
- bool lowlight = false;
- int err = 0;
- cam_dbg(" E\n");
- err = s5k4ecgx_write(client, 0x002C7000);
- CHECK_ERR(err);
- err = s5k4ecgx_write(client, 0x002E2C18);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, (unsigned short *)&lsb);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, (unsigned short *)&msb);
- CHECK_ERR(err);
-
- cur_lux = (msb << 16) | lsb;
-
- if (cur_lux >= 0x32)
- lowlight = false;
- else
- lowlight = true;
-
- state->lowlight = lowlight;
-
- cam_info("%s, s5k4ecgx_status.lowlight is %d\n", __func__,
- state->lowlight);
- /*this value is under 0x0032 in low light condition */
- return err;
-}
-
-static int s5k4ecgx_ae_stable(struct v4l2_subdev *sd)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- struct s5k4ecgx_state *state = to_state(sd);
- int val = 0;
- int err = 0;
- int cnt;
- do {
- if (state->focus.start == AUTO_FOCUS_OFF) {
- cam_info("af_start_preflash: AF is cancelled!\n");
- state->focus.status = CAMERA_AF_STATUS_MAX;
- break;
- }
-
- err = s5k4ecgx_write(client, 0x002C7000);
- CHECK_ERR(err);
- err = s5k4ecgx_write(client, 0x002E2C74);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, (unsigned short *)&val);
- CHECK_ERR(err);
-
- if (val == 0x1)
- break;
-
- s5k4ecgx_usleep(10*1000);
-
- } while (cnt < 40);
- cam_info("%s, ret value is %d\n", __func__,
- val);
-
- return err;
-}
-
-static int s5k4ecgx_set_awb_lock(struct v4l2_subdev *sd, int val)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
- cam_info(" E\n");
-
- if (val == state->awb_lock)
- return 0;
-
- if (val)
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_awb_lock_EVT1,\
- sizeof(s5k4ecgx_awb_lock_EVT1) / \
- sizeof(s5k4ecgx_awb_lock_EVT1[0]));
- else
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_awb_unlock_EVT1,\
- sizeof(s5k4ecgx_awb_unlock_EVT1) / \
- sizeof(s5k4ecgx_awb_unlock_EVT1[0]));
-
- CHECK_ERR(err);
- state->awb_lock = val;
- cam_info("awb %s\n", val ? "lock" : "unlock");
- return err;
-}
-
-static int s5k4ecgx_set_ae_lock(struct v4l2_subdev *sd, int val)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
- cam_info(" E\n");
-
- if (val == state->ae_lock)
- return 0;
-
- if (val)
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_ae_lock_EVT1,\
- sizeof(s5k4ecgx_ae_lock_EVT1) / \
- sizeof(s5k4ecgx_ae_lock_EVT1[0]));
- else
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_ae_unlock_EVT1,\
- sizeof(s5k4ecgx_ae_unlock_EVT1) / \
- sizeof(s5k4ecgx_ae_unlock_EVT1[0]));
-
- CHECK_ERR(err);
- state->ae_lock = val;
- cam_info("ae %s\n", val ? "lock" : "unlock");
- return err;
-}
-
-static int s5k4ecgx_check_dataline(struct v4l2_subdev *sd, s32 val)
-{
- cam_info("DTP %s\n", val ? "ON" : "OFF");
- return 0;
-}
-
-static int s5k4ecgx_debug_sensor_status(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int s5k4ecgx_check_sensor_status(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static inline int s5k4ecgx_check_esd(struct v4l2_subdev *sd)
-{
- return 0;
-}
-
-static int s5k4ecgx_set_preview_start(struct v4l2_subdev *sd)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = -EINVAL;
-
- cam_info(" E\n");
-
- if ((state->runmode == RUNMODE_NOTREADY) ||
- (state->runmode == RUNMODE_CAPTURING)) {
- cam_err("%s: ERROR - Invalid runmode\n", __func__);
- return -EPERM;
- }
-
- state->focus.status = CAMERA_AF_STATUS_MAX;
-
- if (state->runmode == RUNMODE_CAPTURE_STOP) {
- if (state->preflash != PREFLASH_OFF) {
- err = state->pdata->flash_ctrl(CAM_FLASH_OFF);
- state->preflash = PREFLASH_OFF;
- }
- /* AE/AWB unlock */
- err = s5k4ecgx_set_ae_lock(sd, false);
- err = s5k4ecgx_set_awb_lock(sd, false);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Preview_Return_EVT1,\
- sizeof(s5k4ecgx_Preview_Return_EVT1) / \
- sizeof(s5k4ecgx_Preview_Return_EVT1[0]));
- } else {
- switch (state->preview_frmsizes->index) {
- case S5K4ECGX_PREVIEW_1280:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_1280_Preview_EVT1,\
- sizeof(s5k4ecgx_1280_Preview_EVT1) / \
- sizeof(s5k4ecgx_1280_Preview_EVT1[0]));
- cam_info("S5K4ECGX_PREVIEW_1280\n");
- break;
- case S5K4ECGX_PREVIEW_800:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_800_Preview_EVT1,\
- sizeof(s5k4ecgx_800_Preview_EVT1) / \
- sizeof(s5k4ecgx_800_Preview_EVT1[0]));
- cam_info("S5K4ECGX_PREVIEW_800\n");
- break;
- case S5K4ECGX_PREVIEW_720:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_720_Preview_EVT1,\
- sizeof(s5k4ecgx_720_Preview_EVT1) / \
- sizeof(s5k4ecgx_720_Preview_EVT1[0]));
- cam_info("S5K4ECGX_PREVIEW_720\n");
- break;
- case S5K4ECGX_PREVIEW_320:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_320_Preview_EVT1,\
- sizeof(s5k4ecgx_320_Preview_EVT1) / \
- sizeof(s5k4ecgx_320_Preview_EVT1[0]));
- cam_info("S5K4ECGX_PREVIEW_320\n");
- break;
- case S5K4ECGX_PREVIEW_176:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_176_Preview_EVT1,\
- sizeof(s5k4ecgx_176_Preview_EVT1) / \
- sizeof(s5k4ecgx_176_Preview_EVT1[0]));
- cam_info("S5K4ECGX_PREVIEW_640\n");
- break;
- case S5K4ECGX_PREVIEW_640:
- default:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_640_Preview_EVT1,\
- sizeof(s5k4ecgx_640_Preview_EVT1) / \
- sizeof(s5k4ecgx_640_Preview_EVT1[0]));
- cam_info("S5K4ECGX_PREVIEW_640\n");
- break;
- }
-
- if (state->check_dataline)
- err = s5k4ecgx_check_dataline(sd, 1);
- }
-
- if (unlikely(err)) {
- cam_err("fail to make preview\n");
- return err;
- }
-
- state->runmode = RUNMODE_RUNNING;
-
- return 0;
-}
-
-static int s5k4ecgx_set_preview_stop(struct v4l2_subdev *sd)
-{
- int err = 0;
- cam_info("do nothing.\n");
-
- return err;
-}
-
-static int s5k4ecgx_check_capture_status(struct v4l2_subdev *sd)
-{
- int cnt = 0;
- int status = 0;
- int err = 0;
- struct i2c_client *client = v4l2_get_subdevdata(sd);
-
- msleep(20);
- while (cnt < 150) {
- err = s5k4ecgx_write(client, 0x002C7000);
- CHECK_ERR(err);
- err = s5k4ecgx_write(client, 0x002E0244);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, (unsigned short *)
- &status);
- CHECK_ERR(err);
-
- if (!status)
- break;
- msleep(20);
- cnt++;
- }
- if (cnt)
- pr_info("[s5k4ecgx] wait time for capture frame : %dms\n",
- cnt * 10);
- if (status)
- pr_info("[s5k4ecgx] take picture failed.\n");
-
- return 0;
-}
-
-static int s5k4ecgx_set_capture_start(struct v4l2_subdev *sd)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = -EINVAL;
- cam_info(" E\n");
- /* check lowlight */
- if (state->lowlight) {
- /* check scene mode */
- if (state->scene_mode != SCENE_MODE_NIGHTSHOT &&
- state->scene_mode != SCENE_MODE_FIREWORKS) {
- /*low light capture start */
- err = s5k4ecgx_write_regs(sd,
- s5k4ecgx_Low_Cap_On_EVT1, \
- sizeof(s5k4ecgx_Low_Cap_On_EVT1) / \
- sizeof(s5k4ecgx_Low_Cap_On_EVT1[0]));
- cam_info("s5k4ecgx_set_capture_start : s5k4ecgx_Low_Cap_On_EVT1\n");
-
- /* check flash on */
- if (state->flash_mode == FLASH_MODE_AUTO ||
- state->flash_mode == FLASH_MODE_ON) {
- /* AE/AWB unlock */
- err = s5k4ecgx_set_ae_lock(sd, false);
- CHECK_ERR(err);
- err = s5k4ecgx_set_awb_lock(sd, false);
- CHECK_ERR(err);
- /* Main flash on */
- state->pdata->flash_ctrl(CAM_FLASH_ON);
- state->preflash = PREFLASH_ON;
- /* 200ms AE delay */
- msleep(200);
- } else
- s5k4ecgx_cam_delay(sd);
- }
- } else {
- /* check flash on */
- if (state->flash_mode == FLASH_MODE_ON) {
- /* AE/AWB unlock */
- err = s5k4ecgx_set_ae_lock(sd, false);
- CHECK_ERR(err);
- err = s5k4ecgx_set_awb_lock(sd, false);
- CHECK_ERR(err);
- /* Main flash on */
- state->pdata->flash_ctrl(CAM_FLASH_ON);
- state->preflash = PREFLASH_ON;
- /* 200ms AE delay */
- msleep(200);
- }
- }
-
- /*capture start*/
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Capture_Start_EVT1, \
- sizeof(s5k4ecgx_Capture_Start_EVT1) / \
- sizeof(s5k4ecgx_Capture_Start_EVT1[0]));
- cam_info("s5k4ecgx_set_capture_start : s5k4ecgx_Capture_Start_EVT1\n");
-
- state->runmode = RUNMODE_CAPTURING;
-
- /*capture delay*/
- err = s5k4ecgx_check_capture_status(sd);
-
- /* FIX later - temp code*/
- state->pdata->flash_ctrl(CAM_FLASH_OFF);
- state->preflash = PREFLASH_OFF;
-
- if (unlikely(err)) {
- cam_err("failed to make capture\n");
- return err;
- }
-
- s5k4ecgx_get_exif(sd);
-
- return err;
-}
-
-static int s5k4ecgx_set_sensor_mode(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct s5k4ecgx_state *state = to_state(sd);
-
- if ((ctrl->value != SENSOR_CAMERA) &&
- (ctrl->value != SENSOR_MOVIE)) {
- cam_err("ERR: Not support.(%d)\n", ctrl->value);
- return -EINVAL;
- }
-
- state->sensor_mode = ctrl->value;
-
- return 0;
-}
-
-static int s5k4ecgx_g_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
-{
- cam_dbg("E\n");
- return 0;
-}
-
-static int s5k4ecgx_enum_framesizes(struct v4l2_subdev *sd, \
- struct v4l2_frmsizeenum *fsize)
-{
- struct s5k4ecgx_state *state = to_state(sd);
-
- cam_dbg("s5k4ecgx_enum_framesizes E\n");
-
- /*
- * Return the actual output settings programmed to the camera
- *
- * The camera interface should read this value, this is the resolution
- * at which the sensor would provide framedata to the camera i/f
- * In case of image capture,
- * this returns the default camera resolution (VGA)
- */
- if (state->req_fmt.priv == V4L2_PIX_FMT_MODE_CAPTURE) {
- fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
- fsize->discrete.width = state->capture_frmsizes->width;
- fsize->discrete.height = state->capture_frmsizes->height;
- } else {
- fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE;
- fsize->discrete.width = state->preview_frmsizes->width;
- fsize->discrete.height = state->preview_frmsizes->height;
- }
-
- cam_info("width - %d , height - %d\n",
- fsize->discrete.width, fsize->discrete.height);
-
- return 0;
-}
-
-static int s5k4ecgx_try_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
-{
- int err = 0;
-
- cam_dbg("E\n");
-
- return err;
-}
-
-static int s5k4ecgx_set_fmt_size(struct v4l2_subdev *sd)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
- cam_info("s5k4ecgx_set_fmt_size E\n");
-
- if (state->req_fmt.priv == V4L2_PIX_FMT_MODE_CAPTURE) {
- switch (state->capture_frmsizes->index) {
- case S5K4ECGX_CAPTURE_5MP:
- err = s5k4ecgx_write_regs(sd,
- s5k4ecgx_5M_Capture_EVT1,\
- sizeof(s5k4ecgx_5M_Capture_EVT1) /
- sizeof(s5k4ecgx_5M_Capture_EVT1[0]));
- cam_info("s5k4ecgx_set_fmt_size : S5K4ECGX_CAPTURE_5MP\n");
- break;
- case S5K4ECGX_CAPTURE_3MP:
- err = s5k4ecgx_write_regs(sd,
- s5k4ecgx_3M_Capture_EVT1,
- sizeof(s5k4ecgx_3M_Capture_EVT1) /
- sizeof(s5k4ecgx_3M_Capture_EVT1[0]));
- cam_info("s5k4ecgx_set_fmt_size : S5K4ECGX_CAPTURE_3MP\n");
- break;
- case S5K4ECGX_CAPTURE_2MP:
- err = s5k4ecgx_write_regs(sd,
- s5k4ecgx_2M_Capture_EVT1,
- sizeof(s5k4ecgx_2M_Capture_EVT1) /
- sizeof(s5k4ecgx_2M_Capture_EVT1[0]));
- cam_info("s5k4ecgx_set_fmt_size : S5K4ECGX_CAPTURE_2MP\n");
- break;
- case S5K4ECGX_CAPTURE_1MP:
- err = s5k4ecgx_write_regs(sd,
- s5k4ecgx_1M_Capture_EVT1,
- sizeof(s5k4ecgx_1M_Capture_EVT1) /
- sizeof(s5k4ecgx_1M_Capture_EVT1[0]));
- cam_info("s5k4ecgx_set_fmt_size : S5K4ECGX_CAPTURE_1MP\n");
- break;
- case S5K4ECGX_CAPTURE_XGA:
- err = s5k4ecgx_write_regs(sd,
- s5k4ecgx_XGA_Capture_EVT1,
- sizeof(s5k4ecgx_XGA_Capture_EVT1) /
- sizeof(s5k4ecgx_XGA_Capture_EVT1[0]));
- cam_info("s5k4ecgx_set_fmt_size : S5K4ECGX_CAPTURE_XGA\n");
- break;
- case S5K4ECGX_CAPTURE_VGA:
- err = s5k4ecgx_write_regs(sd,
- s5k4ecgx_VGA_Capture_EVT1,
- sizeof(s5k4ecgx_VGA_Capture_EVT1) /
- sizeof(s5k4ecgx_VGA_Capture_EVT1[0]));
- cam_info("s5k4ecgx_set_fmt_size : S5K4ECGX_CAPTURE_VGA\n");
- break;
- default:
- cam_err("ERR: Invalid capture size\n");
- break;
- }
- }
-
- if (unlikely(err < 0)) {
- cam_err("i2c_write for set framerate\n");
- return -EIO;
- }
-
- return err;
-}
-
-static int s5k4ecgx_s_fmt(struct v4l2_subdev *sd, \
- struct v4l2_mbus_framefmt *ffmt)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- u32 num_entries = 0;
- u32 i;
- u32 err = 0;
- u32 width, height = 0;
-
- cam_info("s5k4ecgx_s_fmt E\n");
- /*
- * Just copying the requested format as of now.
- * We need to check here what are the formats the camera support, and
- * set the most appropriate one according to the request from FIMC
- */
-
- width = state->req_fmt.width = ffmt->width;
- height = state->req_fmt.height = ffmt->height;
-
- if (ffmt->colorspace == V4L2_COLORSPACE_JPEG)
- state->req_fmt.priv = V4L2_PIX_FMT_MODE_CAPTURE;
- else
- state->req_fmt.priv = V4L2_PIX_FMT_MODE_PREVIEW;
-
- switch (state->req_fmt.priv) {
- case V4L2_PIX_FMT_MODE_PREVIEW:
- cam_info("V4L2_PIX_FMT_MODE_PREVIEW\n");
- num_entries = ARRAY_SIZE(preview_frmsizes);
- for (i = 0; i < num_entries; i++) {
- if (width == preview_frmsizes[i].width &&
- height == preview_frmsizes[i].height) {
- state->preview_frmsizes = &preview_frmsizes[i];
- break;
- }
- if (i == (num_entries - 1))
- state->preview_frmsizes = &preview_frmsizes[0];
- }
- break;
-
- case V4L2_PIX_FMT_MODE_CAPTURE:
- cam_info("V4L2_PIX_FMT_MODE_CAPTURE\n");
- num_entries = ARRAY_SIZE(capture_frmsizes);
- for (i = 0; i < num_entries; i++) {
- if (width == capture_frmsizes[i].width && \
- height == capture_frmsizes[i].height) {
- state->capture_frmsizes = &capture_frmsizes[i];
- break;
- }
- }
- break;
-
- default:
- cam_err
- ("ERR(EINVAL) : Invalid capture size width(%d), height(%d)\n",\
- ffmt->width, ffmt->height);
- return -EINVAL;
- }
-
- /*set frame size of preview or capture*/
- err = s5k4ecgx_set_fmt_size(sd);
-
- return err;
-}
-
-static int s5k4ecgx_set_frame_rate(struct v4l2_subdev *sd, u32 fps)
-{
- int err = 0;
-
- cam_info("frame rate %d\n\n", fps);
-
- switch (fps) {
- case 7:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_FPS_7_EVT1,
- sizeof(s5k4ecgx_FPS_7_EVT1) / \
- sizeof(s5k4ecgx_FPS_7_EVT1[0]));
- break;
- case 15:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_FPS_15_EVT1,
- sizeof(s5k4ecgx_FPS_15_EVT1) / \
- sizeof(s5k4ecgx_FPS_15_EVT1[0]));
-
- break;
- case 20:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_FPS_20_EVT1,
- sizeof(s5k4ecgx_FPS_20_EVT1) / \
- sizeof(s5k4ecgx_FPS_20_EVT1[0]));
-
- break;
- case 24:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_FPS_24_EVT1,
- sizeof(s5k4ecgx_FPS_24_EVT1) / \
- sizeof(s5k4ecgx_FPS_24_EVT1[0]));
- break;
- case 30:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_FPS_30_EVT1,
- sizeof(s5k4ecgx_FPS_30_EVT1) / \
- sizeof(s5k4ecgx_FPS_30_EVT1[0]));
- break;
- default:
- cam_err("ERR: Invalid framerate\n");
- break;
- }
-
- if (unlikely(err < 0)) {
- cam_err("i2c_write for set framerate\n");
- return -EIO;
- }
-
- return err;
-}
-
-static int s5k4ecgx_g_parm(struct v4l2_subdev *sd,\
- struct v4l2_streamparm *parms)
-{
- int err = 0;
-
- cam_dbg("E\n");
-
- return err;
-}
-
-static int s5k4ecgx_s_parm(struct v4l2_subdev *sd, \
- struct v4l2_streamparm *parms)
-{
- int err = 0;
- u32 fps = 0;
- u32 denom = parms->parm.capture.timeperframe.denominator;
- u32 numer = parms->parm.capture.timeperframe.numerator;
- struct s5k4ecgx_state *state = to_state(sd);
-
- cam_dbg("E\n");
-
- if (denom >= 1 && numer == 1)
- fps = denom / numer;
- else if (denom == 1 && numer == 0)
- fps = 0;
-
- if (fps != state->set_fps) {
- if (fps < 0 && fps > 30) {
- cam_err("invalid frame rate %d\n", fps);
- fps = 30;
- }
- state->req_fps = fps;
-
- if (state->initialized) {
- err = s5k4ecgx_set_frame_rate(sd, state->req_fps);
- if (err >= 0)
- state->set_fps = state->req_fps;
- }
-
- }
-
- return err;
-}
-
-static int s5k4ecgx_control_stream(struct v4l2_subdev *sd, int cmd)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
-
- switch (cmd) {
- case STREAM_START:
- cam_warn("WARN: do nothing\n");
- break;
-
- case STREAM_STOP:
- cam_dbg("stream stop!!!\n");
- if (state->runmode == RUNMODE_CAPTURING)
- state->runmode = RUNMODE_CAPTURE_STOP;
-
- break;
-
- default:
- cam_err("ERR: Invalid cmd\n");
- break;
- }
-
- if (unlikely(err))
- cam_err("failed to stream start(stop)\n");
-
- return err;
-}
-
-static int s5k4ecgx_init(struct v4l2_subdev *sd, u32 val)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = -EINVAL;
-
- cam_dbg("E\n");
-
- /* set initial regster value */
- if (state->sensor_mode == SENSOR_CAMERA) {
- cam_info("load camera common setting\n");
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_init_reg1_EVT1,
- sizeof(s5k4ecgx_init_reg1_EVT1) / \
- sizeof(s5k4ecgx_init_reg1_EVT1[0]));
-
- msleep(20);
-
- err |= s5k4ecgx_write_regs(sd, s5k4ecgx_init_reg2_EVT1,
- sizeof(s5k4ecgx_init_reg2_EVT1) / \
- sizeof(s5k4ecgx_init_reg2_EVT1[0]));
- } else {
- cam_info("load recording setting\n");
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_init_reg1_EVT1,
- sizeof(s5k4ecgx_init_reg1_EVT1) / \
- sizeof(s5k4ecgx_init_reg1_EVT1[0]));
-
- msleep(20);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_init_reg2_EVT1,
- sizeof(s5k4ecgx_init_reg2_EVT1) / \
- sizeof(s5k4ecgx_init_reg2_EVT1[0]));
- }
-
- if (unlikely(err)) {
- cam_err("failed to init\n");
- return err;
- }
-
- state->runmode = RUNMODE_INIT;
-
- /* We stop stream-output from sensor when starting camera. */
- err = s5k4ecgx_control_stream(sd, STREAM_STOP);
- if (unlikely(err < 0))
- return err;
- msleep(150);
-
- state->initialized = 1;
-
- return 0;
-}
-
-static int s5k4ecgx_s_stream(struct v4l2_subdev *sd, int enable)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
-
- cam_info("stream mode = %d\n", enable);
-
- switch (enable) {
- case STREAM_MODE_CAM_OFF:
- if (state->sensor_mode == SENSOR_CAMERA) {
- if (state->check_dataline)
- err = s5k4ecgx_check_dataline(sd, 0);
- else
- err = s5k4ecgx_control_stream(sd, STREAM_STOP);
- }
- break;
-
- case STREAM_MODE_CAM_ON:
- /* The position of this code need to be adjusted later */
- if ((state->sensor_mode == SENSOR_CAMERA)
- && (state->req_fmt.priv == V4L2_PIX_FMT_MODE_CAPTURE))
- err = s5k4ecgx_set_capture_start(sd);
- else
- err = s5k4ecgx_set_preview_start(sd);
- break;
-
- case STREAM_MODE_MOVIE_ON:
- cam_dbg("do nothing(movie on)!!\n");
- break;
-
- case STREAM_MODE_MOVIE_OFF:
- cam_dbg("do nothing(movie off)!!\n");
- break;
-
- default:
- cam_err("ERR: Invalid stream mode\n");
- break;
- }
-
- if (unlikely(err < 0)) {
- cam_err("ERR: faild\n");
- return err;
- }
-
- return 0;
-}
-
-static int s5k4ecgx_get_af_1stsearch(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- int af_status = -1;
- int err = 0;
- int ret = 0;
- cam_info("- Start\n");
- err = s5k4ecgx_write(client, 0x002C7000);
- CHECK_ERR(err);
- err = s5k4ecgx_write(client, 0x002E2EEE);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, (unsigned short *)&af_status);
- CHECK_ERR(err);
-
- switch (af_status & 0xff) {
- case AF_PROGRESS_1ST:
- ret = CAMERA_AF_STATUS_IN_PROGRESS;
- break;
-
- case AF_SUCCESS_1ST:
- ret = CAMERA_AF_STATUS_SUCCESS;
- break;
-
- case AF_FAIL_1ST:
- default:
- ret = CAMERA_AF_STATUS_FAIL;
- break;
- }
-
- ctrl->value = ret;
- cam_info("- END%d\n", ret);
- return ret;
-}
-
-static int s5k4ecgx_get_af_2ndsearch(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- int af_status = -1;
- int err = 0;
- int ret = 0;
- cam_info(" E\n");
- err = s5k4ecgx_write(client, 0x002C7000);
- CHECK_ERR(err);
- err = s5k4ecgx_write(client, 0x002E2207);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, (unsigned short *)&af_status);
- CHECK_ERR(err);
-
- switch (af_status & 0xff) {
- case AF_SUCCESS_2ND:
- ret = CAMERA_AF_STATUS_SUCCESS;
- break;
-
- case AF_PROGRESS_2ND:
- default:
- ret = CAMERA_AF_STATUS_IN_PROGRESS;
- break;
- }
-
- ctrl->value = ret;
- cam_info(" - END%d\n", ret);
- return ret;
-}
-
-static int s5k4ecgx_get_af_result(struct v4l2_subdev *sd,
- struct v4l2_control *ctrl)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int status = 0;
- cam_info(" - START\n");
- if (state->focus.first == true) {
- state->focus.first = false;
- s5k4ecgx_cam_delay(sd);
- }
-
- /* 1st search af */
- s5k4ecgx_cam_delay(sd);
-
- status = s5k4ecgx_get_af_1stsearch(sd, ctrl);
-
- if (status != CAMERA_AF_STATUS_SUCCESS) {
- state->focus.status = status;
- if (status == CAMERA_AF_STATUS_FAIL)
- state->pdata->flash_ctrl(CAM_FLASH_OFF);
- state->preflash = PREFLASH_OFF;
- return status;
- }
-
- /* 2nd search af */
- s5k4ecgx_cam_delay(sd);
-
- status = s5k4ecgx_get_af_2ndsearch(sd, ctrl);
-
- state->focus.status = status;
- state->pdata->flash_ctrl(CAM_FLASH_OFF);
- state->preflash = PREFLASH_OFF;
-
- cam_info("af_status = %d\n", status);
- cam_info(" - END\n");
- return 0;
-}
-
-
-static int s5k4ecgx_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
-
- /* V4L2_CID_PRIVATE_BASE==0x08000000 */
- /* V4L2_CID_CAMERA_CLASS_BASE==0x009a0900 */
- /* V4L2_CID_BASE==0x00980900 */
-
- if (ctrl->id > V4L2_CID_PRIVATE_BASE)
- cam_dbg("ctrl->id:%d, value=%d V4L2_CID_PRIVATE_BASE\n",\
- ctrl->id - V4L2_CID_PRIVATE_BASE, ctrl->value);
- else if (ctrl->id > V4L2_CID_CAMERA_CLASS_BASE)
- cam_dbg("ctrl->id:%d, value=%d V4L2_CID_CAMERA_CLASS_BASE\n",\
- ctrl->id - V4L2_CID_CAMERA_CLASS_BASE, ctrl->value);
- else
- cam_dbg("ctrl->id:%d, value=%d V4L2_CID_BASE\n", \
- ctrl->id - V4L2_CID_BASE, ctrl->value);
-
- mutex_lock(&state->ctrl_lock);
-
- switch (ctrl->id) {
- case V4L2_CID_CAMERA_AUTO_FOCUS_RESULT:
- ctrl->value = state->focus.status;
- break;
-
- case V4L2_CID_CAM_JPEG_MEMSIZE:
- ctrl->value = S5K4ECGX_INTLV_DATA_MAXSIZE;
- break;
-
- case V4L2_CID_CAM_JPEG_MAIN_SIZE:
- ctrl->value = S5K4ECGX_INTLV_DATA_MAXSIZE;
- break;
-
- case V4L2_CID_CAM_JPEG_MAIN_OFFSET:
- ctrl->value = 0;
- break;
-
- case V4L2_CID_CAM_JPEG_THUMB_SIZE:
- ctrl->value = 0;
- break;
-
- case V4L2_CID_CAM_JPEG_THUMB_OFFSET:
- ctrl->value = 0;
- break;
-
- case V4L2_CID_CAM_JPEG_POSTVIEW_OFFSET:
- ctrl->value = 0;
- break;
-
- case V4L2_CID_CAMERA_EXIF_FLASH:
- ctrl->value = state->exif.flash;
- break;
-
- case V4L2_CID_CAMERA_ISO:
- ctrl->value = state->exif.iso;
- break;
-
- case V4L2_CID_CAMERA_EXIF_ISO:
- ctrl->value = state->exif.iso;
- break;
-
- case V4L2_CID_CAMERA_EXIF_TV:
- ctrl->value = state->exif.tv;
- break;
-
- case V4L2_CID_CAMERA_EXIF_BV:
- ctrl->value = state->exif.bv;
- break;
-
- case V4L2_CID_CAMERA_EXIF_EBV:
- ctrl->value = state->exif.ebv;
- break;
-
- case V4L2_CID_WHITE_BALANCE_PRESET:
- ctrl->value = state->wb_mode;
- break;
-
- default:
- cam_err("no such control id %d\n",
- ctrl->id - V4L2_CID_PRIVATE_BASE);
- break;
- }
-
- mutex_unlock(&state->ctrl_lock);
-
- return err;
-}
-
-static int s5k4ecgx_set_iso(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- int err;
- struct s5k4ecgx_state *state = to_state(sd);
- cam_dbg("E, value %d\n", ctrl->value);
-
-retry:
- switch (ctrl->value) {
- case ISO_AUTO:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_ISO_Auto_EVT1, \
- sizeof(s5k4ecgx_ISO_Auto_EVT1) / \
- sizeof(s5k4ecgx_ISO_Auto_EVT1[0]));
- break;
-
- case ISO_50:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_ISO_50_EVT1, \
- sizeof(s5k4ecgx_ISO_50_EVT1) / \
- sizeof(s5k4ecgx_ISO_50_EVT1[0]));
- break;
-
- case ISO_100:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_ISO_100_EVT1, \
- sizeof(s5k4ecgx_ISO_100_EVT1) / \
- sizeof(s5k4ecgx_ISO_100_EVT1[0]));
- break;
-
- case ISO_200:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_ISO_200_EVT1, \
- sizeof(s5k4ecgx_ISO_200_EVT1) / \
- sizeof(s5k4ecgx_ISO_200_EVT1[0]));
- break;
-
- case ISO_400:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_ISO_400_EVT1, \
- sizeof(s5k4ecgx_ISO_400_EVT1) / \
- sizeof(s5k4ecgx_ISO_400_EVT1[0]));
- break;
-
- default:
- cam_warn("invalid value, %d\n", ctrl->value);
- ctrl->value = ISO_AUTO;
- goto retry;
- }
-
- state->exif.iso = ctrl->value;
-
- cam_dbg("X\n");
- return 0;
-}
-
-static int s5k4ecgx_set_metering(struct v4l2_subdev *sd, int val)
-{
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case METERING_CENTER:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Metering_Center_EVT1, \
- sizeof(s5k4ecgx_Metering_Center_EVT1) / \
- sizeof(s5k4ecgx_Metering_Center_EVT1[0]));
- break;
-
- case METERING_SPOT:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Metering_Spot_EVT1, \
- sizeof(s5k4ecgx_Metering_Spot_EVT1) / \
- sizeof(s5k4ecgx_Metering_Spot_EVT1[0]));
- break;
-
- case METERING_MATRIX:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Metering_Matrix_EVT1, \
- sizeof(s5k4ecgx_Metering_Matrix_EVT1) / \
- sizeof(s5k4ecgx_Metering_Matrix_EVT1[0]));
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = METERING_CENTER;
- goto retry;
- }
-
- cam_dbg("X\n");
- return 0;
-}
-
-static int s5k4ecgx_set_exposure(struct v4l2_subdev *sd, \
- struct v4l2_control *ctrl)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = -EINVAL;
-
- cam_dbg("E\n");
-
- if (state->check_dataline)
- return 0;
-
- switch (ctrl->value) {
- case 0:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Minus_4_EVT1, \
- sizeof(s5k4ecgx_EV_Minus_4_EVT1) / \
- sizeof(s5k4ecgx_EV_Minus_4_EVT1[0]));
- break;
- case 1:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Minus_3_EVT1, \
- sizeof(s5k4ecgx_EV_Minus_3_EVT1) / \
- sizeof(s5k4ecgx_EV_Minus_3_EVT1[0]));
-
- break;
- case 2:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Minus_2_EVT1, \
- sizeof(s5k4ecgx_EV_Minus_2_EVT1) / \
- sizeof(s5k4ecgx_EV_Minus_2_EVT1[0]));
- break;
- case 3:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Minus_1_EVT1, \
- sizeof(s5k4ecgx_EV_Minus_1_EVT1) / \
- sizeof(s5k4ecgx_EV_Minus_1_EVT1[0]));
- break;
- case 4:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Default_EVT1, \
- sizeof(s5k4ecgx_EV_Default_EVT1) / \
- sizeof(s5k4ecgx_EV_Default_EVT1[0]));
- break;
- case 5:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Plus_1_EVT1, \
- sizeof(s5k4ecgx_EV_Plus_1_EVT1) / \
- sizeof(s5k4ecgx_EV_Plus_1_EVT1[0]));
- break;
- case 6:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Plus_2_EVT1, \
- sizeof(s5k4ecgx_EV_Plus_2_EVT1) / \
- sizeof(s5k4ecgx_EV_Plus_2_EVT1[0]));
- break;
- case 7:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Plus_3_EVT1, \
- sizeof(s5k4ecgx_EV_Plus_3_EVT1) / \
- sizeof(s5k4ecgx_EV_Plus_3_EVT1[0]));
- break;
- case 8:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_EV_Plus_4_EVT1, \
- sizeof(s5k4ecgx_EV_Plus_4_EVT1) / \
- sizeof(s5k4ecgx_EV_Plus_4_EVT1[0]));
- break;
- default:
- cam_err("ERR: invalid brightness(%d)\n", ctrl->value);
- return err;
- break;
- }
-
- if (unlikely(err < 0)) {
- cam_err("ERR: i2c_write for set brightness\n");
- return -EIO;
- }
-
- return 0;
-}
-
-static int s5k4ecgx_set_whitebalance(struct v4l2_subdev *sd, int val)
-{
- int err;
- struct s5k4ecgx_state *state = to_state(sd);
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case WHITE_BALANCE_AUTO:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_WB_Auto_EVT1, \
- sizeof(s5k4ecgx_WB_Auto_EVT1) / \
- sizeof(s5k4ecgx_WB_Auto_EVT1[0]));
- break;
-
- case WHITE_BALANCE_SUNNY:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_WB_Sunny_EVT1, \
- sizeof(s5k4ecgx_WB_Sunny_EVT1) / \
- sizeof(s5k4ecgx_WB_Sunny_EVT1[0]));
- break;
-
- case WHITE_BALANCE_CLOUDY:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_WB_Cloudy_EVT1, \
- sizeof(s5k4ecgx_WB_Cloudy_EVT1) / \
- sizeof(s5k4ecgx_WB_Cloudy_EVT1[0]));
- break;
-
- case WHITE_BALANCE_TUNGSTEN:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_WB_Tungsten_EVT1, \
- sizeof(s5k4ecgx_WB_Tungsten_EVT1) / \
- sizeof(s5k4ecgx_WB_Tungsten_EVT1[0]));
- break;
-
- case WHITE_BALANCE_FLUORESCENT:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_WB_Fluorescent_EVT1, \
- sizeof(s5k4ecgx_WB_Fluorescent_EVT1) / \
- sizeof(s5k4ecgx_WB_Fluorescent_EVT1[0]));
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = WHITE_BALANCE_AUTO;
- goto retry;
- }
-
- state->wb_mode = val;
- cam_dbg("X\n");
- return 0;
-}
-
-static int s5k4ecgx_set_scene_mode(struct v4l2_subdev *sd, int val)
-{
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case SCENE_MODE_NONE:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Default_EVT1, \
- sizeof(s5k4ecgx_Scene_Default_EVT1) / \
- sizeof(s5k4ecgx_Scene_Default_EVT1[0]));
- break;
-
- case SCENE_MODE_PORTRAIT:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Portrait_EVT1, \
- sizeof(s5k4ecgx_Scene_Portrait_EVT1) / \
- sizeof(s5k4ecgx_Scene_Portrait_EVT1[0]));
- break;
-
- case SCENE_MODE_LANDSCAPE:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Landscape_EVT1, \
- sizeof(s5k4ecgx_Scene_Landscape_EVT1) / \
- sizeof(s5k4ecgx_Scene_Landscape_EVT1[0]));
- break;
-
- case SCENE_MODE_SPORTS:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Sports_EVT1, \
- sizeof(s5k4ecgx_Scene_Sports_EVT1) / \
- sizeof(s5k4ecgx_Scene_Sports_EVT1[0]));
- break;
-
- case SCENE_MODE_PARTY_INDOOR:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Party_Indoor_EVT1,\
- sizeof(s5k4ecgx_Scene_Party_Indoor_EVT1) / \
- sizeof(s5k4ecgx_Scene_Party_Indoor_EVT1[0]));
- break;
-
- case SCENE_MODE_BEACH_SNOW:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Beach_Snow_EVT1, \
- sizeof(s5k4ecgx_Scene_Beach_Snow_EVT1) / \
- sizeof(s5k4ecgx_Scene_Beach_Snow_EVT1[0]));
- break;
-
- case SCENE_MODE_SUNSET:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Sunset_EVT1, \
- sizeof(s5k4ecgx_Scene_Sunset_EVT1) / \
- sizeof(s5k4ecgx_Scene_Sunset_EVT1[0]));
- break;
-
- case SCENE_MODE_DUSK_DAWN:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Duskdawn_EVT1, \
- sizeof(s5k4ecgx_Scene_Duskdawn_EVT1) / \
- sizeof(s5k4ecgx_Scene_Duskdawn_EVT1[0]));
- break;
-
- case SCENE_MODE_FALL_COLOR:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Fall_Color_EVT1, \
- sizeof(s5k4ecgx_Scene_Fall_Color_EVT1) / \
- sizeof(s5k4ecgx_Scene_Fall_Color_EVT1[0]));
- break;
-
- case SCENE_MODE_NIGHTSHOT:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Nightshot_EVT1, \
- sizeof(s5k4ecgx_Scene_Nightshot_EVT1) / \
- sizeof(s5k4ecgx_Scene_Nightshot_EVT1[0]));
- break;
-
- case SCENE_MODE_BACK_LIGHT:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Backlight_EVT1, \
- sizeof(s5k4ecgx_Scene_Backlight_EVT1) / \
- sizeof(s5k4ecgx_Scene_Backlight_EVT1[0]));
- break;
-
- case SCENE_MODE_FIREWORKS:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Fireworks_EVT1, \
- sizeof(s5k4ecgx_Scene_Fireworks_EVT1) / \
- sizeof(s5k4ecgx_Scene_Fireworks_EVT1[0]));
- break;
-
- case SCENE_MODE_TEXT:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Scene_Text_EVT1, \
- sizeof(s5k4ecgx_Scene_Text_EVT1) / \
- sizeof(s5k4ecgx_Scene_Text_EVT1[0]));
- break;
-
- case SCENE_MODE_CANDLE_LIGHT:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_Scene_Candle_Light_EVT1, \
- sizeof(s5k4ecgx_Scene_Candle_Light_EVT1) / \
- sizeof(s5k4ecgx_Scene_Candle_Light_EVT1[0]));
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = SCENE_MODE_NONE;
- goto retry;
- }
-
- cam_dbg("X\n");
- return 0;
-}
-
-static int s5k4ecgx_set_effect(struct v4l2_subdev *sd, int val)
-{
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case IMAGE_EFFECT_NONE:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Effect_Normal_EVT1, \
- sizeof(s5k4ecgx_Effect_Normal_EVT1) / \
- sizeof(s5k4ecgx_Effect_Normal_EVT1[0]));
- break;
-
- case IMAGE_EFFECT_SEPIA:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Effect_Sepia_EVT1, \
- sizeof(s5k4ecgx_Effect_Sepia_EVT1) / \
- sizeof(s5k4ecgx_Effect_Sepia_EVT1[0]));
- break;
-
- case IMAGE_EFFECT_BNW:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_Effect_Black_White_EVT1, \
- sizeof(s5k4ecgx_Effect_Black_White_EVT1) / \
- sizeof(s5k4ecgx_Effect_Black_White_EVT1[0]));
- break;
-
- case IMAGE_EFFECT_NEGATIVE:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Effect_Negative_EVT1, \
- sizeof(s5k4ecgx_Effect_Negative_EVT1) / \
- sizeof(s5k4ecgx_Effect_Negative_EVT1[0]));
- break;
-
- case IMAGE_EFFECT_AQUA:
- err = s5k4ecgx_write_regs(sd, \
- s5k4ecgx_Effect_Solarization_EVT1, \
- sizeof(s5k4ecgx_Effect_Solarization_EVT1) / \
- sizeof(s5k4ecgx_Effect_Solarization_EVT1[0]));
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = IMAGE_EFFECT_NONE;
- goto retry;
- }
-
- cam_dbg("X\n");
- return 0;
-}
-
-static int s5k4ecgx_set_wdr(struct v4l2_subdev *sd, int val)
-{
- int err;
- cam_dbg("E, value %d\n", val);
-
-retry:
- switch (val) {
- case WDR_OFF:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_WDR_off_EVT1, \
- sizeof(s5k4ecgx_WDR_off_EVT1) / \
- sizeof(s5k4ecgx_WDR_off_EVT1[0]));
- break;
-
- case WDR_ON:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_WDR_on_EVT1, \
- sizeof(s5k4ecgx_WDR_on_EVT1) / \
- sizeof(s5k4ecgx_WDR_on_EVT1[0]));
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = WDR_OFF;
- goto retry;
- }
-
- cam_dbg("X\n");
- return 0;
-}
-
-static int s5k4ecgx_set_jpeg_quality(struct v4l2_subdev *sd, int val)
-{
- int err = -1;
- cam_dbg("E, value %d\n", val);
-
- if (val <= 65) /* Normal */
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Jpeg_Quality_Low_EVT1,\
- sizeof(s5k4ecgx_Jpeg_Quality_Low_EVT1) / \
- sizeof(s5k4ecgx_Jpeg_Quality_Low_EVT1[0]));
- else if (val <= 75) /* Fine */
- err = s5k4ecgx_write_regs
- (sd, s5k4ecgx_Jpeg_Quality_Normal_EVT1,\
- sizeof(s5k4ecgx_Jpeg_Quality_Normal_EVT1) / \
- sizeof(s5k4ecgx_Jpeg_Quality_Normal_EVT1[0]));
- else /* Superfine */
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Jpeg_Quality_High_EVT1,\
- sizeof(s5k4ecgx_Jpeg_Quality_High_EVT1) / \
- sizeof(s5k4ecgx_Jpeg_Quality_High_EVT1[0]));
-
- CHECK_ERR(err);
-
- cam_dbg("X\n");
- return 0;
-}
-
-static int s5k4ecgx_return_focus(struct v4l2_subdev *sd)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = -EINVAL;
-
- cam_info("E\n");
-
- switch (state->focus.mode) {
- case FOCUS_MODE_MACRO:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Macro_mode_1_EVT1,\
- sizeof(s5k4ecgx_AF_Macro_mode_1_EVT1) / \
- sizeof(s5k4ecgx_AF_Macro_mode_1_EVT1[0]));
-
- s5k4ecgx_cam_delay(sd);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Macro_mode_2_EVT1,\
- sizeof(s5k4ecgx_AF_Macro_mode_2_EVT1) / \
- sizeof(s5k4ecgx_AF_Macro_mode_2_EVT1[0]));
-
- s5k4ecgx_cam_delay(sd);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Macro_mode_3_EVT1,\
- sizeof(s5k4ecgx_AF_Macro_mode_3_EVT1) / \
- sizeof(s5k4ecgx_AF_Macro_mode_3_EVT1[0]));
-
- break;
-
- default:
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Normal_mode_1_EVT1,\
- sizeof(s5k4ecgx_AF_Normal_mode_1_EVT1) / \
- sizeof(s5k4ecgx_AF_Normal_mode_1_EVT1[0]));
-
- s5k4ecgx_cam_delay(sd);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Normal_mode_2_EVT1,\
- sizeof(s5k4ecgx_AF_Normal_mode_2_EVT1) / \
- sizeof(s5k4ecgx_AF_Normal_mode_2_EVT1[0]));
-
- s5k4ecgx_cam_delay(sd);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Normal_mode_3_EVT1,\
- sizeof(s5k4ecgx_AF_Normal_mode_3_EVT1) / \
- sizeof(s5k4ecgx_AF_Normal_mode_3_EVT1[0]));
-
- break;
- }
-
- CHECK_ERR(err);
- return 0;
-}
-
-/* PX: Stop AF */
-static int s5k4ecgx_stop_af(struct v4l2_subdev *sd, s32 touch)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
-
- cam_info("E\n");
- mutex_lock(&state->af_lock);
-
- switch (state->focus.status) {
- case CAMERA_AF_STATUS_FAIL:
- case CAMERA_AF_STATUS_SUCCESS:
- cam_dbg("Stop AF, focus mode %d, AF result %d\n",
- state->focus.mode, state->focus.status);
-
- err = s5k4ecgx_set_ae_lock(sd, false);
- err = s5k4ecgx_set_awb_lock(sd, false);
- if (unlikely(err)) {
- cam_err("%s: ERROR, fail to set lock\n", __func__);
- goto err_out;
- }
- state->focus.status = CAMERA_AF_STATUS_MAX;
- state->preflash = PREFLASH_NONE;
- break;
-
- case CAMERA_AF_STATUS_MAX:
- break;
-
- default:
- cam_err("%s: WARNING, unnecessary calling. AF status=%d\n",
- __func__, state->focus.status);
- /* Return 0. */
- goto err_out;
- break;
- }
-
- if (!touch) {
- /* We move lens to default position if af is cancelled.*/
- err = s5k4ecgx_return_focus(sd);
- if (unlikely(err)) {
- cam_err("%s: ERROR, fail to af_norma_mode (%d)\n",
- __func__, err);
- goto err_out;
- }
- }
-
- mutex_unlock(&state->af_lock);
- cam_info("X\n");
- return 0;
-
-err_out:
- mutex_unlock(&state->af_lock);
- return err;
-}
-
-static int s5k4ecgx_set_af_mode(struct v4l2_subdev *sd, int val)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = -1;
- u32 af_cancel = 0;
- cam_info(" - value %d\n", val);
-
- mutex_lock(&state->af_lock);
-
-retry:
- af_cancel = (u32)val & FOCUS_MODE_DEFAULT;
- switch (val) {
- case FOCUS_MODE_AUTO:
- case FOCUS_MODE_INFINITY:
- state->focus.mode = val;
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Normal_mode_1_EVT1,\
- sizeof(s5k4ecgx_AF_Normal_mode_1_EVT1) / \
- sizeof(s5k4ecgx_AF_Normal_mode_1_EVT1[0]));
-
- s5k4ecgx_cam_delay(sd);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Normal_mode_2_EVT1,\
- sizeof(s5k4ecgx_AF_Normal_mode_2_EVT1) / \
- sizeof(s5k4ecgx_AF_Normal_mode_2_EVT1[0]));
-
- s5k4ecgx_cam_delay(sd);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Normal_mode_3_EVT1,\
- sizeof(s5k4ecgx_AF_Normal_mode_3_EVT1) / \
- sizeof(s5k4ecgx_AF_Normal_mode_3_EVT1[0]));
-
- break;
-
- case FOCUS_MODE_MACRO:
- state->focus.mode = val;
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Macro_mode_1_EVT1,\
- sizeof(s5k4ecgx_AF_Macro_mode_1_EVT1) / \
- sizeof(s5k4ecgx_AF_Macro_mode_1_EVT1[0]));
-
- s5k4ecgx_cam_delay(sd);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Macro_mode_2_EVT1,\
- sizeof(s5k4ecgx_AF_Macro_mode_2_EVT1) / \
- sizeof(s5k4ecgx_AF_Macro_mode_2_EVT1[0]));
-
- s5k4ecgx_cam_delay(sd);
-
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_AF_Macro_mode_3_EVT1,\
- sizeof(s5k4ecgx_AF_Macro_mode_3_EVT1) / \
- sizeof(s5k4ecgx_AF_Macro_mode_3_EVT1[0]));
-
- break;
-
- default:
- cam_warn("invalid value, %d\n", val);
- val = FOCUS_MODE_AUTO;
- goto retry;
- }
-
- state->focus.mode = val;
- mutex_unlock(&state->af_lock);
-
- if (af_cancel)
- s5k4ecgx_stop_af(sd, 0);
-
- return 0;
-
- CHECK_ERR(err);
- return 0;
-}
-
-/* PX: Do AF */
-static int s5k4ecgx_do_af(struct v4l2_subdev *sd)
-{
- struct i2c_client *client = v4l2_get_subdevdata(sd);
- struct s5k4ecgx_state *state = to_state(sd);
- u16 read_value = 0;
- u32 count = 0;
- int err = 0;
-
- cam_info("E\n");
-
- /* AE, AWB Lock */
- err = s5k4ecgx_set_ae_lock(sd, true);
- CHECK_ERR(err);
- err = s5k4ecgx_set_awb_lock(sd, true);
- CHECK_ERR(err);
-
- /* AF start */
- err = s5k4ecgx_write_regs(sd, s5k4ecgx_Single_AF_Start_EVT1,\
- sizeof(s5k4ecgx_Single_AF_Start_EVT1) / \
- sizeof(s5k4ecgx_Single_AF_Start_EVT1[0]));
- CHECK_ERR(err);
-
- /* 1 frame delay */
- s5k4ecgx_cam_delay(sd);
-
- /* AF Searching */
- cam_dbg("AF 1st search\n");
-
- /*1st search*/
- for (count = 0; count < FIRST_AF_SEARCH_COUNT; count++) {
- if (state->focus.start == AUTO_FOCUS_OFF) {
- cam_dbg("do_af: AF is cancelled while doing(1st)\n");
- state->focus.status = CAMERA_AF_STATUS_MAX;
- goto check_done;
- }
-
- /* 1 frame delay */
- s5k4ecgx_cam_delay(sd);
-
- read_value = 0x0;
- err = s5k4ecgx_write(client, 0x002C7000);
- CHECK_ERR(err);
- err = s5k4ecgx_write(client, 0x002E2EEE);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, &read_value);
- CHECK_ERR(err);
- cam_info("1st AF status(%02d) = 0x%04X\n",
- count, read_value);
-
- if ((read_value & 0xff) != AF_PROGRESS_1ST)
- break;
- }
-
- if ((read_value & 0xff) != AF_SUCCESS_1ST) {
- cam_err("%s: ERROR, 1st AF failed. count=%d, read_val=0x%X\n\n",
- __func__, count, read_value);
- state->focus.status = CAMERA_AF_STATUS_FAIL;
- goto check_done;
- }
-
- /*2nd search*/
- cam_dbg("AF 2nd search\n");
- for (count = 0; count < SECOND_AF_SEARCH_COUNT; count++) {
- if (state->focus.start == AUTO_FOCUS_OFF) {
- cam_dbg("do_af: AF is cancelled while doing(2nd)\n");
- state->focus.status = CAMERA_AF_STATUS_MAX;
- goto check_done;
- }
-
- read_value = 0x0;
- err = s5k4ecgx_write(client, 0x002C7000);
- CHECK_ERR(err);
- err = s5k4ecgx_write(client, 0x002E2207);
- CHECK_ERR(err);
- err = s5k4ecgx_read(client, 0x0F12, &read_value);
- CHECK_ERR(err);
- cam_info("2nd AF status(%02d) = 0x%04X\n",
- count, read_value);
- if ((read_value & 0xff) == AF_SUCCESS_2ND)
- break;
- }
-
- if (count >= SECOND_AF_SEARCH_COUNT) {
- /* 0x01XX means "Not Finish". */
- cam_err("%s: ERROR, 2nd AF failed. read_val=0x%X\n\n",
- __func__, read_value & 0xff);
- state->focus.status = CAMERA_AF_STATUS_FAIL;
- goto check_done;
- }
-
- cam_info("AF Success!\n");
- state->focus.status = CAMERA_AF_STATUS_SUCCESS;
-
-check_done:
- /* restore write mode */
-
- /* We only unlocked AE,AWB in case of being cancelled.
- * But we now unlock it unconditionally if AF is started,
- */
- if (state->focus.status == CAMERA_AF_STATUS_MAX) {
- cam_dbg("%s: Single AF cancelled.\n", __func__);
- /* AE, AWB Lock */
- err = s5k4ecgx_set_ae_lock(sd, false);
- CHECK_ERR(err);
- err = s5k4ecgx_set_awb_lock(sd, false);
- CHECK_ERR(err);
- } else {
- state->focus.start = AUTO_FOCUS_OFF;
- cam_dbg("%s: Single AF finished\n", __func__);
- }
-
- if ((state->preflash == PREFLASH_ON) &&
- (state->sensor_mode == SENSOR_CAMERA)) {
- state->pdata->flash_ctrl(CAM_FLASH_OFF);
- state->preflash = PREFLASH_OFF;
- if (state->focus.status == CAMERA_AF_STATUS_MAX)
- state->preflash = PREFLASH_NONE;
- }
-
- /* Notice: we here turn touch flag off set previously
- * when doing Touch AF. */
-
- return 0;
-}
-
-static void s5k4ecgx_af_worker(struct work_struct *work)
-{
- struct s5k4ecgx_state *state = container_of(work, \
- struct s5k4ecgx_state, af_work);
- struct v4l2_subdev *sd = &state->sd;
- int err = -EINVAL;
-
- cam_info("E\n");
-
- mutex_lock(&state->af_lock);
-
- /* 1. Check Low Light */
- err = s5k4ecgx_get_lux(sd);
-
- /* 2. Turn on Pre Flash */
- switch (state->flash_mode) {
- case FLASH_MODE_AUTO:
- if (!state->lowlight) {
- /* flash not needed */
- break;
- }
-
- case FLASH_MODE_ON:
- state->pdata->flash_ctrl(CAM_FLASH_TORCH);
- state->preflash = PREFLASH_ON;
- break;
-
- case FLASH_MODE_OFF:
- default:
- break;
- }
-
- if (state->preflash == PREFLASH_ON) {
- /* 3. Waiting until AE Stable */
- err = s5k4ecgx_ae_stable(sd);
- } else if (state->focus.start == AUTO_FOCUS_OFF) {
- cam_info("af_start_preflash: AF is cancelled!\n");
- state->focus.status = CAMERA_AF_STATUS_MAX;
- }
-
- if (state->focus.status == CAMERA_AF_STATUS_MAX) {
- if (state->preflash == PREFLASH_ON) {
- state->pdata->flash_ctrl(CAM_FLASH_OFF);
- state->preflash = PREFLASH_OFF;
- }
- goto out;
- }
-
- s5k4ecgx_do_af(sd);
-
-out:
- mutex_unlock(&state->af_lock);
- cam_info("X\n");
- return;
-}
-
-static int s5k4ecgx_set_af(struct v4l2_subdev *sd, s32 val)
-{
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
-
- cam_info("%s: %s, focus mode %d\n", __func__,
- val ? "start" : "stop", state->focus.mode);
-
- if (unlikely((u32)val >= AUTO_FOCUS_MAX)) {
- cam_err("%s: ERROR, invalid value(%d)\n", __func__, val);
- return -EINVAL;
- }
-
-/* need to check the AF scenario with SLP team - temp code */
-/*
- if (state->focus.start == val)
- return 0;
-*/
- state->focus.start = val;
-
- if (val == AUTO_FOCUS_ON) {
- err = queue_work(state->workqueue, &state->af_work);
- if (likely(err))
- state->focus.status = CAMERA_AF_STATUS_IN_PROGRESS;
- else
- cam_warn("WARNING, AF is still processing. So new AF cannot start\n");
- } else {
- /* Cancel AF */
- /* 1. AE/AWB UnLock */
- err = s5k4ecgx_set_ae_lock(sd, false);
- CHECK_ERR(err);
- err = s5k4ecgx_set_awb_lock(sd, false);
- CHECK_ERR(err);
- /* 2. Turn off on pre flash */
- state->pdata->flash_ctrl(CAM_FLASH_OFF);
- state->preflash = PREFLASH_OFF;
- /* 3. Cancel AF mode */
- err = s5k4ecgx_set_af_mode(sd, state->focus.mode);
- cam_info("set_af: AF cancel requested!\n");
- }
-
- cam_info("X\n");
- return 0;
-}
-
-static int s5k4ecgx_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
-{
- /* struct i2c_client *client = v4l2_get_subdevdata(sd); */
- struct s5k4ecgx_state *state = to_state(sd);
- int err = 0;
-
- /* V4L2_CID_PRIVATE_BASE == 0x08000000 */
- /* V4L2_CID_CAMERA_CLASS_BASE == 0x009a0900 */
- /* V4L2_CID_BASE == 0x00980900 */
-
- if (ctrl->id > V4L2_CID_PRIVATE_BASE)
- cam_dbg("ctrl->id:%d, value=%d V4L2_CID_PRIVATE_BASE\n", \
- ctrl->id - V4L2_CID_PRIVATE_BASE, ctrl->value);
- else if (ctrl->id > V4L2_CID_CAMERA_CLASS_BASE)
- cam_dbg("ctrl->id:%d, value=%d V4L2_CID_CAMERA_CLASS_BASE\n",\
- ctrl->id - V4L2_CID_CAMERA_CLASS_BASE, ctrl->value);
- else
- cam_dbg("ctrl->id:%d, value=%d V4L2_CID_BASE\n", \
- ctrl->id - V4L2_CID_BASE, ctrl->value);
-
- if ((ctrl->id != V4L2_CID_CAMERA_CHECK_DATALINE)
- && (ctrl->id != V4L2_CID_CAMERA_SENSOR_MODE)
- && ((ctrl->id != V4L2_CID_CAMERA_VT_MODE))
- && (!state->initialized)) {
- cam_warn("camera isn't initialized\n");
- return 0;
- }
-
- if (ctrl->id != V4L2_CID_CAMERA_SET_AUTO_FOCUS)
- mutex_lock(&state->ctrl_lock);
-
- switch (ctrl->id) {
- case V4L2_CID_CAM_JPEG_QUALITY:
- err = s5k4ecgx_set_jpeg_quality(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_ISO:
- err = s5k4ecgx_set_iso(sd, ctrl);
- break;
-
- case V4L2_CID_CAMERA_METERING:
- if (state->sensor_mode == SENSOR_CAMERA)
- err = s5k4ecgx_set_metering(sd, ctrl->value);
- break;
-
- case V4L2_CID_EXPOSURE:
- err = s5k4ecgx_set_exposure(sd, ctrl);
- cam_dbg("V4L2_CID_EXPOSURE [%d]\n", ctrl->value);
- break;
-
- case V4L2_CID_WHITE_BALANCE_PRESET:
- case V4L2_CID_CAMERA_WHITE_BALANCE:
- err = s5k4ecgx_set_whitebalance(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_SCENE_MODE:
- state->scene_mode = ctrl->value;
- err = s5k4ecgx_set_scene_mode(sd, ctrl->value);
- break;
-
- case V4L2_CID_COLORFX:
- err = s5k4ecgx_set_effect(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_WDR:
- err = s5k4ecgx_set_wdr(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_FLASH_MODE:
- state->flash_mode = ctrl->value;
- break;
-
- case V4L2_CID_FOCUS_AUTO_MODE:
- case V4L2_CID_CAMERA_FOCUS_MODE:
- err = s5k4ecgx_set_af_mode(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_SET_AUTO_FOCUS:
- err = s5k4ecgx_set_af(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_CHECK_DATALINE:
- state->check_dataline = ctrl->value;
- cam_dbg("check_dataline = %d\n", state->check_dataline);
- err = 0;
- break;
-
- case V4L2_CID_CAMERA_SENSOR_MODE:
- err = s5k4ecgx_set_sensor_mode(sd, ctrl);
- cam_dbg("sensor_mode = %d\n", ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_CHECK_DATALINE_STOP:
- cam_dbg("do nothing\n");
- break;
-
- case V4L2_CID_CAMERA_CHECK_ESD:
- err = s5k4ecgx_check_esd(sd);
- break;
-
- case V4L2_CID_CAMERA_FRAME_RATE:
- err = s5k4ecgx_set_frame_rate(sd, ctrl->value);
- break;
-
- case V4L2_CID_CAMERA_CHECK_SENSOR_STATUS:
- s5k4ecgx_debug_sensor_status(sd);
- err = s5k4ecgx_check_sensor_status(sd);
- break;
-
- default:
- cam_err("ERR(ENOIOCTLCMD)\n");
- /* no errors return.*/
- break;
- }
-
- if (ctrl->id != V4L2_CID_CAMERA_SET_AUTO_FOCUS)
- mutex_unlock(&state->ctrl_lock);
-
- cam_dbg("X\n");
- return err;
-}
-
-static const struct v4l2_subdev_core_ops s5k4ecgx_core_ops = {
- .init = s5k4ecgx_init, /* initializing API */
- .g_ctrl = s5k4ecgx_g_ctrl,
- .s_ctrl = s5k4ecgx_s_ctrl,
-};
-
-static const struct v4l2_subdev_video_ops s5k4ecgx_video_ops = {
- .s_mbus_fmt = s5k4ecgx_s_fmt,
- .s_stream = s5k4ecgx_s_stream,
- .enum_framesizes = s5k4ecgx_enum_framesizes,
- .g_parm = s5k4ecgx_g_parm,
- .s_parm = s5k4ecgx_s_parm,
-};
-
-static const struct v4l2_subdev_ops s5k4ecgx_ops = {
- .core = &s5k4ecgx_core_ops,
- .video = &s5k4ecgx_video_ops,
-};
-
-/*
- * s5k4ecgx_probe
- * Fetching platform data is being done with s_config subdev call.
- * In probe routine, we just register subdev device
- */
-static int s5k4ecgx_probe(struct i2c_client *client,
- const struct i2c_device_id *id)
-{
- struct s5k4ecgx_state *state = NULL;
- struct v4l2_subdev *sd = NULL;
- struct s5k4ecgx_platform_data *pdata = NULL;
- cam_dbg("E\n");
-
- state = kzalloc(sizeof(struct s5k4ecgx_state), GFP_KERNEL);
- if (state == NULL)
- return -ENOMEM;
-
- sd = &state->sd;
- strcpy(sd->name, S5K4ECGX_DRIVER_NAME);
-
- state->runmode = RUNMODE_NOTREADY;
- state->initialized = 0;
- state->req_fps = state->set_fps = 0;
- state->sensor_mode = SENSOR_CAMERA;
- state->zoom = 0;
- state->flash_mode = FLASH_MODE_BASE;
- state->lowlight = 0;
- state->awb_lock = 0;
- state->ae_lock = 0;
- state->preflash = PREFLASH_NONE;
-
- pdata = client->dev.platform_data;
-
- if (!pdata) {
- cam_err("no platform data\n");
- return -ENODEV;
- }
-
- /* Registering subdev */
- v4l2_i2c_subdev_init(sd, client, &s5k4ecgx_ops);
-
- mutex_init(&state->ctrl_lock);
- mutex_init(&state->af_lock);
-
- state->workqueue = create_workqueue("cam_workqueue");
- if (unlikely(!state->workqueue)) {
- dev_err(&client->dev, "probe, fail to create workqueue\n");
- goto err_out;
- }
- INIT_WORK(&state->af_work, s5k4ecgx_af_worker);
-
- /*
- * Assign default format and resolution
- * Use configured default information in platform data
- * or without them, use default information in driver
- */
-
- /*S5K4ECGX_PREVIEW_VGA*/
- state->preview_frmsizes = &preview_frmsizes[0];
- /*S5K4ECGX_CAPTURE_5MP */
- state->capture_frmsizes = &capture_frmsizes[0];
- cam_dbg("preview_width: %d , preview_height: %d, "
- "capture_width: %d, capture_height: %d",
- state->preview_frmsizes->width, state->preview_frmsizes->height,
- state->capture_frmsizes->width, state->capture_frmsizes->height);
-
- state->req_fmt.width = state->preview_frmsizes->width;
- state->req_fmt.height = state->preview_frmsizes->height;
-
- state->pdata = pdata;
-
- if (!pdata->pixelformat)
- state->req_fmt.pixelformat = DEFAULT_FMT;
- else
- state->req_fmt.pixelformat = pdata->pixelformat;
-
- cam_dbg("probed!!\n");
-
- return 0;
-
-err_out:
- kfree(state);
- return -ENOMEM;
-}
-
-static int s5k4ecgx_remove(struct i2c_client *client)
-{
- struct v4l2_subdev *sd = i2c_get_clientdata(client);
- struct s5k4ecgx_state *state = to_state(sd);
-
- cam_dbg("E\n");
-
- destroy_workqueue(state->workqueue);
-
- state->initialized = 0;
-
- v4l2_device_unregister_subdev(sd);
-
- mutex_destroy(&state->ctrl_lock);
- mutex_destroy(&state->af_lock);
-
- kfree(to_state(sd));
-
- return 0;
-}
-
-static const struct i2c_device_id s5k4ecgx_id[] = {
- { S5K4ECGX_DRIVER_NAME, 0 },
- { },
-};
-MODULE_DEVICE_TABLE(i2c, s5k4ecgx_id);
-
-static struct i2c_driver s5k4ecgx_i2c_driver = {
- .driver = {
- .name = S5K4ECGX_DRIVER_NAME,
- },
- .probe = s5k4ecgx_probe,
- .remove = s5k4ecgx_remove,
- .id_table = s5k4ecgx_id,
-};
-
-static int __init s5k4ecgx_mod_init(void)
-{
- cam_dbg("E\n");
- return i2c_add_driver(&s5k4ecgx_i2c_driver);
-}
-
-static void __exit s5k4ecgx_mod_exit(void)
-{
- cam_dbg("E\n");
- i2c_del_driver(&s5k4ecgx_i2c_driver);
-}
-module_init(s5k4ecgx_mod_init);
-module_exit(s5k4ecgx_mod_exit);
-
-MODULE_DESCRIPTION("S5K4ECGX MIPI sensor driver");
-MODULE_AUTHOR("seungwoolee<samuell.lee@samsung.com>");
-MODULE_AUTHOR("jinsookim<js1002.kim@samsung.com>");
-MODULE_LICENSE("GPL");
diff --git a/drivers/media/video/slp_s5k4ecgx.h b/drivers/media/video/slp_s5k4ecgx.h
deleted file mode 100644
index 400581f..0000000
--- a/drivers/media/video/slp_s5k4ecgx.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Driver for S5K4ECGX 5M ISP from Samsung
- * Copyright (C) 2012 Samsung Electronics Co., Ltd.
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-
-#ifndef __S5K4ECGX_H
-#define __S5K4ECGX_H
-
-#include <linux/types.h>
-
-#define S5K4ECGX_DRIVER_NAME "S5K4ECGX"
-#define is_focus(__mode) (state->focus.mode == __mode)
-
-#define FIRST_AF_SEARCH_COUNT 80
-#define SECOND_AF_SEARCH_COUNT 80
-
-extern struct class *camera_class;
-
-enum stream_cmd {
- STREAM_STOP,
- STREAM_START,
-};
-
-struct s5k4ecgx_framesize {
- u32 index;
- u32 width;
- u32 height;
-};
-
-struct s5k4ecgx_exif {
- u32 exptime; /* us */
- u16 flash;
- u16 iso;
- int tv; /* shutter speed */
- int bv; /* brightness */
- int ebv; /* exposure bias */
-};
-
-struct s5k4ecgx_focus {
- unsigned int mode;
- unsigned int lock;
- unsigned int status;
- unsigned int touch;
- unsigned int pos_x;
- unsigned int pos_y;
- unsigned int width;
- unsigned int height;
- unsigned int start;
- bool focusing;
- bool needed;
- bool first;
-};
-
-enum preflash_status {
- PREFLASH_NONE = 0,
- PREFLASH_OFF,
- PREFLASH_ON,
-};
-
-enum s5k4ecgx_runmode {
- RUNMODE_NOTREADY,
- RUNMODE_INIT,
- RUNMODE_RUNNING, /* previewing */
- RUNMODE_RUNNING_STOP,
- RUNMODE_CAPTURING,
- RUNMODE_CAPTURE_STOP,
-};
-
-/*
- * Driver information
- */
-struct s5k4ecgx_state {
- struct v4l2_subdev sd;
- struct device *s5k4ecgx_dev;
- struct s5k4ecgx_platform_data *pdata;
- /*
- * req_fmt is the requested format from the application.
- * set_fmt is the output format of the camera. Finally FIMC
- * converts the camera output(set_fmt) to the requested format
- * with hardware scaler.
- */
- struct v4l2_pix_format req_fmt;
- const struct s5k4ecgx_framesize *preview_frmsizes;
- const struct s5k4ecgx_framesize *capture_frmsizes;
- struct s5k4ecgx_exif exif;
- struct s5k4ecgx_focus focus;
-
- enum v4l2_flash_mode flash_mode;
- enum preflash_status preflash;
- enum v4l2_sensor_mode sensor_mode;
- enum v4l2_scene_mode scene_mode;
- enum v4l2_wb_mode wb_mode;
- enum s5k4ecgx_runmode runmode;
-
- struct mutex ctrl_lock; /* Mutex */
- struct mutex af_lock; /* Mutex */
- struct work_struct af_work; /* workque for AF */
- struct work_struct af_win_work; /* workque for AF */
- struct workqueue_struct *workqueue; /* workque for AF */
-
- s32 vt_mode;
- s32 check_dataline;
- u32 req_fps;
- u32 set_fps;
- u32 initialized;
- u32 zoom;
- bool lowlight;
- bool ae_lock;
- bool awb_lock;
-};
-
-enum AF_1ST_STATUS {
- AF_PROGRESS_1ST = 1,
- AF_SUCCESS_1ST ,
- AF_FAIL_1ST,
-};
-
-enum AF_2ND_STATUS {
- AF_SUCCESS_2ND = 0,
- AF_PROGRESS_2ND = 1,
-};
-
-enum s5k4ecgx_prev_frmsize {
- S5K4ECGX_PREVIEW_176, /* 176 x 144 */
- S5K4ECGX_PREVIEW_320, /* 320 x 240 */
- S5K4ECGX_PREVIEW_640, /* 640 x 480 */
- S5K4ECGX_PREVIEW_720, /* 720 x 480 */
- S5K4ECGX_PREVIEW_800, /* 800 x 480 */
- S5K4ECGX_PREVIEW_1280, /* 1280 x 720 */
-};
-
-enum s5k4ecgx_cap_frmsize {
- S5K4ECGX_CAPTURE_VGA, /* 640 x 480 */
- S5K4ECGX_CAPTURE_XGA, /* 1024 x 768 */
- S5K4ECGX_CAPTURE_1MP, /* 1280 x 960 */
- S5K4ECGX_CAPTURE_2MP, /* UXGA - 1600 x 1200 */
- S5K4ECGX_CAPTURE_3MP, /* QXGA - 2048 x 1536 */
- S5K4ECGX_CAPTURE_5MP, /* 2560 x 1920 */
-};
-
-static inline struct s5k4ecgx_state *to_state(struct v4l2_subdev *sd)
-{
- return container_of(sd, struct s5k4ecgx_state, sd);
-}
-
-/*#define CONFIG_CAM_DEBUG */
-#define cam_warn(fmt, ...) \
- do { \
- printk(KERN_WARNING "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#define cam_err(fmt, ...) \
- do { \
- printk(KERN_ERR "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#define cam_info(fmt, ...) \
- do { \
- printk(KERN_INFO "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-
-#ifdef CONFIG_CAM_DEBUG
-#define cam_dbg(fmt, ...) \
- do { \
- printk(KERN_DEBUG "%s: " fmt, __func__, ##__VA_ARGS__); \
- } while (0)
-#else
-#define cam_dbg(fmt, ...)
-#endif /* CONFIG_CAM_DEBUG */
-
-
-/************ driver feature ************/
-#define S5K4ECGX_USLEEP
-/* #define CONFIG_LOAD_FILE */
-
-
-/*********** Sensor specific ************/
-/* #define S5K4ECGX_100MS_DELAY 0xAA55AA5F */
-/* #define S5K4ECGX_10MS_DELAY 0xAA55AA5E */
-#define S5K4ECGX_DELAY 0xFFFF0000
-#define S5K4ECGX_DEF_APEX_DEN 100
-
-/* Register address */
-#define REG_PAGE_SHUTTER 0x7000
-#define REG_ADDR_SHUTTER 0x14D0
-#define REG_PAGE_ISO 0x7000
-#define REG_ADDR_ISO 0x14C8
-
-#include "slp_s5k4ecgx_setfile.h"
-
-#endif /* __S5K4ECGX_H */
diff --git a/drivers/media/video/slp_s5k4ecgx_setfile.h b/drivers/media/video/slp_s5k4ecgx_setfile.h
deleted file mode 100644
index 2c84c7b..0000000
--- a/drivers/media/video/slp_s5k4ecgx_setfile.h
+++ /dev/null
@@ -1,7308 +0,0 @@
-/*
- * Driver for S5K4ECGX 5M ISP from Samsung
- *
- * Copyright (C) 2011,
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- */
-#ifndef __S5K4ECGX_SETFILE_H
-#define __S5K4ECGX_SETFILE_H
-
-#include <linux/types.h>
-
-/*
- * s5k4ecgx register configuration for combinations of initialization
- */
-/* FOR 4EC EVT1.1*/
-
-/*//////////////////////////FOR EVT1.1//////////////////////////*/
-/* 20110706 SEMCO Base setting*/
-/* ARM Initiation */
-static const u32 s5k4ecgx_init_reg1_EVT1[] = {
-/*==================================================================
-// 01.Start Setting
-//==================================================================*/
- 0xFCFCD000,
- 0x00100001, /*S/W Reset */
- 0x10300000, /*contint_host_int */
- 0x00140001, /*sw_load_complete-Release CORE(Arm)from reset state*/
-};
-
-/* Delay 10ms*/
-
-static const u32 s5k4ecgx_init_reg2_EVT1[] = {
-/*===============================================================
-//02.ETC Setting
-//==============================================================*/
-
- 0x0028D000,
- 0x002A1082, /*Driving current Setting */
- 0x0F1202AA, /*d0_d4_cd10 d0_d4_cd10 9:0 */
- 0x0F1202AA, /*d5_d9_cd10 d5_d9_cd10 9:0 */
- 0x0F1200AA, /*gpio_cd10 gpio_cd10 */
- 0x0F120AAA, /*clks_output_cd10 clks_output_cd10 11:0 */
- 0x002A100E,
- 0x0F120000, /*pclk_delay_r */
-
- 0x002A007A,
- 0x0F120000,
-
-/*This register is for FACTORY ONLY.
-If you change it without prior notification*/
-/* YOU are RESPONSIBLE for the FAILURE that will happen in the future.*/
-
- /*ISP FE(ADLC) */
- 0x002AE406,
- 0x0F120092,
- 0x002AE410,
- 0x0F123804,
- 0x002AE41A,
- 0x0F120010, /*101022 ADD adlcptune_total */
- 0x002AE420,
- 0x0F120003,
- 0x0F120060,
- 0x002AE42E,
- 0x0F120004,
- 0x002AF400,
- 0x0F125A3C,
- 0x0F120023,
- 0x0F128080,
- 0x0F1203AF,
- 0x0F12000A,
- 0x0F12AA54,
- 0x0F120040,
- 0x0F12464E,
- 0x0F120240,
- 0x0F120240,
- 0x0F120040,
- 0x0F121000,
- 0x0F1255FF, /*555C -> 55FF */
- 0x0F12D000,
- 0x0F120010,
- 0x0F120202,
- 0x0F120401,
- 0x0F120022,
- 0x0F120088,
- 0x0F12009F,
- 0x0F120000,
- 0x0F121800,
- 0x0F120088,
- 0x0F120000,
- 0x0F122428,
- 0x0F120000,
- 0x0F1203EE,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x002AF552,
- 0x0F120708,
- 0x0F12080C,
-
- 0x00287000, /*For subsampling Size */
- 0x002A18BC,
- 0x0F120004,
- 0x0F1205B6,
- 0x0F120000,
- 0x0F120000,
- 0x0F120001,
- 0x0F1205BA,
- 0x0F120000,
- 0x0F120000,
- 0x0F120007,
- 0x0F1205BA,
- 0x0F120000,
- 0x0F120000,
- 0x0F1201F4,
- 0x0F12024E,
- 0x0F120000,
- 0x0F120000,
- 0x0F1201F4,
- 0x0F1205B6,
- 0x0F120000,
- 0x0F120000,
- 0x0F1201F4,
- 0x0F1205BA,
- 0x0F120000,
- 0x0F120000,
- 0x0F1201F4,
- 0x0F12024F,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120075,
- 0x0F1200CF,
- 0x0F120000,
- 0x0F120000,
- 0x0F120075,
- 0x0F1200D6,
- 0x0F120000,
- 0x0F120000,
- 0x0F120004,
- 0x0F1201F4,
- 0x0F120000,
- 0x0F120000,
- 0x0F1200F0,
- 0x0F1201F4,
- 0x0F12029E,
- 0x0F1205B2,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F1201F8,
- 0x0F120228,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120208,
- 0x0F120238,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120218,
- 0x0F120238,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120001,
- 0x0F120009,
- 0x0F1200DE,
- 0x0F1205C0,
- 0x0F120000,
- 0x0F120000,
- 0x0F1200DF,
- 0x0F1200E4,
- 0x0F1201F8,
- 0x0F1201FD,
- 0x0F1205B6,
- 0x0F1205BB,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F1201F8,
- 0x0F120000,
- 0x0F120000,
- 0x0F120077,
- 0x0F12007E,
- 0x0F12024F,
- 0x0F12025E,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120004,
- 0x0F1209D1,
- 0x0F120000,
- 0x0F120000,
- 0x0F120001,
- 0x0F1209D5,
- 0x0F120000,
- 0x0F120000,
- 0x0F120008,
- 0x0F1209D5,
- 0x0F120000,
- 0x0F120000,
- 0x0F1202AA,
- 0x0F120326,
- 0x0F120000,
- 0x0F120000,
- 0x0F1202AA,
- 0x0F1209D1,
- 0x0F120000,
- 0x0F120000,
- 0x0F1202AA,
- 0x0F1209D5,
- 0x0F120000,
- 0x0F120000,
- 0x0F1202AA,
- 0x0F120327,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120008,
- 0x0F120084,
- 0x0F120000,
- 0x0F120000,
- 0x0F120008,
- 0x0F12008D,
- 0x0F120000,
- 0x0F120000,
- 0x0F120008,
- 0x0F1202AA,
- 0x0F120000,
- 0x0F120000,
- 0x0F1200AA,
- 0x0F1202AA,
- 0x0F1203AD,
- 0x0F1209CD,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F1202AE,
- 0x0F1202DE,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F1202BE,
- 0x0F1202EE,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F1202CE,
- 0x0F1202EE,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120001,
- 0x0F120009,
- 0x0F120095,
- 0x0F1209DB,
- 0x0F120000,
- 0x0F120000,
- 0x0F120096,
- 0x0F12009B,
- 0x0F1202AE,
- 0x0F1202B3,
- 0x0F1209D1,
- 0x0F1209D6,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F1202AE,
- 0x0F120000,
- 0x0F120000,
- 0x0F120009,
- 0x0F120010,
- 0x0F120327,
- 0x0F120336,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x002A1AF8,
- 0x0F125A3C, /*senHal_TuneStr_AngTuneData1_2_D000F400 register */
- 0x002A1896,
- 0x0F120002, /*senHal_SamplingType 0002 03EE: PLA*/
- 0x0F120000, /*senHal_SamplingMode 0 : 2 PLA / 1 : 4PLA*/
- 0x0F120003, /*senHal_PLAOption [0] VPLA enable [1] H*/
-
- 0x002A189E,
- 0x0F120FB0, /*senHal_ExpMinPixels*/
-
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin*/
- 0x0F120060, /*senHal_uAddColsNoBin*/
- 0x0F1205C0, /*senHal_uMinColsBin*/
- 0x0F1205C0, /*senHal_uMinColsNoBin*/
-
- 0x002A1AEA,
- 0x0F128080, /*senHal_SubF404Tune*/
- 0x0F120080, /*senHal_FullF404Tune*/
- 0x002A1AE0,
- 0x0F120000, /*senHal_bSenAAC*/
-
- 0x002A1A72,
- 0x0F120000, /*senHal_bSRX SRX off*/
- 0x002A18A2,
- 0x0F120004, /*senHal_NExpLinesCheckFine extend For*/
- 0x002A1A6A,
- 0x0F12009A, /*senHal_usForbiddenRightOfs*/
- 0x002A385E,
- 0x0F12024C, /*Mon_Sen_uExpPixelsOfs*/
-
- 0x002A0EE6,
- 0x0F120000, /*setot_bUseDigitalHbin*/
- 0x002A1B2A,
- 0x0F120300, /*senHal_TuneStr2_usAngTuneGainTh 2 */
- 0x0F1200D6, /*senHal_TuneStr2_AngTuneF4CA_0_ 2 70001B2*/
- 0x0F12008D, /*senHal_TuneStr2_AngTuneF4CA_1_ 2 70001B2*/
- 0x0F1200CF, /*senHal_TuneStr2_AngTuneF4C2_0_ 2 70001B3*/
- 0x0F120084, /*senHal_TuneStr2_AngTuneF4C2_1_ 2 70001B3*/
-
- /* OTP setting*/
- 0x002A0722,
- 0x0F120100, /*skl_OTP_usWaitTime This register sho*/
- 0x002A0726,
- 0x0F120001, /*skl_bUseOTPfunc//OTP on/off function*/
- 0x002A08D6,
- 0x0F120001, /*ash_bUseOTPData*/
- 0x002A146E,
- 0x0F120000, /*awbb_otp_disable*/
- 0x002A08DC,
- 0x0F120000, /*ash_bUseGasAlphaOTP*/
-
-/*====================================================
-// 05.Trap and Patch
-====================================================*/
-/* Start of Patch data*/
- 0x00287000,
- 0x002A3AF8,
- 0x0F12B570, /*70003AF8 */
- 0x0F124B39, /*70003AFA */
- 0x0F124939, /*70003AFC */
- 0x0F12483A, /*70003AFE */
- 0x0F122200, /*70003B00 */
- 0x0F12C008, /*70003B02 */
- 0x0F126001, /*70003B04 */
- 0x0F124939, /*70003B06 */
- 0x0F124839, /*70003B08 */
- 0x0F122401, /*70003B0A */
- 0x0F12F000, /*70003B0C */
- 0x0F12FBD4, /*70003B0E */
- 0x0F124938, /*70003B10 */
- 0x0F124839, /*70003B12 */
- 0x0F122502, /*70003B14 */
- 0x0F120022, /*70003B16 */
- 0x0F12F000, /*70003B18 */
- 0x0F12FBCE, /*70003B1A */
- 0x0F124837, /*70003B1C */
- 0x0F120261, /*70003B1E */
- 0x0F128001, /*70003B20 */
- 0x0F122100, /*70003B22 */
- 0x0F128041, /*70003B24 */
- 0x0F124936, /*70003B26 */
- 0x0F124836, /*70003B28 */
- 0x0F126041, /*70003B2A */
- 0x0F124936, /*70003B2C */
- 0x0F124837, /*70003B2E */
- 0x0F122403, /*70003B30 */
- 0x0F12002A, /*70003B32 */
- 0x0F12F000, /*70003B34 */
- 0x0F12FBC0, /*70003B36 */
- 0x0F124832, /*70003B38 */
- 0x0F124935, /*70003B3A */
- 0x0F1230C0, /*70003B3C */
- 0x0F1263C1, /*70003B3E */
- 0x0F124930, /*70003B40 */
- 0x0F124834, /*70003B42 */
- 0x0F123980, /*70003B44 */
- 0x0F126408, /*70003B46 */
- 0x0F124833, /*70003B48 */
- 0x0F124934, /*70003B4A */
- 0x0F126388, /*70003B4C */
- 0x0F124934, /*70003B4E */
- 0x0F124834, /*70003B50 */
- 0x0F120022, /*70003B52 */
- 0x0F122504, /*70003B54 */
- 0x0F12F000, /*70003B56 */
- 0x0F12FBAF, /*70003B58 */
- 0x0F124933, /*70003B5A */
- 0x0F124833, /*70003B5C */
- 0x0F122405, /*70003B5E */
- 0x0F12002A, /*70003B60 */
- 0x0F12F000, /*70003B62 */
- 0x0F12F881, /*70003B64 */
- 0x0F12491F, /*70003B66 */
- 0x0F124830, /*70003B68 */
- 0x0F120022, /*70003B6A */
- 0x0F122506, /*70003B6C */
- 0x0F1239B6, /*70003B6E */
- 0x0F121D80, /*70003B70 */
- 0x0F12F000, /*70003B72 */
- 0x0F12F879, /*70003B74 */
- 0x0F12482D, /*70003B76 */
- 0x0F12492D, /*70003B78 */
- 0x0F122407, /*70003B7A */
- 0x0F12002A, /*70003B7C */
- 0x0F12300C, /*70003B7E */
- 0x0F12F000, /*70003B80 */
- 0x0F12F872, /*70003B82 */
- 0x0F124829, /*70003B84 */
- 0x0F12492B, /*70003B86 */
- 0x0F120022, /*70003B88 */
- 0x0F122508, /*70003B8A */
- 0x0F123010, /*70003B8C */
- 0x0F12F000, /*70003B8E */
- 0x0F12F86B, /*70003B90 */
- 0x0F124929, /*70003B92 */
- 0x0F124829, /*70003B94 */
- 0x0F122409, /*70003B96 */
- 0x0F12002A, /*70003B98 */
- 0x0F12F000, /*70003B9A */
- 0x0F12FB8D, /*70003B9C */
- 0x0F124928, /*70003B9E */
- 0x0F124828, /*70003BA0 */
- 0x0F120022, /*70003BA2 */
- 0x0F12250A, /*70003BA4 */
- 0x0F12F000, /*70003BA6 */
- 0x0F12FB87, /*70003BA8 */
- 0x0F124927, /*70003BAA */
- 0x0F124827, /*70003BAC */
- 0x0F12240B, /*70003BAE */
- 0x0F12002A, /*70003BB0 */
- 0x0F12F000, /*70003BB2 */
- 0x0F12FB81, /*70003BB4 */
- 0x0F124926, /*70003BB6 */
- 0x0F124826, /*70003BB8 */
- 0x0F120022, /*70003BBA */
- 0x0F12250C, /*70003BBC */
- 0x0F12F000, /*70003BBE */
- 0x0F12FB7B, /*70003BC0 */
- 0x0F124925, /*70003BC2 */
- 0x0F124825, /*70003BC4 */
- 0x0F12240D, /*70003BC6 */
- 0x0F12002A, /*70003BC8 */
- 0x0F12F000, /*70003BCA */
- 0x0F12FB75, /*70003BCC */
- 0x0F124924, /*70003BCE */
- 0x0F124824, /*70003BD0 */
- 0x0F120022, /*70003BD2 */
- 0x0F12F000, /*70003BD4 */
- 0x0F12FB70, /*70003BD6 */
- 0x0F12BC70, /*70003BD8 */
- 0x0F12BC08, /*70003BDA */
- 0x0F124718, /*70003BDC */
- 0x0F120000, /*70003BDE */
- 0x0F12018F, /*70003BE0 */
- 0x0F124EC2, /*70003BE2 */
- 0x0F12037F, /*70003BE4 */
- 0x0F120000, /*70003BE6 */
- 0x0F121F90, /*70003BE8 */
- 0x0F127000, /*70003BEA */
- 0x0F123C81, /*70003BEC */
- 0x0F127000, /*70003BEE */
- 0x0F12E38B, /*70003BF0 */
- 0x0F120000, /*70003BF2 */
- 0x0F123CB9, /*70003BF4 */
- 0x0F127000, /*70003BF6 */
- 0x0F12C3B1, /*70003BF8 */
- 0x0F120000, /*70003BFA */
- 0x0F124780, /*70003BFC */
- 0x0F127000, /*70003BFE */
- 0x0F123D17, /*70003C00 */
- 0x0F127000, /*70003C02 */
- 0x0F120080, /*70003C04 */
- 0x0F127000, /*70003C06 */
- 0x0F123D53, /*70003C08 */
- 0x0F127000, /*70003C0A */
- 0x0F12B49D, /*70003C0C */
- 0x0F120000, /*70003C0E */
- 0x0F123DFF, /*70003C10 */
- 0x0F127000, /*70003C12 */
- 0x0F123DB3, /*70003C14 */
- 0x0F127000, /*70003C16 */
- 0x0F12FFFF, /*70003C18 */
- 0x0F1200FF, /*70003C1A */
- 0x0F1217E0, /*70003C1C */
- 0x0F127000, /*70003C1E */
- 0x0F123F7B, /*70003C20 */
- 0x0F127000, /*70003C22 */
- 0x0F12053D, /*70003C24 */
- 0x0F120000, /*70003C26 */
- 0x0F120000, /*70003C28 */
- 0x0F120A89, /*70003C2A */
- 0x0F126CD2, /*70003C2C */
- 0x0F120000, /*70003C2E */
- 0x0F120000, /*70003C30 */
- 0x0F120A9A, /*70003C32 */
- 0x0F120000, /*70003C34 */
- 0x0F1202D2, /*70003C36 */
- 0x0F123FC9, /*70003C38 */
- 0x0F127000, /*70003C3A */
- 0x0F129E65, /*70003C3C */
- 0x0F120000, /*70003C3E */
- 0x0F12403D, /*70003C40 */
- 0x0F127000, /*70003C42 */
- 0x0F127C49, /*70003C44 */
- 0x0F120000, /*70003C46 */
- 0x0F1240B1, /*70003C48 */
- 0x0F127000, /*70003C4A */
- 0x0F127C63, /*70003C4C */
- 0x0F120000, /*70003C4E */
- 0x0F1240CD, /*70003C50 */
- 0x0F127000, /*70003C52 */
- 0x0F128F01, /*70003C54 */
- 0x0F120000, /*70003C56 */
- 0x0F12416F, /*70003C58 */
- 0x0F127000, /*70003C5A */
- 0x0F127F3F, /*70003C5C */
- 0x0F120000, /*70003C5E */
- 0x0F1241FD, /*70003C60 */
- 0x0F127000, /*70003C62 */
- 0x0F1298C5, /*70003C64 */
- 0x0F120000, /*70003C66 */
- 0x0F12B570, /*70003C68 */
- 0x0F12000C, /*70003C6A */
- 0x0F120015, /*70003C6C */
- 0x0F120029, /*70003C6E */
- 0x0F12F000, /*70003C70 */
- 0x0F12FB2A, /*70003C72 */
- 0x0F1249F8, /*70003C74 */
- 0x0F1200A8, /*70003C76 */
- 0x0F12500C, /*70003C78 */
- 0x0F12BC70, /*70003C7A */
- 0x0F12BC08, /*70003C7C */
- 0x0F124718, /*70003C7E */
- 0x0F126808, /*70003C80 */
- 0x0F120400, /*70003C82 */
- 0x0F120C00, /*70003C84 */
- 0x0F126849, /*70003C86 */
- 0x0F120409, /*70003C88 */
- 0x0F120C09, /*70003C8A */
- 0x0F124AF3, /*70003C8C */
- 0x0F128992, /*70003C8E */
- 0x0F122A00, /*70003C90 */
- 0x0F12D00D, /*70003C92 */
- 0x0F122300, /*70003C94 */
- 0x0F121A89, /*70003C96 */
- 0x0F12D400, /*70003C98 */
- 0x0F12000B, /*70003C9A */
- 0x0F120419, /*70003C9C */
- 0x0F120C09, /*70003C9E */
- 0x0F1223FF, /*70003CA0 */
- 0x0F1233C1, /*70003CA2 */
- 0x0F121810, /*70003CA4 */
- 0x0F124298, /*70003CA6 */
- 0x0F12D800, /*70003CA8 */
- 0x0F120003, /*70003CAA */
- 0x0F120418, /*70003CAC */
- 0x0F120C00, /*70003CAE */
- 0x0F124AEB, /*70003CB0 */
- 0x0F128150, /*70003CB2 */
- 0x0F128191, /*70003CB4 */
- 0x0F124770, /*70003CB6 */
- 0x0F12B5F3, /*70003CB8 */
- 0x0F120004, /*70003CBA */
- 0x0F12B081, /*70003CBC */
- 0x0F129802, /*70003CBE */
- 0x0F126800, /*70003CC0 */
- 0x0F120600, /*70003CC2 */
- 0x0F120E00, /*70003CC4 */
- 0x0F122201, /*70003CC6 */
- 0x0F120015, /*70003CC8 */
- 0x0F120021, /*70003CCA */
- 0x0F123910, /*70003CCC */
- 0x0F12408A, /*70003CCE */
- 0x0F1240A5, /*70003CD0 */
- 0x0F124FE4, /*70003CD2 */
- 0x0F120016, /*70003CD4 */
- 0x0F122C10, /*70003CD6 */
- 0x0F12DA03, /*70003CD8 */
- 0x0F128839, /*70003CDA */
- 0x0F1243A9, /*70003CDC */
- 0x0F128039, /*70003CDE */
- 0x0F12E002, /*70003CE0 */
- 0x0F128879, /*70003CE2 */
- 0x0F1243B1, /*70003CE4 */
- 0x0F128079, /*70003CE6 */
- 0x0F12F000, /*70003CE8 */
- 0x0F12FAF6, /*70003CEA */
- 0x0F122C10, /*70003CEC */
- 0x0F12DA03, /*70003CEE */
- 0x0F128839, /*70003CF0 */
- 0x0F124329, /*70003CF2 */
- 0x0F128039, /*70003CF4 */
- 0x0F12E002, /*70003CF6 */
- 0x0F128879, /*70003CF8 */
- 0x0F124331, /*70003CFA */
- 0x0F128079, /*70003CFC */
- 0x0F1249DA, /*70003CFE */
- 0x0F128809, /*70003D00 */
- 0x0F122900, /*70003D02 */
- 0x0F12D102, /*70003D04 */
- 0x0F12F000, /*70003D06 */
- 0x0F12FAEF, /*70003D08 */
- 0x0F122000, /*70003D0A */
- 0x0F129902, /*70003D0C */
- 0x0F126008, /*70003D0E */
- 0x0F12BCFE, /*70003D10 */
- 0x0F12BC08, /*70003D12 */
- 0x0F124718, /*70003D14 */
- 0x0F12B538, /*70003D16 */
- 0x0F129C04, /*70003D18 */
- 0x0F120015, /*70003D1A */
- 0x0F12002A, /*70003D1C */
- 0x0F129400, /*70003D1E */
- 0x0F12F000, /*70003D20 */
- 0x0F12FAEA, /*70003D22 */
- 0x0F124AD1, /*70003D24 */
- 0x0F128811, /*70003D26 */
- 0x0F122900, /*70003D28 */
- 0x0F12D00F, /*70003D2A */
- 0x0F128820, /*70003D2C */
- 0x0F124281, /*70003D2E */
- 0x0F12D20C, /*70003D30 */
- 0x0F128861, /*70003D32 */
- 0x0F128853, /*70003D34 */
- 0x0F124299, /*70003D36 */
- 0x0F12D200, /*70003D38 */
- 0x0F121E40, /*70003D3A */
- 0x0F120400, /*70003D3C */
- 0x0F120C00, /*70003D3E */
- 0x0F128020, /*70003D40 */
- 0x0F128851, /*70003D42 */
- 0x0F128061, /*70003D44 */
- 0x0F124368, /*70003D46 */
- 0x0F121840, /*70003D48 */
- 0x0F126060, /*70003D4A */
- 0x0F12BC38, /*70003D4C */
- 0x0F12BC08, /*70003D4E */
- 0x0F124718, /*70003D50 */
- 0x0F12B5F8, /*70003D52 */
- 0x0F120004, /*70003D54 */
- 0x0F126808, /*70003D56 */
- 0x0F120400, /*70003D58 */
- 0x0F120C00, /*70003D5A */
- 0x0F122201, /*70003D5C */
- 0x0F120015, /*70003D5E */
- 0x0F120021, /*70003D60 */
- 0x0F123910, /*70003D62 */
- 0x0F12408A, /*70003D64 */
- 0x0F1240A5, /*70003D66 */
- 0x0F124FBE, /*70003D68 */
- 0x0F120016, /*70003D6A */
- 0x0F122C10, /*70003D6C */
- 0x0F12DA03, /*70003D6E */
- 0x0F128839, /*70003D70 */
- 0x0F1243A9, /*70003D72 */
- 0x0F128039, /*70003D74 */
- 0x0F12E002, /*70003D76 */
- 0x0F128879, /*70003D78 */
- 0x0F1243B1, /*70003D7A */
- 0x0F128079, /*70003D7C */
- 0x0F12F000, /*70003D7E */
- 0x0F12FAC3, /*70003D80 */
- 0x0F122C10, /*70003D82 */
- 0x0F12DA03, /*70003D84 */
- 0x0F128838, /*70003D86 */
- 0x0F124328, /*70003D88 */
- 0x0F128038, /*70003D8A */
- 0x0F12E002, /*70003D8C */
- 0x0F128878, /*70003D8E */
- 0x0F124330, /*70003D90 */
- 0x0F128078, /*70003D92 */
- 0x0F1248B6, /*70003D94 */
- 0x0F128800, /*70003D96 */
- 0x0F120400, /*70003D98 */
- 0x0F12D507, /*70003D9A */
- 0x0F124BB5, /*70003D9C */
- 0x0F127819, /*70003D9E */
- 0x0F124AB5, /*70003DA0 */
- 0x0F127810, /*70003DA2 */
- 0x0F127018, /*70003DA4 */
- 0x0F127011, /*70003DA6 */
- 0x0F1249B4, /*70003DA8 */
- 0x0F128188, /*70003DAA */
- 0x0F12BCF8, /*70003DAC */
- 0x0F12BC08, /*70003DAE */
- 0x0F124718, /*70003DB0 */
- 0x0F12B538, /*70003DB2 */
- 0x0F1248B2, /*70003DB4 */
- 0x0F124669, /*70003DB6 */
- 0x0F12F000, /*70003DB8 */
- 0x0F12FAAE, /*70003DBA */
- 0x0F1248B1, /*70003DBC */
- 0x0F1249B0, /*70003DBE */
- 0x0F1269C2, /*70003DC0 */
- 0x0F122400, /*70003DC2 */
- 0x0F1231A8, /*70003DC4 */
- 0x0F122A00, /*70003DC6 */
- 0x0F12D008, /*70003DC8 */
- 0x0F1261C4, /*70003DCA */
- 0x0F12684A, /*70003DCC */
- 0x0F126242, /*70003DCE */
- 0x0F126282, /*70003DD0 */
- 0x0F12466B, /*70003DD2 */
- 0x0F12881A, /*70003DD4 */
- 0x0F126302, /*70003DD6 */
- 0x0F12885A, /*70003DD8 */
- 0x0F126342, /*70003DDA */
- 0x0F126A02, /*70003DDC */
- 0x0F122A00, /*70003DDE */
- 0x0F12D00A, /*70003DE0 */
- 0x0F126204, /*70003DE2 */
- 0x0F126849, /*70003DE4 */
- 0x0F126281, /*70003DE6 */
- 0x0F12466B, /*70003DE8 */
- 0x0F128819, /*70003DEA */
- 0x0F126301, /*70003DEC */
- 0x0F128859, /*70003DEE */
- 0x0F126341, /*70003DF0 */
- 0x0F1249A5, /*70003DF2 */
- 0x0F1288C9, /*70003DF4 */
- 0x0F1263C1, /*70003DF6 */
- 0x0F12F000, /*70003DF8 */
- 0x0F12FA96, /*70003DFA */
- 0x0F12E7A6, /*70003DFC */
- 0x0F12B5F0, /*70003DFE */
- 0x0F12B08B, /*70003E00 */
- 0x0F1220FF, /*70003E02 */
- 0x0F121C40, /*70003E04 */
- 0x0F1249A1, /*70003E06 */
- 0x0F1289CC, /*70003E08 */
- 0x0F124E9E, /*70003E0A */
- 0x0F126AB1, /*70003E0C */
- 0x0F124284, /*70003E0E */
- 0x0F12D101, /*70003E10 */
- 0x0F12489F, /*70003E12 */
- 0x0F126081, /*70003E14 */
- 0x0F126A70, /*70003E16 */
- 0x0F120200, /*70003E18 */
- 0x0F12F000, /*70003E1A */
- 0x0F12FA8D, /*70003E1C */
- 0x0F120400, /*70003E1E */
- 0x0F120C00, /*70003E20 */
- 0x0F124A96, /*70003E22 */
- 0x0F128A11, /*70003E24 */
- 0x0F129109, /*70003E26 */
- 0x0F122101, /*70003E28 */
- 0x0F120349, /*70003E2A */
- 0x0F124288, /*70003E2C */
- 0x0F12D200, /*70003E2E */
- 0x0F120001, /*70003E30 */
- 0x0F124A92, /*70003E32 */
- 0x0F128211, /*70003E34 */
- 0x0F124D97, /*70003E36 */
- 0x0F128829, /*70003E38 */
- 0x0F129108, /*70003E3A */
- 0x0F124A8B, /*70003E3C */
- 0x0F122303, /*70003E3E */
- 0x0F123222, /*70003E40 */
- 0x0F121F91, /*70003E42 */
- 0x0F12F000, /*70003E44 */
- 0x0F12FA7E, /*70003E46 */
- 0x0F128028, /*70003E48 */
- 0x0F12488E, /*70003E4A */
- 0x0F124987, /*70003E4C */
- 0x0F126BC2, /*70003E4E */
- 0x0F126AC0, /*70003E50 */
- 0x0F124282, /*70003E52 */
- 0x0F12D201, /*70003E54 */
- 0x0F128CC8, /*70003E56 */
- 0x0F128028, /*70003E58 */
- 0x0F1288E8, /*70003E5A */
- 0x0F129007, /*70003E5C */
- 0x0F122240, /*70003E5E */
- 0x0F124310, /*70003E60 */
- 0x0F1280E8, /*70003E62 */
- 0x0F122000, /*70003E64 */
- 0x0F120041, /*70003E66 */
- 0x0F12194B, /*70003E68 */
- 0x0F12001E, /*70003E6A */
- 0x0F123680, /*70003E6C */
- 0x0F128BB2, /*70003E6E */
- 0x0F12AF04, /*70003E70 */
- 0x0F12527A, /*70003E72 */
- 0x0F124A7D, /*70003E74 */
- 0x0F12188A, /*70003E76 */
- 0x0F128897, /*70003E78 */
- 0x0F1283B7, /*70003E7A */
- 0x0F1233A0, /*70003E7C */
- 0x0F12891F, /*70003E7E */
- 0x0F12AE01, /*70003E80 */
- 0x0F125277, /*70003E82 */
- 0x0F128A11, /*70003E84 */
- 0x0F128119, /*70003E86 */
- 0x0F121C40, /*70003E88 */
- 0x0F120400, /*70003E8A */
- 0x0F120C00, /*70003E8C */
- 0x0F122806, /*70003E8E */
- 0x0F12D3E9, /*70003E90 */
- 0x0F12F000, /*70003E92 */
- 0x0F12FA5F, /*70003E94 */
- 0x0F12F000, /*70003E96 */
- 0x0F12FA65, /*70003E98 */
- 0x0F124F79, /*70003E9A */
- 0x0F1237A8, /*70003E9C */
- 0x0F122800, /*70003E9E */
- 0x0F12D10A, /*70003EA0 */
- 0x0F121FE0, /*70003EA2 */
- 0x0F1238FD, /*70003EA4 */
- 0x0F12D001, /*70003EA6 */
- 0x0F121CC0, /*70003EA8 */
- 0x0F12D105, /*70003EAA */
- 0x0F124874, /*70003EAC */
- 0x0F128829, /*70003EAE */
- 0x0F123818, /*70003EB0 */
- 0x0F126840, /*70003EB2 */
- 0x0F124348, /*70003EB4 */
- 0x0F126078, /*70003EB6 */
- 0x0F124972, /*70003EB8 */
- 0x0F126878, /*70003EBA */
- 0x0F126B89, /*70003EBC */
- 0x0F124288, /*70003EBE */
- 0x0F12D300, /*70003EC0 */
- 0x0F120008, /*70003EC2 */
- 0x0F126078, /*70003EC4 */
- 0x0F122000, /*70003EC6 */
- 0x0F120041, /*70003EC8 */
- 0x0F12AA04, /*70003ECA */
- 0x0F125A53, /*70003ECC */
- 0x0F12194A, /*70003ECE */
- 0x0F12269C, /*70003ED0 */
- 0x0F1252B3, /*70003ED2 */
- 0x0F12AB01, /*70003ED4 */
- 0x0F125A59, /*70003ED6 */
- 0x0F1232A0, /*70003ED8 */
- 0x0F128111, /*70003EDA */
- 0x0F121C40, /*70003EDC */
- 0x0F120400, /*70003EDE */
- 0x0F120C00, /*70003EE0 */
- 0x0F122806, /*70003EE2 */
- 0x0F12D3F0, /*70003EE4 */
- 0x0F124965, /*70003EE6 */
- 0x0F129809, /*70003EE8 */
- 0x0F128208, /*70003EEA */
- 0x0F129808, /*70003EEC */
- 0x0F128028, /*70003EEE */
- 0x0F129807, /*70003EF0 */
- 0x0F1280E8, /*70003EF2 */
- 0x0F121FE0, /*70003EF4 */
- 0x0F1238FD, /*70003EF6 */
- 0x0F12D13B, /*70003EF8 */
- 0x0F124D64, /*70003EFA */
- 0x0F1289E8, /*70003EFC */
- 0x0F121FC1, /*70003EFE */
- 0x0F1239FF, /*70003F00 */
- 0x0F12D136, /*70003F02 */
- 0x0F124C5F, /*70003F04 */
- 0x0F128AE0, /*70003F06 */
- 0x0F12F000, /*70003F08 */
- 0x0F12FA34, /*70003F0A */
- 0x0F120006, /*70003F0C */
- 0x0F128B20, /*70003F0E */
- 0x0F12F000, /*70003F10 */
- 0x0F12FA38, /*70003F12 */
- 0x0F129000, /*70003F14 */
- 0x0F126AA1, /*70003F16 */
- 0x0F126878, /*70003F18 */
- 0x0F121809, /*70003F1A */
- 0x0F120200, /*70003F1C */
- 0x0F12F000, /*70003F1E */
- 0x0F12FA0B, /*70003F20 */
- 0x0F120400, /*70003F22 */
- 0x0F120C00, /*70003F24 */
- 0x0F120022, /*70003F26 */
- 0x0F123246, /*70003F28 */
- 0x0F120011, /*70003F2A */
- 0x0F12310A, /*70003F2C */
- 0x0F122305, /*70003F2E */
- 0x0F12F000, /*70003F30 */
- 0x0F12FA08, /*70003F32 */
- 0x0F1266E8, /*70003F34 */
- 0x0F126B23, /*70003F36 */
- 0x0F120002, /*70003F38 */
- 0x0F120031, /*70003F3A */
- 0x0F120018, /*70003F3C */
- 0x0F12F000, /*70003F3E */
- 0x0F12FA29, /*70003F40 */
- 0x0F12466B, /*70003F42 */
- 0x0F128518, /*70003F44 */
- 0x0F126EEA, /*70003F46 */
- 0x0F126B60, /*70003F48 */
- 0x0F129900, /*70003F4A */
- 0x0F12F000, /*70003F4C */
- 0x0F12FA22, /*70003F4E */
- 0x0F12466B, /*70003F50 */
- 0x0F128558, /*70003F52 */
- 0x0F120029, /*70003F54 */
- 0x0F12980A, /*70003F56 */
- 0x0F123170, /*70003F58 */
- 0x0F12F000, /*70003F5A */
- 0x0F12FA23, /*70003F5C */
- 0x0F120028, /*70003F5E */
- 0x0F123060, /*70003F60 */
- 0x0F128A02, /*70003F62 */
- 0x0F124946, /*70003F64 */
- 0x0F123128, /*70003F66 */
- 0x0F12808A, /*70003F68 */
- 0x0F128A42, /*70003F6A */
- 0x0F1280CA, /*70003F6C */
- 0x0F128A80, /*70003F6E */
- 0x0F128108, /*70003F70 */
- 0x0F12B00B, /*70003F72 */
- 0x0F12BCF0, /*70003F74 */
- 0x0F12BC08, /*70003F76 */
- 0x0F124718, /*70003F78 */
- 0x0F12B570, /*70003F7A */
- 0x0F122400, /*70003F7C */
- 0x0F124D46, /*70003F7E */
- 0x0F124846, /*70003F80 */
- 0x0F128881, /*70003F82 */
- 0x0F124846, /*70003F84 */
- 0x0F128041, /*70003F86 */
- 0x0F122101, /*70003F88 */
- 0x0F128001, /*70003F8A */
- 0x0F12F000, /*70003F8C */
- 0x0F12FA12, /*70003F8E */
- 0x0F124842, /*70003F90 */
- 0x0F123820, /*70003F92 */
- 0x0F128BC0, /*70003F94 */
- 0x0F12F000, /*70003F96 */
- 0x0F12FA15, /*70003F98 */
- 0x0F124B42, /*70003F9A */
- 0x0F12220D, /*70003F9C */
- 0x0F120712, /*70003F9E */
- 0x0F1218A8, /*70003FA0 */
- 0x0F128806, /*70003FA2 */
- 0x0F1200E1, /*70003FA4 */
- 0x0F1218C9, /*70003FA6 */
- 0x0F1281CE, /*70003FA8 */
- 0x0F128846, /*70003FAA */
- 0x0F12818E, /*70003FAC */
- 0x0F128886, /*70003FAE */
- 0x0F12824E, /*70003FB0 */
- 0x0F1288C0, /*70003FB2 */
- 0x0F128208, /*70003FB4 */
- 0x0F123508, /*70003FB6 */
- 0x0F12042D, /*70003FB8 */
- 0x0F120C2D, /*70003FBA */
- 0x0F121C64, /*70003FBC */
- 0x0F120424, /*70003FBE */
- 0x0F120C24, /*70003FC0 */
- 0x0F122C07, /*70003FC2 */
- 0x0F12D3EC, /*70003FC4 */
- 0x0F12E658, /*70003FC6 */
- 0x0F12B510, /*70003FC8 */
- 0x0F124834, /*70003FCA */
- 0x0F124C34, /*70003FCC */
- 0x0F1288C0, /*70003FCE */
- 0x0F128060, /*70003FD0 */
- 0x0F122001, /*70003FD2 */
- 0x0F128020, /*70003FD4 */
- 0x0F124831, /*70003FD6 */
- 0x0F123820, /*70003FD8 */
- 0x0F128BC0, /*70003FDA */
- 0x0F12F000, /*70003FDC */
- 0x0F12F9F2, /*70003FDE */
- 0x0F1288E0, /*70003FE0 */
- 0x0F124A31, /*70003FE2 */
- 0x0F122800, /*70003FE4 */
- 0x0F12D003, /*70003FE6 */
- 0x0F124930, /*70003FE8 */
- 0x0F128849, /*70003FEA */
- 0x0F122900, /*70003FEC */
- 0x0F12D009, /*70003FEE */
- 0x0F122001, /*70003FF0 */
- 0x0F1203C0, /*70003FF2 */
- 0x0F128050, /*70003FF4 */
- 0x0F1280D0, /*70003FF6 */
- 0x0F122000, /*70003FF8 */
- 0x0F128090, /*70003FFA */
- 0x0F128110, /*70003FFC */
- 0x0F12BC10, /*70003FFE */
- 0x0F12BC08, /*70004000 */
- 0x0F124718, /*70004002 */
- 0x0F128050, /*70004004 */
- 0x0F128920, /*70004006 */
- 0x0F1280D0, /*70004008 */
- 0x0F128960, /*7000400A */
- 0x0F120400, /*7000400C */
- 0x0F121400, /*7000400E */
- 0x0F128090, /*70004010 */
- 0x0F1289A1, /*70004012 */
- 0x0F120409, /*70004014 */
- 0x0F121409, /*70004016 */
- 0x0F128111, /*70004018 */
- 0x0F1289E3, /*7000401A */
- 0x0F128A24, /*7000401C */
- 0x0F122B00, /*7000401E */
- 0x0F12D104, /*70004020 */
- 0x0F1217C3, /*70004022 */
- 0x0F120F5B, /*70004024 */
- 0x0F121818, /*70004026 */
- 0x0F1210C0, /*70004028 */
- 0x0F128090, /*7000402A */
- 0x0F122C00, /*7000402C */
- 0x0F12D1E6, /*7000402E */
- 0x0F1217C8, /*70004030 */
- 0x0F120F40, /*70004032 */
- 0x0F121840, /*70004034 */
- 0x0F1210C0, /*70004036 */
- 0x0F128110, /*70004038 */
- 0x0F12E7E0, /*7000403A */
- 0x0F12B510, /*7000403C */
- 0x0F12000C, /*7000403E */
- 0x0F124919, /*70004040 */
- 0x0F122204, /*70004042 */
- 0x0F126820, /*70004044 */
- 0x0F125E8A, /*70004046 */
- 0x0F120140, /*70004048 */
- 0x0F121A80, /*7000404A */
- 0x0F120280, /*7000404C */
- 0x0F128849, /*7000404E */
- 0x0F12F000, /*70004050 */
- 0x0F12F9C0, /*70004052 */
- 0x0F126020, /*70004054 */
- 0x0F12E7D2, /*70004056 */
- 0x0F1238D4, /*70004058 */
- 0x0F127000, /*7000405A */
- 0x0F1217D0, /*7000405C */
- 0x0F127000, /*7000405E */
- 0x0F125000, /*70004060 */
- 0x0F12D000, /*70004062 */
- 0x0F121100, /*70004064 */
- 0x0F12D000, /*70004066 */
- 0x0F12171A, /*70004068 */
- 0x0F127000, /*7000406A */
- 0x0F124780, /*7000406C */
- 0x0F127000, /*7000406E */
- 0x0F122FCA, /*70004070 */
- 0x0F127000, /*70004072 */
- 0x0F122FC5, /*70004074 */
- 0x0F127000, /*70004076 */
- 0x0F122FC6, /*70004078 */
- 0x0F127000, /*7000407A */
- 0x0F122ED8, /*7000407C */
- 0x0F127000, /*7000407E */
- 0x0F122BD0, /*70004080 */
- 0x0F127000, /*70004082 */
- 0x0F1217E0, /*70004084 */
- 0x0F127000, /*70004086 */
- 0x0F122DE8, /*70004088 */
- 0x0F127000, /*7000408A */
- 0x0F1237E0, /*7000408C */
- 0x0F127000, /*7000408E */
- 0x0F12210C, /*70004090 */
- 0x0F127000, /*70004092 */
- 0x0F121484, /*70004094 */
- 0x0F127000, /*70004096 */
- 0x0F12A006, /*70004098 */
- 0x0F120000, /*7000409A */
- 0x0F120724, /*7000409C */
- 0x0F127000, /*7000409E */
- 0x0F12A000, /*700040A0 */
- 0x0F12D000, /*700040A2 */
- 0x0F122270, /*700040A4 */
- 0x0F127000, /*700040A6 */
- 0x0F122558, /*700040A8 */
- 0x0F127000, /*700040AA */
- 0x0F12146C, /*700040AC */
- 0x0F127000, /*700040AE */
- 0x0F12B510, /*700040B0 */
- 0x0F12000C, /*700040B2 */
- 0x0F124979, /*700040B4 */
- 0x0F122208, /*700040B6 */
- 0x0F126820, /*700040B8 */
- 0x0F125E8A, /*700040BA */
- 0x0F120140, /*700040BC */
- 0x0F121A80, /*700040BE */
- 0x0F120280, /*700040C0 */
- 0x0F1288C9, /*700040C2 */
- 0x0F12F000, /*700040C4 */
- 0x0F12F986, /*700040C6 */
- 0x0F126020, /*700040C8 */
- 0x0F12E798, /*700040CA */
- 0x0F12B5FE, /*700040CC */
- 0x0F12000C, /*700040CE */
- 0x0F126825, /*700040D0 */
- 0x0F126866, /*700040D2 */
- 0x0F1268A0, /*700040D4 */
- 0x0F129001, /*700040D6 */
- 0x0F1268E7, /*700040D8 */
- 0x0F121BA8, /*700040DA */
- 0x0F1242B5, /*700040DC */
- 0x0F12DA00, /*700040DE */
- 0x0F121B70, /*700040E0 */
- 0x0F129000, /*700040E2 */
- 0x0F12496D, /*700040E4 */
- 0x0F12486E, /*700040E6 */
- 0x0F12884A, /*700040E8 */
- 0x0F128843, /*700040EA */
- 0x0F12435A, /*700040EC */
- 0x0F122304, /*700040EE */
- 0x0F125ECB, /*700040F0 */
- 0x0F120A92, /*700040F2 */
- 0x0F1218D2, /*700040F4 */
- 0x0F1202D2, /*700040F6 */
- 0x0F120C12, /*700040F8 */
- 0x0F1288CB, /*700040FA */
- 0x0F128880, /*700040FC */
- 0x0F124343, /*700040FE */
- 0x0F120A98, /*70004100 */
- 0x0F122308, /*70004102 */
- 0x0F125ECB, /*70004104 */
- 0x0F1218C0, /*70004106 */
- 0x0F1202C0, /*70004108 */
- 0x0F120C00, /*7000410A */
- 0x0F120411, /*7000410C */
- 0x0F120400, /*7000410E */
- 0x0F121409, /*70004110 */
- 0x0F121400, /*70004112 */
- 0x0F121A08, /*70004114 */
- 0x0F124962, /*70004116 */
- 0x0F1239E0, /*70004118 */
- 0x0F126148, /*7000411A */
- 0x0F129801, /*7000411C */
- 0x0F123040, /*7000411E */
- 0x0F127880, /*70004120 */
- 0x0F122800, /*70004122 */
- 0x0F12D103, /*70004124 */
- 0x0F129801, /*70004126 */
- 0x0F120029, /*70004128 */
- 0x0F12F000, /*7000412A */
- 0x0F12F959, /*7000412C */
- 0x0F128839, /*7000412E */
- 0x0F129800, /*70004130 */
- 0x0F124281, /*70004132 */
- 0x0F12D814, /*70004134 */
- 0x0F128879, /*70004136 */
- 0x0F129800, /*70004138 */
- 0x0F124281, /*7000413A */
- 0x0F12D20C, /*7000413C */
- 0x0F129801, /*7000413E */
- 0x0F120029, /*70004140 */
- 0x0F12F000, /*70004142 */
- 0x0F12F955, /*70004144 */
- 0x0F129801, /*70004146 */
- 0x0F120029, /*70004148 */
- 0x0F12F000, /*7000414A */
- 0x0F12F951, /*7000414C */
- 0x0F129801, /*7000414E */
- 0x0F120029, /*70004150 */
- 0x0F12F000, /*70004152 */
- 0x0F12F94D, /*70004154 */
- 0x0F12E003, /*70004156 */
- 0x0F129801, /*70004158 */
- 0x0F120029, /*7000415A */
- 0x0F12F000, /*7000415C */
- 0x0F12F948, /*7000415E */
- 0x0F129801, /*70004160 */
- 0x0F120032, /*70004162 */
- 0x0F120039, /*70004164 */
- 0x0F12F000, /*70004166 */
- 0x0F12F94B, /*70004168 */
- 0x0F126020, /*7000416A */
- 0x0F12E5D0, /*7000416C */
- 0x0F12B57C, /*7000416E */
- 0x0F12484C, /*70004170 */
- 0x0F12A901, /*70004172 */
- 0x0F120004, /*70004174 */
- 0x0F12F000, /*70004176 */
- 0x0F12F8CF, /*70004178 */
- 0x0F12466B, /*7000417A */
- 0x0F1288D9, /*7000417C */
- 0x0F128898, /*7000417E */
- 0x0F124B47, /*70004180 */
- 0x0F123346, /*70004182 */
- 0x0F121E9A, /*70004184 */
- 0x0F12F000, /*70004186 */
- 0x0F12F943, /*70004188 */
- 0x0F124846, /*7000418A */
- 0x0F124944, /*7000418C */
- 0x0F123812, /*7000418E */
- 0x0F123140, /*70004190 */
- 0x0F128A42, /*70004192 */
- 0x0F12888B, /*70004194 */
- 0x0F1218D2, /*70004196 */
- 0x0F128242, /*70004198 */
- 0x0F128AC2, /*7000419A */
- 0x0F1288C9, /*7000419C */
- 0x0F121851, /*7000419E */
- 0x0F1282C1, /*700041A0 */
- 0x0F120020, /*700041A2 */
- 0x0F124669, /*700041A4 */
- 0x0F12F000, /*700041A6 */
- 0x0F12F8B7, /*700041A8 */
- 0x0F12483F, /*700041AA */
- 0x0F12214D, /*700041AC */
- 0x0F128301, /*700041AE */
- 0x0F122196, /*700041B0 */
- 0x0F128381, /*700041B2 */
- 0x0F12211D, /*700041B4 */
- 0x0F123020, /*700041B6 */
- 0x0F128001, /*700041B8 */
- 0x0F12F000, /*700041BA */
- 0x0F12F931, /*700041BC */
- 0x0F12F000, /*700041BE */
- 0x0F12F937, /*700041C0 */
- 0x0F12483A, /*700041C2 */
- 0x0F124C3A, /*700041C4 */
- 0x0F126E00, /*700041C6 */
- 0x0F1260E0, /*700041C8 */
- 0x0F12466B, /*700041CA */
- 0x0F128818, /*700041CC */
- 0x0F128859, /*700041CE */
- 0x0F120025, /*700041D0 */
- 0x0F121A40, /*700041D2 */
- 0x0F123540, /*700041D4 */
- 0x0F1261A8, /*700041D6 */
- 0x0F124831, /*700041D8 */
- 0x0F129900, /*700041DA */
- 0x0F123060, /*700041DC */
- 0x0F12F000, /*700041DE */
- 0x0F12F92F, /*700041E0 */
- 0x0F12466B, /*700041E2 */
- 0x0F128819, /*700041E4 */
- 0x0F121DE0, /*700041E6 */
- 0x0F1230F9, /*700041E8 */
- 0x0F128741, /*700041EA */
- 0x0F128859, /*700041EC */
- 0x0F128781, /*700041EE */
- 0x0F122000, /*700041F0 */
- 0x0F1271A0, /*700041F2 */
- 0x0F1274A8, /*700041F4 */
- 0x0F12BC7C, /*700041F6 */
- 0x0F12BC08, /*700041F8 */
- 0x0F124718, /*700041FA */
- 0x0F12B5F8, /*700041FC */
- 0x0F120005, /*700041FE */
- 0x0F126808, /*70004200 */
- 0x0F120400, /*70004202 */
- 0x0F120C00, /*70004204 */
- 0x0F12684A, /*70004206 */
- 0x0F120412, /*70004208 */
- 0x0F120C12, /*7000420A */
- 0x0F12688E, /*7000420C */
- 0x0F1268CC, /*7000420E */
- 0x0F124922, /*70004210 */
- 0x0F12884B, /*70004212 */
- 0x0F124343, /*70004214 */
- 0x0F120A98, /*70004216 */
- 0x0F122304, /*70004218 */
- 0x0F125ECB, /*7000421A */
- 0x0F1218C0, /*7000421C */
- 0x0F1202C0, /*7000421E */
- 0x0F120C00, /*70004220 */
- 0x0F1288CB, /*70004222 */
- 0x0F124353, /*70004224 */
- 0x0F120A9A, /*70004226 */
- 0x0F122308, /*70004228 */
- 0x0F125ECB, /*7000422A */
- 0x0F1218D1, /*7000422C */
- 0x0F1202C9, /*7000422E */
- 0x0F120C09, /*70004230 */
- 0x0F122701, /*70004232 */
- 0x0F12003A, /*70004234 */
- 0x0F1240AA, /*70004236 */
- 0x0F129200, /*70004238 */
- 0x0F12002A, /*7000423A */
- 0x0F123A10, /*7000423C */
- 0x0F124097, /*7000423E */
- 0x0F122D10, /*70004240 */
- 0x0F12DA06, /*70004242 */
- 0x0F124A1B, /*70004244 */
- 0x0F129B00, /*70004246 */
- 0x0F128812, /*70004248 */
- 0x0F12439A, /*7000424A */
- 0x0F124B19, /*7000424C */
- 0x0F12801A, /*7000424E */
- 0x0F12E003, /*70004250 */
- 0x0F124B18, /*70004252 */
- 0x0F12885A, /*70004254 */
- 0x0F1243BA, /*70004256 */
- 0x0F12805A, /*70004258 */
- 0x0F120023, /*7000425A */
- 0x0F120032, /*7000425C */
- 0x0F12F000, /*7000425E */
- 0x0F12F8D7, /*70004260 */
- 0x0F122D10, /*70004262 */
- 0x0F12DA05, /*70004264 */
- 0x0F124913, /*70004266 */
- 0x0F129A00, /*70004268 */
- 0x0F128808, /*7000426A */
- 0x0F124310, /*7000426C */
- 0x0F128008, /*7000426E */
- 0x0F12E003, /*70004270 */
- 0x0F124810, /*70004272 */
- 0x0F128841, /*70004274 */
- 0x0F124339, /*70004276 */
- 0x0F128041, /*70004278 */
- 0x0F124D0D, /*7000427A */
- 0x0F122000, /*7000427C */
- 0x0F123580, /*7000427E */
- 0x0F1288AA, /*70004280 */
- 0x0F125E30, /*70004282 */
- 0x0F122100, /*70004284 */
- 0x0F12F000, /*70004286 */
- 0x0F12F8E3, /*70004288 */
- 0x0F128030, /*7000428A */
- 0x0F122000, /*7000428C */
- 0x0F1288AA, /*7000428E */
- 0x0F125E20, /*70004290 */
- 0x0F122100, /*70004292 */
- 0x0F12F000, /*70004294 */
- 0x0F12F8DC, /*70004296 */
- 0x0F128020, /*70004298 */
- 0x0F12E587, /*7000429A */
- 0x0F122558, /*7000429C */
- 0x0F127000, /*7000429E */
- 0x0F122AB8, /*700042A0 */
- 0x0F127000, /*700042A2 */
- 0x0F12145E, /*700042A4 */
- 0x0F127000, /*700042A6 */
- 0x0F122698, /*700042A8 */
- 0x0F127000, /*700042AA */
- 0x0F122BB8, /*700042AC */
- 0x0F127000, /*700042AE */
- 0x0F122998, /*700042B0 */
- 0x0F127000, /*700042B2 */
- 0x0F121100, /*700042B4 */
- 0x0F12D000, /*700042B6 */
- 0x0F124778, /*700042B8 */
- 0x0F1246C0, /*700042BA */
- 0x0F12C000, /*700042BC */
- 0x0F12E59F, /*700042BE */
- 0x0F12FF1C, /*700042C0 */
- 0x0F12E12F, /*700042C2 */
- 0x0F121789, /*700042C4 */
- 0x0F120001, /*700042C6 */
- 0x0F124778, /*700042C8 */
- 0x0F1246C0, /*700042CA */
- 0x0F12C000, /*700042CC */
- 0x0F12E59F, /*700042CE */
- 0x0F12FF1C, /*700042D0 */
- 0x0F12E12F, /*700042D2 */
- 0x0F1216F1, /*700042D4 */
- 0x0F120001, /*700042D6 */
- 0x0F124778, /*700042D8 */
- 0x0F1246C0, /*700042DA */
- 0x0F12C000, /*700042DC */
- 0x0F12E59F, /*700042DE */
- 0x0F12FF1C, /*700042E0 */
- 0x0F12E12F, /*700042E2 */
- 0x0F12C3B1, /*700042E4 */
- 0x0F120000, /*700042E6 */
- 0x0F124778, /*700042E8 */
- 0x0F1246C0, /*700042EA */
- 0x0F12C000, /*700042EC */
- 0x0F12E59F, /*700042EE */
- 0x0F12FF1C, /*700042F0 */
- 0x0F12E12F, /*700042F2 */
- 0x0F12C36D, /*700042F4 */
- 0x0F120000, /*700042F6 */
- 0x0F124778, /*700042F8 */
- 0x0F1246C0, /*700042FA */
- 0x0F12C000, /*700042FC */
- 0x0F12E59F, /*700042FE */
- 0x0F12FF1C, /*70004300 */
- 0x0F12E12F, /*70004302 */
- 0x0F12F6D7, /*70004304 */
- 0x0F120000, /*70004306 */
- 0x0F124778, /*70004308 */
- 0x0F1246C0, /*7000430A */
- 0x0F12C000, /*7000430C */
- 0x0F12E59F, /*7000430E */
- 0x0F12FF1C, /*70004310 */
- 0x0F12E12F, /*70004312 */
- 0x0F12B49D, /*70004314 */
- 0x0F120000, /*70004316 */
- 0x0F124778, /*70004318 */
- 0x0F1246C0, /*7000431A */
- 0x0F12C000, /*7000431C */
- 0x0F12E59F, /*7000431E */
- 0x0F12FF1C, /*70004320 */
- 0x0F12E12F, /*70004322 */
- 0x0F127EDF, /*70004324 */
- 0x0F120000, /*70004326 */
- 0x0F124778, /*70004328 */
- 0x0F1246C0, /*7000432A */
- 0x0F12C000, /*7000432C */
- 0x0F12E59F, /*7000432E */
- 0x0F12FF1C, /*70004330 */
- 0x0F12E12F, /*70004332 */
- 0x0F12448D, /*70004334 */
- 0x0F120000, /*70004336 */
- 0x0F124778, /*70004338 */
- 0x0F1246C0, /*7000433A */
- 0x0F12F004, /*7000433C */
- 0x0F12E51F, /*7000433E */
- 0x0F1229EC, /*70004340 */
- 0x0F120001, /*70004342 */
- 0x0F124778, /*70004344 */
- 0x0F1246C0, /*70004346 */
- 0x0F12C000, /*70004348 */
- 0x0F12E59F, /*7000434A */
- 0x0F12FF1C, /*7000434C */
- 0x0F12E12F, /*7000434E */
- 0x0F122EF1, /*70004350 */
- 0x0F120000, /*70004352 */
- 0x0F124778, /*70004354 */
- 0x0F1246C0, /*70004356 */
- 0x0F12C000, /*70004358 */
- 0x0F12E59F, /*7000435A */
- 0x0F12FF1C, /*7000435C */
- 0x0F12E12F, /*7000435E */
- 0x0F12EE03, /*70004360 */
- 0x0F120000, /*70004362 */
- 0x0F124778, /*70004364 */
- 0x0F1246C0, /*70004366 */
- 0x0F12C000, /*70004368 */
- 0x0F12E59F, /*7000436A */
- 0x0F12FF1C, /*7000436C */
- 0x0F12E12F, /*7000436E */
- 0x0F12A58B, /*70004370 */
- 0x0F120000, /*70004372 */
- 0x0F124778, /*70004374 */
- 0x0F1246C0, /*70004376 */
- 0x0F12C000, /*70004378 */
- 0x0F12E59F, /*7000437A */
- 0x0F12FF1C, /*7000437C */
- 0x0F12E12F, /*7000437E */
- 0x0F127C49, /*70004380 */
- 0x0F120000, /*70004382 */
- 0x0F124778, /*70004384 */
- 0x0F1246C0, /*70004386 */
- 0x0F12C000, /*70004388 */
- 0x0F12E59F, /*7000438A */
- 0x0F12FF1C, /*7000438C */
- 0x0F12E12F, /*7000438E */
- 0x0F127C63, /*70004390 */
- 0x0F120000, /*70004392 */
- 0x0F124778, /*70004394 */
- 0x0F1246C0, /*70004396 */
- 0x0F12C000, /*70004398 */
- 0x0F12E59F, /*7000439A */
- 0x0F12FF1C, /*7000439C */
- 0x0F12E12F, /*7000439E */
- 0x0F122DB7, /*700043A0 */
- 0x0F120000, /*700043A2 */
- 0x0F124778, /*700043A4 */
- 0x0F1246C0, /*700043A6 */
- 0x0F12C000, /*700043A8 */
- 0x0F12E59F, /*700043AA */
- 0x0F12FF1C, /*700043AC */
- 0x0F12E12F, /*700043AE */
- 0x0F12EB3D, /*700043B0 */
- 0x0F120000, /*700043B2 */
- 0x0F124778, /*700043B4 */
- 0x0F1246C0, /*700043B6 */
- 0x0F12C000, /*700043B8 */
- 0x0F12E59F, /*700043BA */
- 0x0F12FF1C, /*700043BC */
- 0x0F12E12F, /*700043BE */
- 0x0F12F061, /*700043C0 */
- 0x0F120000, /*700043C2 */
- 0x0F124778, /*700043C4 */
- 0x0F1246C0, /*700043C6 */
- 0x0F12C000, /*700043C8 */
- 0x0F12E59F, /*700043CA */
- 0x0F12FF1C, /*700043CC */
- 0x0F12E12F, /*700043CE */
- 0x0F12F0EF, /*700043D0 */
- 0x0F120000, /*700043D2 */
- 0x0F124778, /*700043D4 */
- 0x0F1246C0, /*700043D6 */
- 0x0F12F004, /*700043D8 */
- 0x0F12E51F, /*700043DA */
- 0x0F122824, /*700043DC */
- 0x0F120001, /*700043DE */
- 0x0F124778, /*700043E0 */
- 0x0F1246C0, /*700043E2 */
- 0x0F12C000, /*700043E4 */
- 0x0F12E59F, /*700043E6 */
- 0x0F12FF1C, /*700043E8 */
- 0x0F12E12F, /*700043EA */
- 0x0F128EDD, /*700043EC */
- 0x0F120000, /*700043EE */
- 0x0F124778, /*700043F0 */
- 0x0F1246C0, /*700043F2 */
- 0x0F12C000, /*700043F4 */
- 0x0F12E59F, /*700043F6 */
- 0x0F12FF1C, /*700043F8 */
- 0x0F12E12F, /*700043FA */
- 0x0F128DCB, /*700043FC */
- 0x0F120000, /*700043FE */
- 0x0F124778, /*70004400 */
- 0x0F1246C0, /*70004402 */
- 0x0F12C000, /*70004404 */
- 0x0F12E59F, /*70004406 */
- 0x0F12FF1C, /*70004408 */
- 0x0F12E12F, /*7000440A */
- 0x0F128E17, /*7000440C */
- 0x0F120000, /*7000440E */
- 0x0F124778, /*70004410 */
- 0x0F1246C0, /*70004412 */
- 0x0F12C000, /*70004414 */
- 0x0F12E59F, /*70004416 */
- 0x0F12FF1C, /*70004418 */
- 0x0F12E12F, /*7000441A */
- 0x0F1298C5, /*7000441C */
- 0x0F120000, /*7000441E */
- 0x0F124778, /*70004420 */
- 0x0F1246C0, /*70004422 */
- 0x0F12C000, /*70004424 */
- 0x0F12E59F, /*70004426 */
- 0x0F12FF1C, /*70004428 */
- 0x0F12E12F, /*7000442A */
- 0x0F127C7D, /*7000442C */
- 0x0F120000, /*7000442E */
- 0x0F124778, /*70004430 */
- 0x0F1246C0, /*70004432 */
- 0x0F12C000, /*70004434 */
- 0x0F12E59F, /*70004436 */
- 0x0F12FF1C, /*70004438 */
- 0x0F12E12F, /*7000443A */
- 0x0F127E31, /*7000443C */
- 0x0F120000, /*7000443E */
- 0x0F124778, /*70004440 */
- 0x0F1246C0, /*70004442 */
- 0x0F12C000, /*70004444 */
- 0x0F12E59F, /*70004446 */
- 0x0F12FF1C, /*70004448 */
- 0x0F12E12F, /*7000444A */
- 0x0F127EAB, /*7000444C */
- 0x0F120000, /*7000444E */
- 0x0F124778, /*70004450 */
- 0x0F1246C0, /*70004452 */
- 0x0F12C000, /*70004454 */
- 0x0F12E59F, /*70004456 */
- 0x0F12FF1C, /*70004458 */
- 0x0F12E12F, /*7000445A */
- 0x0F127501, /*7000445C */
- 0x0F120000, /*7000445E */
-/* End of Patch Data(Last : 7000445Eh)
-// Total Size 2408 (0x0968)
-// Addr : 3AF8 , Size : 2406(966h)
-
-//TNP_USER_MBCV_CONTROL
-//TNP_4EC_MBR_TUNE
-//TNP_4EC_FORBIDDEN_TUNE
-//TNP_AF_FINESEARCH_DRIVEBACK
-//TNP_FLASH_ALG
-//TNP_GAS_ALPHA_OTP
-//TNP_AWB_MODUL_COMP
-//TNP_AWB_INIT_QUEUE
-//TNP_AWB_GRID_LOWBR
-//TNP_AWB_GRID_MODULECOMP*/
-
- 0x0028D000,
- 0x002A1000,
- 0x0F120001,
- /* End of FACTORY ONLY. */
-
- /*AF setting */
- 0x00287000,
- 0x002A01FC,
- 0x0F120001, /*REG_TC_IPRM_LedGpio */
- /*70001720 0100 Only STW Use IT */
- 0x002A01FE,
- 0x0F120003,
- 0x0F120000,
- 0x002A0204,
- 0x0F120061,
- 0x002A020C,
- 0x0F122F0C,
- 0x0F120190,
- 0x002A0294,
- 0x0F120100,
- 0x0F1200E3,
- 0x0F120200,
- 0x0F120238,
- 0x0F1201C6,
- 0x0F120166,
- 0x0F120074,
- 0x0F120132,
- 0x0F120001,
-
- 0x002A070E,
- 0x0F1200FF,
- 0x002A071E,
- 0x0F120001,
- 0x002A163C,
- 0x0F120000,
-
- 0x002A1648,
- 0x0F129002, /*2nd search on when 2nd search lens opsite direct moving*/
- 0x002A1652,
- 0x0F120002,
- 0x0F120000,
- 0x002A15E0,
- 0x0F120801, /* when 2nd search 1code distance 6+1 position move */
-
- 0x002A164C,
- 0x0F120003,
- 0x002A163E,
- 0x0F1200E5,
- 0x0F1200CC, /*98(60%) -> CC(80%) */
- 0x002A15D4,
- 0x0F120000,
- 0x0F12D000,
- 0x002A169A,
- 0x0F12FF95,
- 0x002A166A,
- 0x0F120280,
- 0x002A1676,
- 0x0F1203A0,
- 0x0F120320,
- 0x002A16BC,
- 0x0F120030,
- 0x002A16E0,
- 0x0F120060,
- 0x002A16D4,
- 0x0F120010,
- 0x002A1656,
- 0x0F120000,
- 0x002A15E6,
- 0x0F12003C,
-
- 0x0F120017, /*af_pos_usTableLastInd */
- 0x0F120026,
- 0x0F12002C,
- 0x0F120032,
- 0x0F120038,
- 0x0F12003E,
- 0x0F120044,
- 0x0F12004A,
- 0x0F120050,
- 0x0F120056,
- 0x0F12005C,
- 0x0F120062,
- 0x0F120068,
- 0x0F12006E,
- 0x0F120074,
- 0x0F12007A,
- 0x0F120080,
- 0x0F120086,
- 0x0F12008C,
- 0x0F120092,
- 0x0F120098,
- 0x0F12009E,
- 0x0F1200A4,
- 0x0F1200AA,
- 0x0F1200B0,
-
- 0x002A1722,
- 0x0F128000,
- 0x0F120006,
- 0x0F123FF0,
- 0x0F1203E8,
- 0x0F120000,
- 0x0F120080, /*delay2 when threshold upper lens moving when moving*/
- 0x0F120009, /*threshold */
- 0x0F120020, /*delay1 when threshold lower lens moving when moving*/
- 0x0F120040,
- 0x0F120080,
- 0x0F1200C0,
- 0x0F1200E0,
-
- 0x002A028C,
- 0x0F120003, /*REG_TC_AF_AfCmd */
-
-/*===================================================================
-//04.Gas_Anti Shading_Otp
-//==================================================================*/
- 0x002A08B4,
- 0x0F120001, /*wbt_bUseOutdoorASH */
-
-/* Refer Mon_AWB_RotGain*/
- 0x002A08BC,
- 0x0F1200C0, /*TVAR_ash_AwbAshCord_0_ 2300K*/
- 0x0F1200DF, /*TVAR_ash_AwbAshCord_1_ 2750K*/
- 0x0F120100, /*TVAR_ash_AwbAshCord_2_ 3300K*/
- 0x0F120125, /*TVAR_ash_AwbAshCord_3_ 4150K*/
- 0x0F12015F, /*TVAR_ash_AwbAshCord_4_ 5250K*/
- 0x0F12017C, /*TVAR_ash_AwbAshCord_5_ 6400K*/
- 0x0F120194, /*TVAR_ash_AwbAshCord_6_ 7500K*/
-
-/* GAS Alpha Table*/
- 0x002A08F6,
- 0x0F124000, /*TVAR_ash_GASAlpha_0__0_ R // 2300K */
- 0x0F124000, /*TVAR_ash_GASAlpha_0__1_ GR */
- 0x0F124000, /*TVAR_ash_GASAlpha_0__2_ GB */
- 0x0F124000, /*TVAR_ash_GASAlpha_0__3_ B */
- 0x0F124000, /*TVAR_ash_GASAlpha_1__0_ R // 2750K */
- 0x0F124000, /*TVAR_ash_GASAlpha_1__1_ GR */
- 0x0F124000, /*TVAR_ash_GASAlpha_1__2_ GB */
- 0x0F124000, /*TVAR_ash_GASAlpha_1__3_ B */
- 0x0F124000, /*TVAR_ash_GASAlpha_2__0_ R // 3300K */
- 0x0F124000, /*TVAR_ash_GASAlpha_2__1_ GR */
- 0x0F124000, /*TVAR_ash_GASAlpha_2__2_ GB */
- 0x0F124000, /*TVAR_ash_GASAlpha_2__3_ B */
- 0x0F123C00, /*TVAR_ash_GASAlpha_3__0_ R // 4150K */
- 0x0F124000, /*TVAR_ash_GASAlpha_3__1_ GR */
- 0x0F124000, /*TVAR_ash_GASAlpha_3__2_ GB */
- 0x0F124000, /*TVAR_ash_GASAlpha_3__3_ B */
- 0x0F123E00, /*TVAR_ash_GASAlpha_4__0_ R // 5250K */
- 0x0F124000, /*TVAR_ash_GASAlpha_4__1_ GR */
- 0x0F124000, /*TVAR_ash_GASAlpha_4__2_ GB */
- 0x0F124000, /*TVAR_ash_GASAlpha_4__3_ B */
- 0x0F124100, /*TVAR_ash_GASAlpha_5__0_ R // 6400K */
- 0x0F124000, /*TVAR_ash_GASAlpha_5__1_ GR */
- 0x0F124000, /*TVAR_ash_GASAlpha_5__2_ GB */
- 0x0F124000, /*TVAR_ash_GASAlpha_5__3_ B */
- 0x0F124200, /*TVAR_ash_GASAlpha_6__0_ R // 7500K */
- 0x0F124000, /*TVAR_ash_GASAlpha_6__1_ GR */
- 0x0F124000, /*TVAR_ash_GASAlpha_6__2_ GB */
- 0x0F124000, /*TVAR_ash_GASAlpha_6__3_ B */
-
-/* Outdoor GAS Alpha*/
- 0x0F124500, /*TVAR_ash_GASOutdoorAlpha_0_ R */
- 0x0F124000, /*TVAR_ash_GASOutdoorAlpha_1_ GR */
- 0x0F124000, /*TVAR_ash_GASOutdoorAlpha_2_ GB */
- 0x0F124000, /*TVAR_ash_GASOutdoorAlpha_3_ B */
-
- 0x002A08F4,
- 0x0F120001, /*ash_bUseGasAlpha */
-
-/*=================================================================
-// 09.Auto Flicker Detection
-//================================================================*/
-
- 0x002A0F30,
- 0x0F120001, /*AFC_D_ConvAccelerPower */
-
-/*Auto Flicker (60Mhz start)*/
- 0x002A0F2A,
- 0x0F120000, /*AFC_Default BIT[0] 1:60Hz 0:50Hz */
- 0x002A04E6,
- 0x0F12077F, /*REG_TC_DBG 7F: 60Hz 5F:50Hz */
-
-/*===========================================================
-// 10.AE Setting
-//==========================================================*/
- 0x002A1484,
- 0x0F12003C, /*TVAR_ae_BrAve */
- 0x002A148A,
- 0x0F12000F, /*ae_StatMode */
- 0x002A058C,
- 0x0F123520,
- 0x0F120000, /*lt_uMaxExp1 */
- 0x0F12C350,
- 0x0F120000, /*lt_uMaxExp2 */
- 0x0F123520,
- 0x0F120000, /*lt_uCapMaxExp1 */
- 0x0F12C350,
- 0x0F120000, /*lt_uCapMaxExp2*/
- 0x002A059C,
- 0x0F120470, /*lt_uMaxAnGain1 */
- 0x0F120C00, /*lt_uMaxAnGain2 */
- 0x0F120100, /*lt_uMaxDigGain */
- 0x0F121000, /*lt_uMaxTotGain */
-
- 0x002A0544,
- 0x0F120111, /*lt_uLimitHigh */
- 0x0F1200EF, /*lt_uLimitLow */
-
- 0x002A0F2A,
- 0x0F120000, /*AFC_Default60Hz 0001:60Hz 0000h:50Hz */
- 0x002A04E6,
- 0x0F12077F, /*REG_TC_DBG */
-
- 0x002A0F30,
- 0x0F120001, /*AFC_D_ConvAccelerPower */
-
- 0x002A0608,
- 0x0F120001, /*lt_ExpGain_uSubsamplingmode */
- 0x0F120001, /*lt_ExpGain_uNonSubsampling */
- 0x0F120800, /*lt_ExpGain_ExpCurveGainMaxStr */
- 0x0F120100,/*0100 //lt_ExpGain_ExpCurveGainMaxStr_0_uMaxDigGain*/
- 0x0F120001, /*0001 */
- 0x0F120000,/*0000 //lt_ExpGain_ExpCurveGainMaxStr_0__ulExpIn_0_ */
- 0x0F120A3C, /*0A3C */
- 0x0F120000, /*0000 */
- 0x0F120D05, /*0D05 */
- 0x0F120000, /*0000 */
- 0x0F124008, /*4008 */
- 0x0F120000, /*0000 */
- 0x0F127000, /*7400 //?? //700Lux */
- 0x0F120000, /*0000 */
- 0x0F129C00, /*C000 //?? //9C00->9F->A5 //400Lux */
- 0x0F120000, /*0000 */
- 0x0F12AD00, /*AD00 */
- 0x0F120001, /*0001 */
- 0x0F12F1D4, /*F1D4 */
- 0x0F120002, /*0002 */
- 0x0F12DC00, /*DC00 */
- 0x0F120005, /*0005 */
- 0x0F12DC00, /*DC00 */
- 0x0F120005, /*0005 */
- /**/
- 0x002A0638, /*0638 */
- 0x0F120001, /*0001 */
- 0x0F120000,/*0000 //lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_0_*/
- 0x0F120A3C, /*0A3C */
- 0x0F120000, /*0000 */
- 0x0F120D05, /*0D05 */
- 0x0F120000, /*0000 */
- 0x0F123408, /*3408 */
- 0x0F120000, /*0000 */
- 0x0F123408, /*3408 */
- 0x0F120000, /*0000 */
- 0x0F126810, /*6810 */
- 0x0F120000, /*0000 */
- 0x0F128214, /*8214 */
- 0x0F120000, /*0000 */
- 0x0F12C350, /*C350 */
- 0x0F120000, /*0000 */
- 0x0F12C350, /*C350 */
- 0x0F120000, /*0000 */
- 0x0F12C350, /*C350 */
- 0x0F120000, /*0000 */
- 0x002A0660,
- 0x0F120650, /*lt_ExpGain_ExpCurveGainMaxStr_1_ */
- 0x0F120100, /*lt_ExpGain_ExpCurveGainMaxStr_1__uMaxDigGain */
- 0x002A06B8,
- 0x0F12452C,
- 0x0F120005, /*lt_uMaxLei */
-
-/*===========================================================
-// 11.AE Weight (Normal)
-//==========================================================*/
- 0x002A1492,
- 0x0F120100,
- 0x0F120101,
- 0x0F120101,
- 0x0F120001,
- 0x0F120101,
- 0x0F120201,
- 0x0F120102,
- 0x0F120101,
- 0x0F120101,
- 0x0F120202,
- 0x0F120202,
- 0x0F120101,
- 0x0F120201,
- 0x0F120302,
- 0x0F120203,
- 0x0F120102,
- 0x0F120201,
- 0x0F120302,
- 0x0F120203,
- 0x0F120102,
- 0x0F120201,
- 0x0F120202,
- 0x0F120202,
- 0x0F120102,
- 0x0F120101,
- 0x0F120202,
- 0x0F120202,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
-
-/*============================================
-// 14.AWB-BASIC setting
-//============================================*/
-
-/*AWB init Start point*/
- 0x002A145E,
- 0x0F120580,
- 0x0F120428,
- 0x0F1207B0,
-
- /*AWB Init */
-/*White Locus*/
- 0x002A11F0,
- 0x0F120120, /*awbb_IntcR */
- 0x0F120121, /*awbb_IntcB */
-
-/*Indoor Zone*/
- 0x002A101C,
- 0x0F120386,
- 0x0F1203A8,
- 0x0F12033C,
- 0x0F120394,
- 0x0F1202FE,
- 0x0F120372,
- 0x0F1202A8,
- 0x0F120352,
- 0x0F12027C,
- 0x0F120300,
- 0x0F120264,
- 0x0F1202C8,
- 0x0F120244,
- 0x0F1202A8,
- 0x0F12022C,
- 0x0F1202A0,
- 0x0F12020C,
- 0x0F1202A0,
- 0x0F1201F4,
- 0x0F120298,
- 0x0F1201D4,
- 0x0F120290,
- 0x0F1201CC,
- 0x0F120276,
- 0x0F1201D2,
- 0x0F120260,
- 0x0F1201F6,
- 0x0F12023A,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000, /*awbb_IndoorGrZones_m_GridStep */
- 0x0F120005,
- 0x002A1070, /*awbb_IndoorGrZones_ZInfo_m_GridSz */
- 0x0F12000F,
- 0x002A1074, /*awbb_IndoorGrZones_m_Boffs */
- 0x0F120126,
-/* Outdoor Zone*/
- 0x002A1078,
- 0x0F120270,
- 0x0F120296,
- 0x0F12024A,
- 0x0F1202AC,
- 0x0F120240,
- 0x0F1202B0,
- 0x0F120234,
- 0x0F1202B0,
- 0x0F120228,
- 0x0F1202AE,
- 0x0F12021E,
- 0x0F1202A8,
- 0x0F120212,
- 0x0F1202A0,
- 0x0F120210,
- 0x0F120294,
- 0x0F12020E,
- 0x0F120288,
- 0x0F120218,
- 0x0F12027E,
- 0x0F120234,
- 0x0F120256,
- 0x0F120000,
- 0x0F120000,
-
- 0x0F120004, /*awbb_OutdoorGrZones_m_GridStep */
- 0x002A10AC,
- 0x0F12000B, /*awbb_OutdoorGrZones_ZInfo_m_GridSz */
- 0x002A10B0,
- 0x0F1201E8, /*awbb_OutdoorGrZones_m_Boffs */
-
- /*LowBR Zone */
- 0x002A10B4,
- 0x0F120350,
- 0x0F120422,
- 0x0F1202C4,
- 0x0F120452,
- 0x0F120278,
- 0x0F12041C,
- 0x0F120230,
- 0x0F1203EE,
- 0x0F1201F0,
- 0x0F120392,
- 0x0F1201C0,
- 0x0F120340,
- 0x0F120194,
- 0x0F120302,
- 0x0F12016E,
- 0x0F1202C2,
- 0x0F120148,
- 0x0F120286,
- 0x0F12018A,
- 0x0F120242,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
-
- 0x0F120006, /*awbb_LowBrGrZones_m_GridStep */
- 0x002A10E8,
- 0x0F12000A, /*awbb_LowBrGrZones_ZInfo_m_GridSz */
- 0x002A10EC,
- 0x0F120106, /*awbb_LowBrGrZones_m_Boffs */
-
- /*LowTemp Zone */
- 0x002A10F0,
- 0x0F120380,
- 0x0F120000, /*awbb_CrclLowT_R_c */
- 0x0F120168,
- 0x0F120000, /*awbb_CrclLowT_B_c */
- 0x0F122D90,
- 0x0F120000, /*awbb_CrclLowT_Rad_c */
-
- /*AWB Convergence Speed */
- 0x002A1464,
- 0x0F120008,
- 0x0F120190,
- 0x0F1200A0,
-
- 0x002A1228,
- 0x0F1200C0,
- 0x002A122C,
- 0x0F120010,
- 0x002A122A,
- 0x0F120010,
-
- 0x002A120A,
- 0x0F1205D5, /*awbb_MvEq_RBthresh */
- 0x002A120E,
- 0x0F120000,
-
- 0x0F120771,
- 0x0F1203A4,
- 0x0F120036,
- 0x0F12002A,
-
- 0x002A1278,
- 0x0F12FEF7,
- 0x0F120021,
- 0x0F120AF0, /*0E74 */
- 0x0F120AF0, /*0E74 */
- 0x0F12018F,
- 0x0F120096,
- 0x0F12000E,
- 0x002A1224,
- 0x0F120032,
- 0x0F12001E,
- 0x0F1200C0,
- 0x0F120010,
- 0x0F120002, /*awbb_YThreshLow_Low */
- 0x002A2BA4,
- 0x0F120006, /*Mon_AWB_ByPassMode */
-
- 0x002A146C,
- 0x0F120002, /*awbb_GridEnable */
-
- /*Grid */
- 0x002A1434,
- 0x0F1202CE, /* awbb_GridConst_1 */
- 0x0F120347, /* awbb_GridConst_1_1_ */
- 0x0F1203C2, /* awbb_GridConst_1_2_ */
- 0x0F1210A0, /* awbb_GridConst_2 */
- 0x0F1210A1, /* awbb_GridConst_2_1_ */
- 0x0F121185, /* awbb_GridConst_2_2_ */
- 0x0F121186, /* awbb_GridConst_2_3_ */
- 0x0F1211E5, /* awbb_GridConst_2_4_ */
- 0x0F1211E6, /* awbb_GridConst_2_5_ */
- 0x0F1200AB, /* awbb_GridCoeff_R_1 */
- 0x0F1200BF, /* awbb_GridCoeff_B_1 */
- 0x0F1200D2, /* awbb_GridCoeff_R_2 */
- 0x0F120093, /* awbb_GridCoeff_B_2 */
-
- /*Indoor Grid Offset */
- 0x002A13A4,
- 0x0F120000, /*0000 */
- 0x0F12FFE8, /*FFD8 */
- 0x0F12FFE8, /*FFD8 */
- 0x0F12FFC0, /*FFD8 */
- 0x0F12FFC0, /*FFD8 */
- 0x0F12FFD0, /*FFF6 B */
- /**/
- 0x0F120000,/*0000 */
- 0x0F12FFD8, /*FFD8 */
- 0x0F12FFD8, /*FFD8 */
- 0x0F12FFC0, /*FFD8 */
- 0x0F12FFC0, /*FFD8 */
- 0x0F12FFD0, /*FFF6 */
- /**/
- 0x0F120000,/*0000 */
- 0x0F12FFD8, /*FFD8 */
- 0x0F12FFD8, /*FFD8 */
- 0x0F12FFC0, /*FFD8 */
- 0x0F12FFC0, /*FFD8 */
- 0x0F12FFD0, /*FFF6 */
- /**/
- 0x0F12FFEC,/*FFEC*/
- 0x0F120010,/*000A */
- 0x0F120010, /*000A */
- 0x0F12FFC0, /*FFC4 */
- 0x0F12FFC0, /*FFC4 */
- 0x0F12FFBC, /*FF56 7 */
- /**/
- 0x0F12FFEC,/*FFEC*/
- 0x0F120010,/*000A */
- 0x0F120010, /*000A */
- 0x0F12FFC0, /*FFC4 */
- 0x0F12FFC0, /*FFC4 */
- 0x0F12FFBC, /*FF56 */
- /**/
- 0x0F12FFEC,/*FFEC*/
- 0x0F120010,/*000A */
- 0x0F120010, /*000A */
- 0x0F12FFC0, /*FFC4 */
- 0x0F12FFC0, /*FFC4 */
- 0x0F12FFBC, /*FF56 */
-
-/*Outdoor Grid Offset*/
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F120000,
- 0x0F120000,
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F120000,
- 0x0F120000,
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F12FFE0,
- 0x0F120000,
- 0x0F120000,
- 0x0F12FFB0,
- 0x0F12FFA8,
- 0x0F12FFA8,
- 0x0F12FFA8,
- 0x0F120000,
- 0x0F120000,
- 0x0F12FFB0,
- 0x0F12FFA8,
- 0x0F12FFA8,
- 0x0F12FFA8,
- 0x0F120000,
- 0x0F120000,
- 0x0F12FFB0,
- 0x0F12FFA8,
- 0x0F12FFA8,
- 0x0F12FFA8,
- 0x0F120000,
- 0x0F120000,
- 0x002A1208,
- 0x0F120020,
-
- 0x002A144E,
- 0x0F120000, /*awbb_RGainOff */
- 0x0F12FFE0, /*awbb_BGainOff */
- 0x0F120000, /*awbb_GGainOff */
-
-/*======================================================
-// 15.CCM Setting
-//=====================================================*/
- /*CCM*/
- 0x002A08A6,
- 0x0F1200C0,
- 0x0F120100,
- 0x0F120125,
- 0x0F12015F,
- 0x0F12017C,
- 0x0F120194,
-
- 0x0F120001,
-
- 0x002A0898,
- 0x0F124800,
- 0x0F127000,
- 0x002A08A0,
- 0x0F1248D8,
- 0x0F127000,
- 0x002A4800,/*Horizon */
- 0x0F120208,
- 0x0F12FFB5,
- 0x0F12FFE8,
- 0x0F12FF20,
- 0x0F1201BF,
- 0x0F12FF53,
- 0x0F120022,
- 0x0F12FFEA,
- 0x0F1201C2,
- 0x0F1200C6,
- 0x0F120095,
- 0x0F12FEFD,
- 0x0F120206,
- 0x0F12FF7F,
- 0x0F120191,
- 0x0F12FF06,
- 0x0F1201BA,
- 0x0F120108,
-
- 0x0F120208, /* inca A */
- 0x0F12FFB5,
- 0x0F12FFE8,
- 0x0F12FF20,
- 0x0F1201BF,
- 0x0F12FF53,
- 0x0F120022,
- 0x0F12FFEA,
- 0x0F1201C2,
- 0x0F1200C6,
- 0x0F120095,
- 0x0F12FEFD,
- 0x0F120206,
- 0x0F12FF7F,
- 0x0F120191,
- 0x0F12FF06,
- 0x0F1201BA,
- 0x0F120108,
- 0x0F120208,/*WW*/
- 0x0F12FFB5,
- 0x0F12FFE8,
- 0x0F12FF20,
- 0x0F1201BF,
- 0x0F12FF53,
- 0x0F120022,
- 0x0F12FFEA,
- 0x0F1201C2,
- 0x0F1200C6,
- 0x0F120095,
- 0x0F12FEFD,
- 0x0F120206,
- 0x0F12FF7F,
- 0x0F120191,
- 0x0F12FF06,
- 0x0F1201BA,
- 0x0F120108,
- 0x0F120204,/*CW*/
- 0x0F12FFB2,
- 0x0F12FFF5,
- 0x0F12FEF1,
- 0x0F12014E,
- 0x0F12FF18,
- 0x0F12FFE6,
- 0x0F12FFDD,
- 0x0F1201B2,
- 0x0F1200F2,
- 0x0F1200CA,
- 0x0F12FF48,
- 0x0F120151,
- 0x0F12FF50,
- 0x0F120147,
- 0x0F12FF75,
- 0x0F120187,
- 0x0F1201BF,
- 0x0F1201F5,/*D50*/
- 0x0F12FFB4,
- 0x0F120001,
- 0x0F12FED7,
- 0x0F12014B,
- 0x0F12FF35,
- 0x0F12FFE6,
- 0x0F12FFDD,
- 0x0F1201B2,
- 0x0F1200F2,
- 0x0F1200CA,
- 0x0F12FF48,
- 0x0F120151,
- 0x0F12FF50,
- 0x0F120147,
- 0x0F12FF75,
- 0x0F120187,
- 0x0F1201BF,
- 0x0F1201F5,/*D65 */
- 0x0F12FFB4,
- 0x0F120001,
- 0x0F12FED7,
- 0x0F12014B,
- 0x0F12FF35,
- 0x0F12FFE6,
- 0x0F12FFDD,
- 0x0F1201B2,
- 0x0F1200F2,
- 0x0F1200CA,
- 0x0F12FF48,
- 0x0F120151,
- 0x0F12FF50,
- 0x0F120147,
- 0x0F12FF75,
- 0x0F120187,
- 0x0F1201BF,
- 0x0F1201E5,/*Y hue-5. TVAR_wbt_pOutdoorCcm[0] */
- 0x0F12FFA4,
- 0x0F12FFDC,
- 0x0F12FE90,
- 0x0F12013F,
- 0x0F12FF1B,
- 0x0F12FFD2,
- 0x0F12FFDF,
- 0x0F120236,
- 0x0F1200F0,
- 0x0F1200C9,
- 0x0F12FF59,
- 0x0F1201CE,
- 0x0F12FF83,
- 0x0F120195,
- 0x0F12FEF3,
- 0x0F120126,
- 0x0F120162,
-/*==================================================================
-// 16.GAMMA
-//================================================================*/
- 0x002A0734,/*R*/
- 0x0F120000,
- 0x0F120001,
- 0x0F120006,
- 0x0F120017,
- 0x0F12004A,
- 0x0F1200C9,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
-
- 0x0F120000,/*G*/
- 0x0F120001,
- 0x0F120006,
- 0x0F120017,
- 0x0F12004A,
- 0x0F1200C9,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
-
- 0x0F120000,/*B*/
- 0x0F120001,
- 0x0F120006,
- 0x0F120017,
- 0x0F12004A,
- 0x0F1200C9,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
-/*RGB OutdoorGamma*/
- 0x0F120000,
- 0x0F12000B,
- 0x0F120019,
- 0x0F120036,
- 0x0F12006F,
- 0x0F1200D8,
- 0x0F120135,
- 0x0F12015F,
- 0x0F120185,
- 0x0F1201C1,
- 0x0F1201F3,
- 0x0F120220,
- 0x0F12024A,
- 0x0F120291,
- 0x0F1202D0,
- 0x0F12032A,
- 0x0F12036A,
- 0x0F12039F,
- 0x0F1203CC,
- 0x0F1203F9,
- 0x0F120000,
- 0x0F12000B,
- 0x0F120019,
- 0x0F120036,
- 0x0F12006F,
- 0x0F1200D8,
- 0x0F120135,
- 0x0F12015F,
- 0x0F120185,
- 0x0F1201C1,
- 0x0F1201F3,
- 0x0F120220,
- 0x0F12024A,
- 0x0F120291,
- 0x0F1202D0,
- 0x0F12032A,
- 0x0F12036A,
- 0x0F12039F,
- 0x0F1203CC,
- 0x0F1203F9,
- 0x0F120000,
- 0x0F12000B,
- 0x0F120019,
- 0x0F120036,
- 0x0F12006F,
- 0x0F1200D8,
- 0x0F120135,
- 0x0F12015F,
- 0x0F120185,
- 0x0F1201C1,
- 0x0F1201F3,
- 0x0F120220,
- 0x0F12024A,
- 0x0F120291,
- 0x0F1202D0,
- 0x0F12032A,
- 0x0F12036A,
- 0x0F12039F,
- 0x0F1203CC,
- 0x0F1203F9,
-/*===========================================================
-// 17.AFIT
-//==========================================================*/
- 0x002A0944,
- 0x0F120050,/*afit_uNoiseIndInDoor */
- 0x0F1200B0, /*afit_uNoiseIndInDoor */
- 0x0F120196, /*afit_uNoiseIndInDoor */
- 0x0F120245, /*afit_uNoiseIndInDoor */
- 0x0F120300, /*afit_uNoiseIndInDoor */
-
- 0x002A0938,
- 0x0F120000,/* on/off AFIT by NB option */
- 0x0F120014, /*SARR_uNormBrInDoor */
- 0x0F1200D2, /*SARR_uNormBrInDoor */
- 0x0F120384, /*SARR_uNormBrInDoor */
- 0x0F1207D0, /*SARR_uNormBrInDoor */
- 0x0F121388, /*SARR_uNormBrInDoor */
-
- 0x002A0976,
- 0x0F120070,/*afit_usGamutTh */
- 0x0F120005, /*afit_usNeargrayOffset */
- 0x0F120000, /*afit_bUseSenBpr */
- 0x0F1201CC, /*afit_usBprThr_0_ */
- 0x0F1201CC, /*afit_usBprThr_1_ */
- 0x0F1201CC, /*afit_usBprThr_2_ */
- 0x0F1201CC, /*afit_usBprThr_3_ */
- 0x0F1201CC, /*afit_usBprThr_4_ */
- 0x0F120180, /*afit_NIContrastAFITValue */
- 0x0F120196, /*afit_NIContrastTh */
-
- 0x002A098C,
- 0x0F12FFEC, /*7000098C//_BRIGHTNESS */
- 0x0F120000, /*7000098E//_CONTRAST */
- 0x0F120000, /*70000990//_SATURATION */
- 0x0F120000, /*70000992//_SHARP_BLUR */
- 0x0F120000, /*70000994//_GLAMOUR */
- 0x0F1200C0, /*70000996//_bnr_edge_high */
- 0x0F120064, /*70000998//_postdmsc_iLowBright */
- 0x0F120384, /*7000099A//_postdmsc_iHighBright */
- 0x0F12005F, /*7000099C//_postdmsc_iLowSat */
- 0x0F1201F4, /*7000099E//_postdmsc_iHighSat */
- 0x0F120070, /*700009A0//_postdmsc_iTune */
- 0x0F120040, /*700009A2//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*700009A4//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*700009A6//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*700009A8//_yuvemix_mPosRanges_0 */
- 0x0F120040, /*700009AA//_yuvemix_mPosRanges_1 */
- 0x0F1200A0, /*700009AC//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*700009AE//_bnr_edge_low */
- 0x0F120201, /*700009B0//_bnr_repl_force */
- 0x0F120204, /*700009B2//_bnr_iHotThreshLow */
- 0x0F123604, /*700009B4//_bnr_iColdThreshLow */
- 0x0F12032A, /*700009B6//_bnr_DispTH_High */
- 0x0F120403, /*700009B8//_bnr_DISP_Limit_High */
- 0x0F121B06, /*700009BA//_bnr_iDistSigmaMax */
- 0x0F126015, /*700009BC//_bnr_iDiffSigmaHigh */
- 0x0F1200C0, /*700009BE//_bnr_iNormalizedSTD_Limit */
- 0x0F126080, /*700009C0//_bnr_iDirMinThres */
- 0x0F124080, /*700009C2//_bnr_iDirFltDiffThresLow */
- 0x0F120640, /*700009C4//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*700009C6//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*700009C8//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*700009CA//_bnr_iSlopeBlurStrength */
- 0x0F120000, /*700009CC//_bnr_AddNoisePower1 */
- 0x0F120400, /*700009CE//_bnr_iRadialTune */
- 0x0F12365A, /*700009D0//_bnr_iRadialLimit */
- 0x0F12102A, /*700009D2//_ee_iFSMagThHigh */
- 0x0F12000B, /*700009D4//_ee_iFSVarThHigh */
- 0x0F120600, /*700009D6//_ee_iFSThHigh */
- 0x0F125A0F, /*700009D8//_ee_iFSVarCountTh */
- 0x0F120505, /*700009DA//_ee_iRadialPower */
- 0x0F121802, /*700009DC//_ee_iROADThres */
- 0x0F120000, /*700009DE//_ee_iROADSubMaxNR */
- 0x0F122006, /*700009E0//_ee_iROADNeiThres */
- 0x0F123028, /*700009E2//_ee_iSmoothEdgeThres */
- 0x0F120418, /*700009E4//_ee_iWSharpen */
- 0x0F120101, /*700009E6//_ee_iWShThresh */
- 0x0F120800, /*700009E8//_ee_iEmbossCentAdd */
- 0x0F121804, /*700009EA//_ee_iReduceEdgeThresh */
- 0x0F124008, /*700009EC//_dmsc_iDesatThresh */
- 0x0F120540, /*700009EE//_dmsc_iDemBlurLow */
- 0x0F128006, /*700009F0//_dmsc_iDecisionThresh */
- 0x0F120020, /*700009F2//_dmsc_iMonochrom */
- 0x0F120000, /*700009F4//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*700009F6//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*700009F8//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*700009FA//_postdmsc_iBCoeff */
- 0x0F12000B, /*700009FC//_postdmsc_iWideMult */
- 0x0F120607, /*700009FE//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000A00//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000A02//_yuvemix_mPosSlopes_1 */
- 0x0F120705, /*70000A04//_yuvemix_mPosSlopes_3 */
- 0x0F120206, /*70000A06//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000A08//_yuviirnr_iHighYNorm */
- 0x0F120309, /*70000A0A//_yuviirnr_iHighUVNorm */
- 0x0F120305, /*70000A0C//_yuviirnr_iUVNormShift */
- 0x0F122006, /*70000A0E//_yuviirnr_iVertLength_UV */
- 0x0F121320, /*70000A10//_yuviirnr_iDiffThreshH_Y */
- 0x0F121014, /*70000A12//_yuviirnr_iDiffThreshH_UV */
- 0x0F121010, /*70000A14//_yuviirnr_iMaxThreshH_Y */
- 0x0F120C10, /*70000A16//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A0C, /*70000A18//_yuviirnr_iYNRStrengthH */
- 0x0F124A18, /*70000A1A//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000A1C//_RGBGamma2_iLinearity */
- 0x0F120350, /*70000A1E//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000A20//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000A22//_bnr_iClustMulT_H */
- 0x0F120101, /*70000A24//_bnr_iClustThresh_H */
- 0x0F122A36, /*70000A26//_bnr_iDenThreshLow */
- 0x0F126024, /*70000A28//_ee_iLowSharpPower */
- 0x0F122A36, /*70000A2A//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000A2C//_ee_iLowSharpClamp */
- 0x0F120808, /*70000A2E//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000A30//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000A32//_bnr_iClustMulT_C_Bin */
- 0x0F122701, /*70000A34//_bnr_iClustThresh_C_Bin */
- 0x0F12241E, /*70000A36//_bnr_iDenThreshHigh_Bin */
- 0x0F122E60, /*70000A38//_ee_iHighSharpPower_Bin */
- 0x0F12FF22, /*70000A3A//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000A3C//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000A3E//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000A40//_bnr_nClustLevel_C */
- 0x0F120000, /*70000A42//_BRIGHTNESS */
- 0x0F120000, /*70000A44//_CONTRAST */
- 0x0F120000, /*70000A46//_SATURATION */
- 0x0F120000, /*70000A48//_SHARP_BLUR */
- 0x0F120000, /*70000A4A//_GLAMOUR */
- 0x0F1200C0, /*70000A4C//_bnr_edge_high */
- 0x0F120064, /*70000A4E//_postdmsc_iLowBright */
- 0x0F120384, /*70000A50//_postdmsc_iHighBright */
- 0x0F120051, /*70000A52//_postdmsc_iLowSat */
- 0x0F1201F4, /*70000A54//_postdmsc_iHighSat */
- 0x0F120070, /*70000A56//_postdmsc_iTune */
- 0x0F120040, /*70000A58//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*70000A5A//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*70000A5C//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*70000A5E//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*70000A60//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*70000A62//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*70000A64//_bnr_edge_low */
- 0x0F120201, /*70000A66//_bnr_repl_force */
- 0x0F120204, /*70000A68//_bnr_iHotThreshLow */
- 0x0F122404, /*70000A6A//_bnr_iColdThreshLow */
- 0x0F12031B, /*70000A6C//_bnr_DispTH_High */
- 0x0F120103, /*70000A6E//_bnr_DISP_Limit_High */
- 0x0F121205, /*70000A70//_bnr_iDistSigmaMax */
- 0x0F12400D, /*70000A72//_bnr_iDiffSigmaHigh */
- 0x0F120080, /*70000A74//_bnr_iNormalizedSTD_Limit */
- 0x0F121980, /*70000A76//_bnr_iDirMinThres */
- 0x0F12272E, /*70000A78//_bnr_iDirFltDiffThresLow */
- 0x0F120629, /*70000A7A//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*70000A7C//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*70000A7E//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*70000A80//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*70000A82//_bnr_AddNoisePower1 */
- 0x0F120300, /*70000A84//_bnr_iRadialTune */
- 0x0F12245A, /*70000A86//_bnr_iRadialLimit */
- 0x0F121018, /*70000A88//_ee_iFSMagThHigh */
- 0x0F12000B, /*70000A8A//_ee_iFSVarThHigh */
- 0x0F120B00, /*70000A8C//_ee_iFSThHigh */
- 0x0F125A0F, /*70000A8E//_ee_iFSVarCountTh */
- 0x0F120505, /*70000A90//_ee_iRadialPower */
- 0x0F121802, /*70000A92//_ee_iROADThres */
- 0x0F120000, /*70000A94//_ee_iROADSubMaxNR */
- 0x0F122006, /*70000A96//_ee_iROADNeiThres */
- 0x0F123828, /*70000A98//_ee_iSmoothEdgeThres */
- 0x0F120425, /*70000A9A//_ee_iWSharpen */
- 0x0F120101, /*70000A9C//_ee_iWShThresh */
- 0x0F120800, /*70000A9E//_ee_iEmbossCentAdd */
- 0x0F121004, /*70000AA0//_ee_iReduceEdgeThresh */
- 0x0F124008, /*70000AA2//_dmsc_iDesatThresh */
- 0x0F120540, /*70000AA4//_dmsc_iDemBlurLow */
- 0x0F128006, /*70000AA6//_dmsc_iDecisionThresh */
- 0x0F120020, /*70000AA8//_dmsc_iMonochrom */
- 0x0F120000, /*70000AAA//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*70000AAC//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*70000AAE//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*70000AB0//_postdmsc_iBCoeff */
- 0x0F12000B, /*70000AB2//_postdmsc_iWideMult */
- 0x0F120607, /*70000AB4//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000AB6//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000AB8//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*70000ABA//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*70000ABC//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000ABE//_yuviirnr_iHighYNorm */
- 0x0F120409, /*70000AC0//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*70000AC2//_yuviirnr_iUVNormShift */
- 0x0F120407, /*70000AC4//_yuviirnr_iVertLength_UV */
- 0x0F122204, /*70000AC6//_yuviirnr_iDiffThreshH_Y */
- 0x0F12021C, /*70000AC8//_yuviirnr_iDiffThreshH_UV */
- 0x0F121102, /*70000ACA//_yuviirnr_iMaxThreshH_Y */
- 0x0F120611, /*70000ACC//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*70000ACE//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*70000AD0//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000AD2//_RGBGamma2_iLinearity */
- 0x0F120374, /*70000AD4//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000AD6//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000AD8//_bnr_iClustMulT_H */
- 0x0F120101, /*70000ADA//_bnr_iClustThresh_H */
- 0x0F12141D, /*70000ADC//_bnr_iDenThreshLow */
- 0x0F126024, /*70000ADE//_ee_iLowSharpPower */
- 0x0F121217, /*70000AE0//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000AE2//_ee_iLowSharpClamp */
- 0x0F120808, /*70000AE4//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000AE6//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000AE8//_bnr_iClustMulT_C_Bin */
- 0x0F120001, /*70000AEA//_bnr_iClustThresh_C_Bin */
- 0x0F122400, /*70000AEC//_bnr_iDenThreshHigh_Bin */
- 0x0F121660, /*70000AEE//_ee_iHighSharpPower_Bin */
- 0x0F12FF10, /*70000AF0//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000AF2//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000AF4//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000AF6//_bnr_nClustLevel_C */
- 0x0F120000, /*70000AF8//_BRIGHTNESS AFIT 2 */
- 0x0F120000, /*70000AFA//_CONTRAST */
- 0x0F120000, /*70000AFC//_SATURATION */
- 0x0F120000, /*70000AFE//_SHARP_BLUR */
- 0x0F120000, /*70000B00//_GLAMOUR */
- 0x0F1200C0, /*70000B02//_bnr_edge_high */
- 0x0F120064, /*70000B04//_postdmsc_iLowBright */
- 0x0F120384, /*70000B06//_postdmsc_iHighBright */
- 0x0F120043, /*70000B08//_postdmsc_iLowSat */
- 0x0F1201F4, /*70000B0A//_postdmsc_iHighSat */
- 0x0F120070, /*70000B0C//_postdmsc_iTune */
- 0x0F120040, /*70000B0E//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*70000B10//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*70000B12//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*70000B14//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*70000B16//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*70000B18//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*70000B1A//_bnr_edge_low */
- 0x0F120201, /*70000B1C//_bnr_repl_force */
- 0x0F120204, /*70000B1E//_bnr_iHotThreshLow */
- 0x0F121B04, /*70000B20//_bnr_iColdThreshLow */
- 0x0F120312, /*70000B22//_bnr_DispTH_High */
- 0x0F120003, /*70000B24//_bnr_DISP_Limit_High */
- 0x0F120C03, /*70000B26//_bnr_iDistSigmaMax */
- 0x0F122806, /*70000B28//_bnr_iDiffSigmaHigh */
- 0x0F120060, /*70000B2A//_bnr_iNormalizedSTD_Limit */
- 0x0F121580, /*70000B2C//_bnr_iDirMinThres */
- 0x0F122020, /*70000B2E//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*70000B30//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*70000B32//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*70000B34//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*70000B36//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*70000B38//_bnr_AddNoisePower1 */
- 0x0F120300, /*70000B3A//_bnr_iRadialTune */
- 0x0F12145A, /*70000B3C//_bnr_iRadialLimit */
- 0x0F121010, /*70000B3E//_ee_iFSMagThHigh */
- 0x0F12000B, /*70000B40//_ee_iFSVarThHigh */
- 0x0F120E00, /*70000B42//_ee_iFSThHigh */
- 0x0F125A0F, /*70000B44//_ee_iFSVarCountTh */
- 0x0F120504, /*70000B46//_ee_iRadialPower */
- 0x0F121802, /*70000B48//_ee_iROADThres */
- 0x0F120000, /*70000B4A//_ee_iROADSubMaxNR */
- 0x0F122006, /*70000B4C//_ee_iROADNeiThres */
- 0x0F123828, /*70000B4E//_ee_iSmoothEdgeThres */
- 0x0F120428, /*70000B50//_ee_iWSharpen */
- 0x0F120101, /*70000B52//_ee_iWShThresh */
- 0x0F128000, /*70000B54//_ee_iEmbossCentAdd */
- 0x0F120A04, /*70000B56//_ee_iReduceEdgeThresh */
- 0x0F124008, /*70000B58//_dmsc_iDesatThresh */
- 0x0F120540, /*70000B5A//_dmsc_iDemBlurLow */
- 0x0F128006, /*70000B5C//_dmsc_iDecisionThresh */
- 0x0F120020, /*70000B5E//_dmsc_iMonochrom */
- 0x0F120000, /*70000B60//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*70000B62//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*70000B64//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*70000B66//_postdmsc_iBCoeff */
- 0x0F12000B, /*70000B68//_postdmsc_iWideMult */
- 0x0F120607, /*70000B6A//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000B6C//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000B6E//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*70000B70//_yuvemix_mPosSlopes_3 */
- 0x0F120207, /*70000B72//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000B74//_yuviirnr_iHighYNorm */
- 0x0F120409, /*70000B76//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*70000B78//_yuviirnr_iUVNormShift */
- 0x0F120407, /*70000B7A//_yuviirnr_iVertLength_UV */
- 0x0F122404, /*70000B7C//_yuviirnr_iDiffThreshH_Y */
- 0x0F120221, /*70000B7E//_yuviirnr_iDiffThreshH_UV */
- 0x0F121202, /*70000B80//_yuviirnr_iMaxThreshH_Y */
- 0x0F120613, /*70000B82//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*70000B84//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*70000B86//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000B88//_RGBGamma2_iLinearity */
- 0x0F120080, /*70000B8A//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000B8C//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000B8E//_bnr_iClustMulT_H */
- 0x0F120101, /*70000B90//_bnr_iClustThresh_H */
- 0x0F12121B, /*70000B92//_bnr_iDenThreshLow */
- 0x0F126024, /*70000B94//_ee_iLowSharpPower */
- 0x0F120C0C, /*70000B96//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000B98//_ee_iLowSharpClamp */
- 0x0F120808, /*70000B9A//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000B9C//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000B9E//_bnr_iClustMulT_C_Bin */
- 0x0F120001, /*70000BA0//_bnr_iClustThresh_C_Bin */
- 0x0F122400, /*70000BA2//_bnr_iDenThreshHigh_Bin */
- 0x0F120460, /*70000BA4//_ee_iHighSharpPower_Bin */
- 0x0F12FF04, /*70000BA6//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000BA8//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000BAA//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000BAC//_bnr_nClustLevel_C */
- 0x0F120000, /*70000BAE//_BRIGHTNESS AFIT 3 */
- 0x0F120000, /*70000BB0//_CONTRAST */
- 0x0F120000, /*70000BB2//_SATURATION */
- 0x0F120000, /*70000BB4//_SHARP_BLUR */
- 0x0F120000, /*70000BB6//_GLAMOUR */
- 0x0F1200C0, /*70000BB8//_bnr_edge_high */
- 0x0F120064, /*70000BBA//_postdmsc_iLowBright */
- 0x0F120384, /*70000BBC//_postdmsc_iHighBright */
- 0x0F120032, /*70000BBE//_postdmsc_iLowSat */
- 0x0F1201F4, /*70000BC0//_postdmsc_iHighSat */
- 0x0F120070, /*70000BC2//_postdmsc_iTune */
- 0x0F120040, /*70000BC4//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*70000BC6//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*70000BC8//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*70000BCA//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*70000BCC//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*70000BCE//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*70000BD0//_bnr_edge_low */
- 0x0F120201, /*70000BD2//_bnr_repl_force */
- 0x0F120204, /*70000BD4//_bnr_iHotThreshLow */
- 0x0F121504, /*70000BD6//_bnr_iColdThreshLow */
- 0x0F12030F, /*70000BD8//_bnr_DispTH_High */
- 0x0F120003, /*70000BDA//_bnr_DISP_Limit_High */
- 0x0F120902, /*70000BDC//_bnr_iDistSigmaMax */
- 0x0F122004, /*70000BDE//_bnr_iDiffSigmaHigh */
- 0x0F120050, /*70000BE0//_bnr_iNormalizedSTD_Limit */
- 0x0F121140, /*70000BE2//_bnr_iDirMinThres */
- 0x0F12201C, /*70000BE4//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*70000BE6//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*70000BE8//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*70000BEA//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*70000BEC//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*70000BEE//_bnr_AddNoisePower1 */
- 0x0F120300, /*70000BF0//_bnr_iRadialTune */
- 0x0F12145A, /*70000BF2//_bnr_iRadialLimit */
- 0x0F121010, /*70000BF4//_ee_iFSMagThHigh */
- 0x0F12000B, /*70000BF6//_ee_iFSVarThHigh */
- 0x0F121000, /*70000BF8//_ee_iFSThHigh */
- 0x0F125A0F, /*70000BFA//_ee_iFSVarCountTh */
- 0x0F120503, /*70000BFC//_ee_iRadialPower */
- 0x0F121802, /*70000BFE//_ee_iROADThres */
- 0x0F120000, /*70000C00//_ee_iROADSubMaxNR */
- 0x0F122006, /*70000C02//_ee_iROADNeiThres */
- 0x0F123C28, /*70000C04//_ee_iSmoothEdgeThres */
- 0x0F12042C, /*70000C06//_ee_iWSharpen */
- 0x0F120101, /*70000C08//_ee_iWShThresh */
- 0x0F12FF00, /*70000C0A//_ee_iEmbossCentAdd */
- 0x0F120904, /*70000C0C//_ee_iReduceEdgeThresh */
- 0x0F124008, /*70000C0E//_dmsc_iDesatThresh */
- 0x0F120540, /*70000C10//_dmsc_iDemBlurLow */
- 0x0F128006, /*70000C12//_dmsc_iDecisionThresh */
- 0x0F120020, /*70000C14//_dmsc_iMonochrom */
- 0x0F120000, /*70000C16//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*70000C18//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*70000C1A//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*70000C1C//_postdmsc_iBCoeff */
- 0x0F12000B, /*70000C1E//_postdmsc_iWideMult */
- 0x0F120607, /*70000C20//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000C22//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000C24//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*70000C26//_yuvemix_mPosSlopes_3 */
- 0x0F120206, /*70000C28//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000C2A//_yuviirnr_iHighYNorm */
- 0x0F120409, /*70000C2C//_yuviirnr_iHighUVNorm */
- 0x0F120305, /*70000C2E//_yuviirnr_iUVNormShift */
- 0x0F120406, /*70000C30//_yuviirnr_iVertLength_UV */
- 0x0F122804, /*70000C32//_yuviirnr_iDiffThreshH_Y */
- 0x0F120228, /*70000C34//_yuviirnr_iDiffThreshH_UV */
- 0x0F121402, /*70000C36//_yuviirnr_iMaxThreshH_Y */
- 0x0F120618, /*70000C38//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*70000C3A//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*70000C3C//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000C3E//_RGBGamma2_iLinearity */
- 0x0F120080, /*70000C40//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000C42//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000C44//_bnr_iClustMulT_H */
- 0x0F120101, /*70000C46//_bnr_iClustThresh_H */
- 0x0F120F15, /*70000C48//_bnr_iDenThreshLow */
- 0x0F126024, /*70000C4A//_ee_iLowSharpPower */
- 0x0F120A0A, /*70000C4C//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000C4E//_ee_iLowSharpClamp */
- 0x0F120808, /*70000C50//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000C52//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000C54//_bnr_iClustMulT_C_Bin */
- 0x0F120001, /*70000C56//_bnr_iClustThresh_C_Bin */
- 0x0F122400, /*70000C58//_bnr_iDenThreshHigh_Bin */
- 0x0F120260, /*70000C5A//_ee_iHighSharpPower_Bin */
- 0x0F12FF02, /*70000C5C//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000C5E//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000C60//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000C62//_bnr_nClustLevel_C */
- 0x0F120000, /*70000C64//_BRIGHTNESS AFIT 4 */
- 0x0F120000, /*70000C66//_CONTRAST */
- 0x0F120000, /*70000C68//_SATURATION */
- 0x0F120000, /*70000C6A//_SHARP_BLUR */
- 0x0F120000, /*70000C6C//_GLAMOUR */
- 0x0F1200C0, /*70000C6E//_bnr_edge_high */
- 0x0F120064, /*70000C70//_postdmsc_iLowBright */
- 0x0F120384, /*70000C72//_postdmsc_iHighBright */
- 0x0F120032, /*70000C74//_postdmsc_iLowSat */
- 0x0F1201F4, /*70000C76//_postdmsc_iHighSat */
- 0x0F120070, /*70000C78//_postdmsc_iTune */
- 0x0F120040, /*70000C7A//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*70000C7C//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*70000C7E//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*70000C80//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*70000C82//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*70000C84//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*70000C86//_bnr_edge_low */
- 0x0F120201, /*70000C88//_bnr_repl_force */
- 0x0F120204, /*70000C8A//_bnr_iHotThreshLow */
- 0x0F120F04, /*70000C8C//_bnr_iColdThreshLow */
- 0x0F12030C, /*70000C8E//_bnr_DispTH_High */
- 0x0F120003, /*70000C90//_bnr_DISP_Limit_High */
- 0x0F120602, /*70000C92//_bnr_iDistSigmaMax */
- 0x0F121803, /*70000C94//_bnr_iDiffSigmaHigh */
- 0x0F120040, /*70000C96//_bnr_iNormalizedSTD_Limit */
- 0x0F120E20, /*70000C98//_bnr_iDirMinThres */
- 0x0F122018, /*70000C9A//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*70000C9C//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*70000C9E//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*70000CA0//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*70000CA2//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*70000CA4//_bnr_AddNoisePower1 */
- 0x0F120200, /*70000CA6//_bnr_iRadialTune */
- 0x0F12145A, /*70000CA8//_bnr_iRadialLimit */
- 0x0F121010, /*70000CAA//_ee_iFSMagThHigh */
- 0x0F12000B, /*70000CAC//_ee_iFSVarThHigh */
- 0x0F121200, /*70000CAE//_ee_iFSThHigh */
- 0x0F125A0F, /*70000CB0//_ee_iFSVarCountTh */
- 0x0F120502, /*70000CB2//_ee_iRadialPower */
- 0x0F121802, /*70000CB4//_ee_iROADThres */
- 0x0F120000, /*70000CB6//_ee_iROADSubMaxNR */
- 0x0F122006, /*70000CB8//_ee_iROADNeiThres */
- 0x0F124028, /*70000CBA//_ee_iSmoothEdgeThres */
- 0x0F120430, /*70000CBC//_ee_iWSharpen */
- 0x0F120101, /*70000CBE//_ee_iWShThresh */
- 0x0F12FF00, /*70000CC0//_ee_iEmbossCentAdd */
- 0x0F120804, /*70000CC2//_ee_iReduceEdgeThresh */
- 0x0F124008, /*70000CC4//_dmsc_iDesatThresh */
- 0x0F120540, /*70000CC6//_dmsc_iDemBlurLow */
- 0x0F128006, /*70000CC8//_dmsc_iDecisionThresh */
- 0x0F120020, /*70000CCA//_dmsc_iMonochrom */
- 0x0F120000, /*70000CCC//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*70000CCE//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*70000CD0//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*70000CD2//_postdmsc_iBCoeff */
- 0x0F12000B, /*70000CD4//_postdmsc_iWideMult */
- 0x0F120607, /*70000CD6//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000CD8//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000CDA//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*70000CDC//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*70000CDE//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000CE0//_yuviirnr_iHighYNorm */
- 0x0F120409, /*70000CE2//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*70000CE4//_yuviirnr_iUVNormShift */
- 0x0F120407, /*70000CE6//_yuviirnr_iVertLength_UV */
- 0x0F122C04, /*70000CE8//_yuviirnr_iDiffThreshH_Y */
- 0x0F12022C, /*70000CEA//_yuviirnr_iDiffThreshH_UV */
- 0x0F121402, /*70000CEC//_yuviirnr_iMaxThreshH_Y */
- 0x0F120618, /*70000CEE//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*70000CF0//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*70000CF2//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000CF4//_RGBGamma2_iLinearity */
- 0x0F120080, /*70000CF6//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000CF8//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000CFA//_bnr_iClustMulT_H */
- 0x0F120101, /*70000CFC//_bnr_iClustThresh_H */
- 0x0F120C0F, /*70000CFE//_bnr_iDenThreshLow */
- 0x0F126024, /*70000D00//_ee_iLowSharpPower */
- 0x0F120808, /*70000D02//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000D04//_ee_iLowSharpClamp */
- 0x0F120808, /*70000D06//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000D08//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000D0A//_bnr_iClustMulT_C_Bin */
- 0x0F120001, /*70000D0C//_bnr_iClustThresh_C_Bin */
- 0x0F122400, /*70000D0E//_bnr_iDenThreshHigh_Bin */
- 0x0F120060, /*70000D10//_ee_iHighSharpPower_Bin */
- 0x0F12FF00, /*70000D12//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000D14//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000D16//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000D18//_bnr_nClustLevel_C */
-
- 0x0F1223CE, /*70000D1A//[0]CAFITB_bnr_bypass */
- 0x0F12FDC8, /*70000D1C//[0]CAFITB_bnr_bSlopenessTune */
- 0x0F12112E, /*70000D1E//[0]CAFITB_ee_bReduceNegMedSh */
- 0x0F1293A5, /*70000D20//[0]CAFITB_dmsc_bDoDesat */
- 0x0F12FE67, /*70000D22//[0]CAFITB_postdmsc_bSat */
- 0x0F120000, /*70000D24//[0]CAFITB_yuviirnr_bWideY */
-
-/*=======================================================
-// 06.Clock Setting
-//=======================================================*/
-/*Input Clock (Mclk)*/
- 0x002A01F8,
- 0x0F125DC0, /*REG_TC_IPRM_InClockLSBs */
- 0x002A0212,
- 0x0F120000, /*REG_TC_IPRM_UseNPviClocks */
- 0x0F120002, /*REG_TC_IPRM_UseNMipiClocks */
- 0x0F120002, /*REG_TC_IPRM_NumberOfMipiLanes */
-
-/*System Clock & Output clock (Pclk)*/
-
- 0x002A021A,
- 0x0F123A98, /*REG_TC_IPRM_OpClk4KHz_0 */
- 0x0F12278D, /*4F1A //REG_TC_IPRM_MinOutRate4KHz_0 */
- 0x0F12278D, /*4F1A //REG_TC_IPRM_MaxOutRate4KHz_0 */
-
- 0x0F124F1A, /*REG_TC_IPRM_OpClk4KHz_11 */
- 0x0F12278D, /*4F1A //REG_TC_IPRM_MinOutRate4KHz_1 */
- 0x0F12278D, /*4F1A //REG_TC_IPRM_MaxOutRate4KHz_1 */
-
- 0x002A022C,
- 0x0F120001, /*REG_TC_IPRM_InitParamsUpdated */
-
-/*=============================================================
-// 18.JPEG Thumnail Setting
-//=============================================================*/
-
- 0x002A0478,
- 0x0F12005F, /*REG_TC_BRC_usPrevQuality */
- 0x0F12005F, /*REG_TC_BRC_usCaptureQuality */
-
-/*JPEG Thumnail*/
- 0x0F120001, /*REG_TC_THUMB_Thumb_bActive */
- 0x0F120280, /*REG_TC_THUMB_Thumb_uWidth */
- 0x0F1201E0, /*REG_TC_THUMB_Thumb_uHeight */
- 0x0F120005, /*REG_TC_THUMB_Thumb_Format */
-
- 0x002A17DC,
- 0x0F120054, /*jpeg_ManualMBCV */
- 0x002A1AE4,
- 0x0F12001C, /*senHal_bExtraAddLine */
- 0x002A0284,
- 0x0F120001, /*REG_TC_GP_bBypassScalerJpg */
- 0x002A028A,
- 0x0F120000, /*REG_TC_GP_bUse1FrameCaptureMode */
-
- 0x002A1CC2, /*DRx_uDRxWeight for AutoCont function */
- 0x0F120100,
- 0x0F120100,
- 0x0F120100,
- 0x0F120100,
- 0x002A147C, /*bp_uMaxBrightnessFactor*/
- 0x0F120170,
- 0x002A1482, /*bp_uMinBrightnessFactor */
- 0x0F1201E0,
-
-/*=======================================================
-// 07.Input Size Setting
-//======================================================*/
-/*Input Size*/
- 0x002A0250,
- 0x0F120A00, /*REG_TC_GP_PrevReqInputWidth */
- 0x0F120780, /*REG_TC_GP_PrevReqInputHeight */
- 0x0F120010, /*REG_TC_GP_PrevInputWidthOfs */
- 0x0F12000C, /*REG_TC_GP_PrevInputHeightOfs */
- 0x0F120A00, /*REG_TC_GP_CapReqInputWidth */
- 0x0F120780, /*REG_TC_GP_CapReqInputHeight */
- 0x0F120010, /*REG_TC_GP_CapInputWidthOfs */
- 0x0F12000C, /*REG_TC_GP_CapInputHeightOfs */
-
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
- 0x0F120001, /*REG_TC_GP_bUseReqInputInCap */
-
- 0x002A0494,
- 0x0F120A00, /*REG_TC_PZOOM_PrevZoomReqInputWidth */
- 0x0F120780, /*REG_TC_PZOOM_PrevZoomReqInputHeight */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
- 0x0F120A00, /*REG_TC_PZOOM_CapZoomReqInputWidth */
- 0x0F120780, /*REG_TC_PZOOM_CapZoomReqInputHeight */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputHeightOfs */
-
-/*===========================================================
-// 08.Preview & Capture Configration Setting
-//=======================================================*/
-/*Preview config[0] 640 480 10~30fps*/
- 0x002A02A6,
- 0x0F120280, /*REG_0TC_PCFG_usWidth */
- 0x0F1201E0, /*REG_0TC_PCFG_usHeight */
- 0x0F120005, /*REG_0TC_PCFG_Format */
- 0x0F12278D, /*4F1A //REG_0TC_PCFG_usMaxOut4KHzRate */
- 0x0F12278D, /*4F1A //REG_0TC_PCFG_usMinOut4KHzRate */
- 0x0F120100, /*REG_0TC_PCFG_OutClkPerPix88 */
- 0x0F120300, /*REG_0TC_PCFG_uBpp88 */
- 0x0F120012, /*REG_0TC_PCFG_PVIMask */
- 0x0F120000, /*REG_0TC_PCFG_OIFMask */
- 0x0F1201E0, /*REG_0TC_PCFG_usJpegPacketSize */
- 0x0F120000, /*REG_0TC_PCFG_usJpegTotalPackets */
- 0x0F120000, /*REG_0TC_PCFG_uClockInd */
- 0x0F120000, /*REG_0TC_PCFG_usFrTimeType */
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
- 0x0F1203E8, /*029A //REG_0TC_PCFG_usMaxFrTimeMsecMult10 */
- 0x0F12014A, /*REG_0TC_PCFG_usMinFrTimeMsecMult10 */
- 0x002A02D0,
- 0x0F120000, /*REG_0TC_PCFG_uPrevMirror 0711 0000->000A */
- 0x0F120000, /*REG_0TC_PCFG_uCaptureMirror 0711 0000->000A */
-
-/*Capture Config[0] 2560 1920 7.5~15fps*/
- 0x002A0396,
- 0x0F120000, /*REG_0TC_CCFG_uCaptureMode */
- 0x0F120A00, /*REG_0TC_CCFG_usWidth */
- 0x0F120780, /*REG_0TC_CCFG_usHeight */
- 0x0F120009, /*REG_0TC_CCFG_Format */
- 0x0F12278D, /*4F1A //REG_0TC_CCFG_usMaxOut4KHzRate */
- 0x0F12278D, /*4F1A //REG_0TC_CCFG_usMinOut4KHzRate */
- 0x0F120100, /*REG_0TC_CCFG_OutClkPerPix88 */
- 0x0F120300, /*REG_0TC_CCFG_uBpp88 */
- 0x0F120012, /*REG_0TC_CCFG_PVIMask */
- 0x0F120040, /*REG_0TC_CCFG_OIFMask */
- 0x0F120810, /*REG_0TC_CCFG_usJpegPacketSize */
- 0x0F120000, /*REG_0TC_CCFG_usJpegTotalPackets */
- 0x0F120001, /*REG_0TC_CCFG_uClockInd */
- 0x0F120000, /*REG_0TC_CCFG_usFrTimeType */
- 0x0F120002, /*REG_0TC_CCFG_FrRateQualityType */
- 0x0F120535, /*REG_0TC_CCFG_usMaxFrTimeMsecMult10 */
- 0x0F12029A, /*REG_0TC_CCFG_usMinFrTimeMsecMult10 */
-
-/* Delay 100ms*/
-
-/*===========================================================
-// 19.Select Cofigration Display
-//===========================================================*/
- /*PREVIEW*/
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
- 0x002A023E,
- 0x0F120001, /*REG_TC_GP_EnablePreview */
- 0x0F120001, /*REG_TC_GP_EnablePreviewChanged */
-
- 0x00287000,
- 0x002A0484,
- 0x0F120002, /* capture flash on */
-
- 0x002A183A,
- 0x0F120001, /* one frame AE */
-
- 0x002A17F6,
- 0x0F12023C, /*210, 258 // AWB R point */
- 0x0F12020C, /*288, 228 ->258 -> 208 // AWB B point */
-
- 0x002A1840,
- 0x0F120001, /* Fls AE tune start */
-
- 0x0F120100, /* fls_afl_FlsAFIn Rin */
- 0x0F120120,
- 0x0F120180,
- 0x0F120200,
- 0x0F120400,
- 0x0F120800,
- 0x0F120A00,
- 0x0F121000,
-
- 0x0F120100, /* fls_afl_FlsAFOut Rout */
- 0x0F1200A0,
- 0x0F120090,
- 0x0F120080,
- 0x0F120070,
- 0x0F120045,
- 0x0F120030,
- 0x0F120010,
-
- 0x002A1884,
- 0x0F120100, /* fls_afl_FlsNBOut flash NB default */
- 0x0F120100,
- 0x0F120100,
- 0x0F120100,
- 0x0F120100,
- 0x0F120100,
- 0x0F120100,
- 0x0F120100,
-
- 0x002A1826,
-
- 0x0F120100, /* fls_afl_FlashWP_Weight flash NB default */
- 0x0F1200C0,
- 0x0F120080,
- 0x0F12000A,
- 0x0F120000,
-
- 0x0F120030, /* fls_afl_FlashWP_Weight flash NB default */
- 0x0F120040,
- 0x0F120048,
- 0x0F120050,
- 0x0F120060,
-
- 0x002A4784,
- 0x0F1200A0, /*TNP_Regs_FlsWeightRIn weight tune start in */
- 0x0F1200C0,
- 0x0F1200D0,
- 0x0F120100,
- 0x0F120200,
- 0x0F120300,
-
- 0x0F120088, /* TNP_Regs_FlsWeightROut weight tune start out */
- 0x0F1200B0,
- 0x0F1200C0,
- 0x0F120100,
- 0x0F120200,
- 0x0F120300,
-
- 0x002A479C,
-
- 0x0F120120, /*Fls BRIn */
- 0x0F120150,
- 0x0F120200,
-
- 0x0F12003C, /* Fls BROut */
- 0x0F12003B,
- 0x0F120026, /*brightness // 23 //26 //30 */
-};
-
-static const u32 s5k4ecgx_DTP_init_EVT1[] = {
-/*Delay 500ms*/
- 0xFCFCD000,
- 0x00287000,
- 0x002A0944,
- 0x0F12FFF0, /*af_uNoise_0_*/
- 0x0F12FFF1, /*afit_uNoiseIndInDoor_1_ */
- 0x0F12FFF2, /*afit_uNoiseIndInDoor_2_ */
- 0x0F12FFF3, /*afit_uNoiseIndInDoor_3_ */
- 0x0F12FFF4, /*afit_uNoiseIndInDoor_4_ */
- 0x002A0938,
- 0x0F120000, /*afit_bUseNB_Afit */
- 0x0F12FFF0, /*SARR_uNormBrInDoor_0_ */
- 0x0F12FFF1, /*SARR_uNormBrInDoor_1_ */
- 0x0F12FFF2, /*SARR_uNormBrInDoor_2_ */
- 0x0F12FFF3, /*SARR_uNormBrInDoor_3_ */
- 0x0F12FFF4, /*SARR_uNormBrInDoor_4_ */
- 0x00287000,
- 0x002A04A6,
- 0x0F120001,
- 0x002A04AA,
- 0x0F120001,
- 0x0028D000,
- 0x002A4200,
- 0x0F1208A3, /*GAS bypass */
- 0x002A6600,
- 0x0F120001, /*CCM bypass */
- 0x002A6700,
- 0x0F120001, /*Gamma bypass */
- 0x002A4900,
- 0x0F120001, /*AWB bypass */
-
-/*Delay 50ms*/
- 0x0028D000,
- 0x002A3100,
- 0x0F120002, /*Colorbar pattern */
-
-};
-
-static const u32 s5k4ecgx_DTP_stop_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0944,
- 0x0F12004B, /*afit_uNoiser0*/
- 0x0F120092, /*afit_uNoiseIndInDoor_1_ */
- 0x0F120196, /*afit_uNoiseIndInDoor_2_ */
- 0x0F120217, /*afit_uNoiseIndInDoor_3_ */
- 0x0F1202B0, /*afit_uNoiseIndInDoor_4_ */
-
- /* Normal Brightness setting */
- 0x002A0938,
- 0x0F120000, /*afit_bUseNB_Afit */
- 0x0F120014, /*SARR_uNormBrInDoor_0_ */
- 0x0F1200D2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120384, /*SARR_uNormBrInDoor_2_ */
- 0x0F1207D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x00287000,
- 0x002A04A6,
- 0x0F120000,
- 0x002A04AA,
- 0x0F120001,
- 0x0028D000,
- 0x002A4200,
- 0x0F1208A2, /*GAS bypass */
- 0x002A6600,
- 0x0F120000, /*CCM bypass */
- 0x002A6700,
- 0x0F120000, /*Gamma bypass */
- 0x002A4900,
- 0x0F120000, /*AWB bypass */
- 0xFFFE0032, /*p50 */
- 0x0028D000,
- 0x002A3100,
- 0x0F120000, /*Colorbar pattern */
-
-};
-
-static const u32 s5k4ecgx_FPS_Auto_EVT1[] = {
-/* frame rate 10~30fps*/
- 0xFCFCD000,
- 0x00287000,
- 0x002A02BE,
- 0x0F120000, /*usFrTimeType*/
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
- 0x0F1203E8, /*029A/REG_0TC_PCFG_usMaxFrTimeMsecMult10 029Ah:15fps*/
- 0x0F12014A, /*REG_0TC_PCFG_usMinFrTimeMsecMult10 //014Ah:30fps*/
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-};
-
-static const u32 s5k4ecgx_FPS_5_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_FPS_7_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A02BE,
- 0x0F120000, /*REG_0TC_PCFG_usFrTimeType */
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType*/
- 0x0F120535, /*REG_0TC_PCFG_usMaxFrTimeMsecMult10 //0535h:7.5fps */
- 0x0F120535, /*REG_0TC_PCFG_usMinFrTimeMsecMult10 //0535h:7.5fps */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_FPS_10_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_FPS_15_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A02BE,
- 0x0F120000, /*REG_0TC_PCFG_usFrTimeType */
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
- 0x0F12029A, /*REG_0TC_PCFG_usMaxFrTimeMsecMult10 //029Ah:15fps */
- 0x0F12029A, /*REG_0TC_PCFG_usMinFrTimeMsecMult10 //029Ah:15fps */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_FPS_20_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A02BE,
- 0x0F120000, /*REG_0TC_PCFG_usFrTimeType */
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
- 0x0F1201F4, /*REG_0TC_PCFG_usMaxFrTimeMsecMult10 //01F4h:20fps */
- 0x0F1201F4, /*REG_0TC_PCFG_usMinFrTimeMsecMult10 //01F4h:20fps */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-};
-
-static const u32 s5k4ecgx_FPS_24_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A02B4,
- 0x0F120052,
- 0x002A02BE,
- 0x0F120000,
- 0x0F120001,
- 0x0F1201A1,
- 0x0F1201A1,
- 0x002A02D0,
- 0x0F120000,
- 0x0F120000,
- 0x002A0266,
- 0x0F120000,
- 0x002A026A,
- 0x0F120001,
- 0x002A024E,
- 0x0F120001,
- 0x002A0268,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_FPS_25_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A02BE,
- 0x0F120000, /*REG_0TC_PCFG_usFrTimeType */
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
- 0x0F120190, /*REG_0TC_PCFG_usMaxFrTimeMsecMult10 //014Ah:30fps */
- 0x0F120190, /*REG_0TC_PCFG_usMinFrTimeMsecMult10 //014Ah:30fps */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-};
-
-
-static const u32 s5k4ecgx_FPS_30_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A02BE,
- 0x0F120000, /*REG_0TC_PCFG_usFrTimeType */
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
- 0x0F12014A, /*REG_0TC_PCFG_usMaxFrTimeMsecMult10 //014Ah:30fps */
- 0x0F12014A, /*REG_0TC_PCFG_usMinFrTimeMsecMult10 //014Ah:30fps */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_FPS_60_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_FPS_120_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_Effect_Normal_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A023C,
- 0x0F120000,
-};
-
-static const u32 s5k4ecgx_Effect_Solarization_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A023C,
- 0x0F120002,
-};
-
-static const u32 s5k4ecgx_Effect_Negative_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A023C,
- 0x0F120003,
-};
-
-static const u32 s5k4ecgx_Effect_Sepia_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A023C,
- 0x0F120004,
-};
-
-static const u32 s5k4ecgx_Effect_Black_White_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A023C,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WB_Auto_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
-};
-
-static const u32 s5k4ecgx_WB_Sunny_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04BA,
- 0x0F1205C0,
-
- 0x002A04BE,
- 0x0F1203D0,
-
- 0x002A04C2,
- 0x0F120550,
-
- 0x002A04C6,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WB_Cloudy_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04BA,
- 0x0F1206D8,
-
- 0x002A04BE,
- 0x0F1203D0,
-
- 0x002A04C2,
- 0x0F1204B0,
-
- 0x002A04C6,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WB_Tungsten_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04BA,
- 0x0F1203B0,
-
- 0x002A04BE,
- 0x0F1203D0,
-
- 0x002A04C2,
- 0x0F1209B0,
- 0x002A04C6,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WB_Fluorescent_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04BA,
- 0x0F1205E0,
-
- 0x002A04BE,
- 0x0F120440,
-
- 0x002A04C2,
- 0x0F120998,
-
- 0x002A04C6,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WB_Auto_ISO_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002a04E6,
- 0x0f12075F,
-};
-
-static const u32 s5k4ecgx_WB_Sunny_ISO_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04E6,
- 0x0f120757,
- 0x002A04BA,
- 0x0F1205C0,
-
- 0x002A04BE,
- 0x0F1203D0,
-
- 0x002A04C2,
- 0x0F120580,
- 0x002A04C6,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WB_Cloudy_ISO_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04E6,
- 0x0f120757,
- 0x002A04BA,
- 0x0F1206E0,
-
- 0x002A04BE,
- 0x0F1203D0,
-
- 0x002A04C2,
- 0x0F1204B0,
- 0x002A04C6,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WB_Tungsten_ISO_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04E6,
- 0x0f120757,
- 0x002A04BA,
- 0x0F1203B0,
-
- 0x002A04BE,
- 0x0F1203D0,
-
- 0x002A04C2,
- 0x0F1209F0,
- 0x002A04C6,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WB_Fluorescent_ISO_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04E6,
- 0x0f120757,
- 0x002A04BA,
- 0x0F120600,
-
- 0x002A04BE,
- 0x0F120440,
-
- 0x002A04C2,
- 0x0F1209E0,
- 0x002A04C6,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_WDR_on_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_WDR_off_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_ISO_Auto_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938, /*afit_bUseNB_Afit */
- 0x0F120000,
- 0x0F120014, /*SARR_uNormBrInDoor_0_*/
- 0x0F1200D2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120384, /*SARR_uNormBrInDoor_2_ */
- 0x0F1207D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A1484,
- 0x0F12003C,
- 0x002A0F2A, /*AFC_Default60Hz */
- 0x0F120000, /*00:50Hz 01:60Hz */
- 0x002A04D0,
- 0x0F120000, /*REG_SF_USER_IsoType */
- 0x0F120000, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120200, /*lt_bUseSecISODgain */
-};
-
-static const u32 s5k4ecgx_ISO_50_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
- 0x0F120014, /*SARR_uNormBrInDoor_0_ */
- 0x0F1200D2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120384, /*SARR_uNormBrInDoor_2_ */
- 0x0F1207D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A04D6,
- 0x0F120000, /*REG_SF_USER_FlickerQuant */
- 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType*/
- 0x0F120100, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120100, /*lt_bUseSecISODgain */
-};
-
-static const u32 s5k4ecgx_ISO_100_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
- 0x0F120014, /*SARR_uNormBrInDoor_0_ */
- 0x0F1200D2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120384, /*SARR_uNormBrInDoor_2_ */
- 0x0F1207D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A1484,
- 0x0F120044,
- 0x002A04D6,
- 0x0F120000, /*REG_SF_USER_FlickerQuant */
- 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F12018A, /*REG_SF_USER_IsoVal/1BA/1CA:16.9msec/1AA: 17.8msec */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120100, /*lt_bUseSecISODgain */
-};
-
-static const u32 s5k4ecgx_ISO_200_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
- 0x0F120114, /*SARR_uNormBrInDoor_0_ */
- 0x0F1204A2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120584, /*SARR_uNormBrInDoor_2_ */
- 0x0F1208D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A1484,
- 0x0F120044,
- 0x002A04D6,
- 0x0F120000, /*REG_SF_USER_FlickerQuant */
- 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F120300, /*REG_SF_IsoVal/36A/370:8.9msec/360:8.8msec/400:7.5msec*/
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120100, /*lt_bUseSecISODgain */
-
-};
-
-static const u32 s5k4ecgx_ISO_400_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
- 0x0F120214, /*SARR_uNormBrInDoor_0_ */
- 0x0F120BD2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120C84, /*SARR_uNormBrInDoor_2_ */
- 0x0F1210D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A1484,
- 0x0F120044,
- 0x002A04D6,
- 0x0F120000, /*REG_SF_USER_FlickerQuant */
- 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F120764, /*REGSFUSER_IsoVal/6F4*/
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120100, /*lt_bUseSecISODgain */
-};
-
-static const u32 s5k4ecgx_ISO_Auto_MWB_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938, /*afit_bUseNB_Afit */
- 0x0F120000,
- 0x0F120014, /*SARR_uNormBrInDoor_0_ */
- 0x0F1200D2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120384, /*SARR_uNormBrInDoor_2_ */
- 0x0F1207D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A1484,
- 0x0F12003C,
- 0x002A0F2A, /*AFC_Default60Hz */
- 0x0F120000, /*00:50Hz 01:60Hz */
- 0x002A04E6, /*REG_TC_DBG_AutoAlgEnBits */
- 0x0F120777,
- 0x002A04D0,
- 0x0F120000, /*REG_SF_USER_IsoType */
- 0x0F120000, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120200, /*lt_bUseSecISODgain */
-
-};
-
-static const u32 s5k4ecgx_ISO_50_MWB_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit*/
- 0x0F120014, /*SARR_uNormBrInDoor_0_*/
- 0x0F1200D2, /*SARR_uNormBrInDoor_1_*/
- 0x0F120384, /*SARR_uNormBrInDoor_2_*/
- 0x0F1207D0, /*SARR_uNormBrInDoor_3_*/
- 0x0F121388, /*SARR_uNormBrInDoor_4_*/
-
- 0x002A04E6,
- 0x0F120757, /*REG_TC_DBG_AutoAlgEnBits */
- 0x002A04D6,
- 0x0F120000, /*REG_SF_USER_FlickerQuant */
- 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
-
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F120100, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120100, /*lt_bUseSecISODgain */
-};
-
-static const u32 s5k4ecgx_ISO_100_MWB_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
- 0x0F120014, /*SARR_uNormBrInDoor_0_ */
- 0x0F1200D2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120384, /*SARR_uNormBrInDoor_2_ */
- 0x0F1207D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A1484,
- 0x0F120044,
- 0x002A04E6,
- 0x0F120757, /*REG_TC_DBG_AutoAlgEnBits */
- 0x002A04D6,
- 0x0F120000, /*REG_SF_USER_FlickerQuant */
- 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
-
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F12018A, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120100, /*lt_bUseSecISODgain */
-};
-
-static const u32 s5k4ecgx_ISO_200_MWB_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
- 0x0F120014, /*SARR_uNormBrInDoor_0_ */
- 0x0F1203A2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120484, /*SARR_uNormBrInDoor_2_ */
- 0x0F1207D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A1484,
- 0x0F120044,
- 0x002A04E6,
- 0x0F120757, /*REG_TC_DBG_AutoAlgEnBits */
- 0x002A04D6,
- 0x0F120000, /*REG_SF_USER_FlickerQuant */
- 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
-
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F120300, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120100, /*lt_bUseSecISODgain */
-};
-
-static const u32 s5k4ecgx_ISO_400_MWB_on_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
- 0x0F120014, /*SARR_uNormBrInDoor_0_ */
- 0x0F1208D2, /*SARR_uNormBrInDoor_1_ */
- 0x0F120C84, /*SARR_uNormBrInDoor_2_ */
- 0x0F1210D0, /*SARR_uNormBrInDoor_3_ */
- 0x0F121388, /*SARR_uNormBrInDoor_4_ */
- 0x002A1484,
- 0x0F120044,
- 0x002A04E6,
- 0x0F120757, /*REG_TC_DBG_AutoAlgEnBits */
- 0x002A04D6,
- 0x0F120000, /*REG_SF_USER_FlickerQuant */
- 0x0F120001, /*REG_SF_USER_FlickerQuantChanged */
-
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F120764, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120100, /*lt_bUseSecISODgain */
-};
-
-static const u32 s5k4ecgx_Metering_Matrix_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1492,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
-
- 0x002A0268, /*REG_TC_GP_PrevConfigChanged */
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_Metering_Center_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1492,
- 0x0F120100,
- 0x0F120101,
- 0x0F120101,
- 0x0F120001,
- 0x0F120101,
- 0x0F120201,
- 0x0F120102,
- 0x0F120101,
- 0x0F120101,
- 0x0F120202,
- 0x0F120202,
- 0x0F120101,
- 0x0F120201,
- 0x0F120302,
- 0x0F120203,
- 0x0F120102,
- 0x0F120201,
- 0x0F120302,
- 0x0F120203,
- 0x0F120102,
- 0x0F120101,
- 0x0F120202,
- 0x0F120202,
- 0x0F120101,
- 0x0F120101,
- 0x0F120201,
- 0x0F120102,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
-
- 0x002A0268, /*REG_TC_GP_PrevConfigChanged */
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_Metering_Spot_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1492,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120101,
- 0x0F120101,
- 0x0F120000,
- 0x0F120000,
- 0x0F12010F,
- 0x0F120F01,
- 0x0F120000,
- 0x0F120000,
- 0x0F12010F,
- 0x0F120F01,
- 0x0F120000,
- 0x0F120000,
- 0x0F120101,
- 0x0F120101,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
-
- 0x002A0268, /*REG_TC_GP_PrevConfigChanged */
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_EV_Minus_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F120018, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_EV_Minus_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F12001E, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_EV_Minus_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F120025, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_EV_Minus_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F120030, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_EV_Default_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F12003C, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_EV_Plus_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F12004E, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_EV_Plus_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F120060, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_EV_Plus_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F120070, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_EV_Plus_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F120080, /*TVAR_ae_BrAve */
-};
-
-static const u32 s5k4ecgx_Contrast_Minus_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F12FF81,
-};
-
-static const u32 s5k4ecgx_Contrast_Minus_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F12FFA0,
-};
-
-static const u32 s5k4ecgx_Contrast_Minus_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F12FFC0,
-};
-
-static const u32 s5k4ecgx_Contrast_Minus_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F12FFE0,
-};
-
-static const u32 s5k4ecgx_Contrast_Default_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F120000,
-};
-
-static const u32 s5k4ecgx_Contrast_Plus_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F120020,
-};
-
-static const u32 s5k4ecgx_Contrast_Plus_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F120040,
-};
-
-static const u32 s5k4ecgx_Contrast_Plus_3_EVT1[] = {/*Setting Unavailable*/
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F120060,
-};
-
-static const u32 s5k4ecgx_Contrast_Plus_4_EVT1[] = {/*Setting Unavailable*/
- 0xFCFCD000,
- 0x00287000,
- 0x002A0232,
- 0x0F12007F,
-};
-
-static const u32 s5k4ecgx_Auto_Contrast_ON_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A098E,
- 0x0F12FFB0,
-
- 0x002A0A44,
- 0x0F12FFB0,
-
- 0x002A0AFA,
- 0x0F12FFB0,
-
- 0x002A0BB0,
- 0x0F12FFB0,
-
- 0x002A0C66,
- 0x0F12FFB0,
-};
-
-static const u32 s5k4ecgx_Auto_Contrast_OFF_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A098E,
- 0x0F120000,
-
- 0x002A0A44,
- 0x0F120000,
-
- 0x002A0AFA,
- 0x0F120000,
-
- 0x002A0BB0,
- 0x0F120000,
-
- 0x002A0C66,
- 0x0F120000,
-};
-
-static const u32 s5k4ecgx_Sharpness_Minus_3_EVT1[] = {/*Setting Unavailable*/
- 0x00287000,
- 0x002A0A28,
- 0x0F120000,
- 0x002A0ADE,
- 0x0F120000,
- 0x002A0B94,
- 0x0F120000,
- 0x002A0C4A,
- 0x0F120000,
- 0x002A0D00,
- 0x0F120000,
-};
-
-static const u32 s5k4ecgx_Sharpness_Minus_2_EVT1[] = {
- 0x00287000,
- 0x002A0A28,
- 0x0F122010,
- 0x002A0ADE,
- 0x0F122010,
- 0x002A0B94,
- 0x0F122010,
- 0x002A0C4A,
- 0x0F122010,
- 0x002A0D00,
- 0x0F122010,
-};
-
-static const u32 s5k4ecgx_Sharpness_Minus_1_EVT1[] = {
- 0x00287000,
- 0x002A0A28,
- 0x0F124020,
- 0x002A0ADE,
- 0x0F124020,
- 0x002A0B94,
- 0x0F124020,
- 0x002A0C4A,
- 0x0F124020,
- 0x002A0D00,
- 0x0F124020,
-};
-
-static const u32 s5k4ecgx_Sharpness_Default_EVT1[] = {
- 0x00287000,
- 0x002A0A28,
- 0x0F126024,
- 0x002A0ADE,
- 0x0F126024,
- 0x002A0B94,
- 0x0F126024,
- 0x002A0C4A,
- 0x0F126024,
- 0x002A0D00,
- 0x0F126024,
-};
-
-static const u32 s5k4ecgx_Sharpness_Plus_1_EVT1[] = {
- 0x00287000,
- 0x002A0A28,
- 0x0F128040,
- 0x002A0ADE,
- 0x0F128040,
- 0x002A0B94,
- 0x0F128040,
- 0x002A0C4A,
- 0x0F128040,
- 0x002A0D00,
- 0x0F128040,
-};
-
-static const u32 s5k4ecgx_Sharpness_Plus_2_EVT1[] = {
- 0x00287000,
- 0x002A0A28,
- 0x0F12A060,
- 0x002A0ADE,
- 0x0F12A060,
- 0x002A0B94,
- 0x0F12A060,
- 0x002A0C4A,
- 0x0F12A060,
- 0x002A0D00,
- 0x0F12A060,
-};
-
-static const u32 s5k4ecgx_Sharpness_Plus_3_EVT1[] = {
- 0x00287000,
- 0x002A0A28,
- 0x0F12C080,
- 0x002A0ADE,
- 0x0F12C080,
- 0x002A0B94,
- 0x0F12C080,
- 0x002A0C4A,
- 0x0F12C080,
- 0x002A0D00,
- 0x0F12C080,
-};
-
-static const u32 s5k4ecgx_Saturation_Minus_2_EVT1[] = {
- 0x00287000,
- 0x002A0234,
- 0x0F12FF81,
-};
-
-static const u32 s5k4ecgx_Saturation_Minus_1_EVT1[] = {
- 0x00287000,
- 0x002A0234,
- 0x0F12FFC0,
-};
-
-static const u32 s5k4ecgx_Saturation_Default_EVT1[] = {
- 0x00287000,
- 0x002A0234,
- 0x0F120000,
-};
-
-static const u32 s5k4ecgx_Saturation_Plus_1_EVT1[] = {
- 0x00287000,
- 0x002A0234,
- 0x0F120040,
-};
-
-static const u32 s5k4ecgx_Saturation_Plus_2_EVT1[] = {
- 0x00287000,
- 0x002A0234,
- 0x0F12007F,
-};
-
-static const u32 s5k4ecgx_Jpeg_Quality_High_EVT1[] = {
- 0x00287000,
- 0x002A0478,
- 0x0F12005F,
- 0x0F12005F,
-};
-
-static const u32 s5k4ecgx_Jpeg_Quality_Normal_EVT1[] = {
- 0x00287000,
- 0x002A0478,
- 0x0F12005A,
- 0x0F12005A,
-};
-
-static const u32 s5k4ecgx_Jpeg_Quality_Low_EVT1[] = {
- 0x00287000,
- 0x002A0478,
- 0x0F120054,
- 0x0F120054,
-};
-
-static const u32 s5k4ecgx_Scene_Default_EVT1[] = {
-/*scene Backlight landscape*/
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F12003C,
- 0x002A1492,
- 0x0F120100,
- 0x0F120101,
- 0x0F120101,
- 0x0F120001,
- 0x0F120101,
- 0x0F120201,
- 0x0F120102,
- 0x0F120101,
- 0x0F120101,
- 0x0F120202,
- 0x0F120202,
- 0x0F120101,
- 0x0F120201,
- 0x0F120302,
- 0x0F120203,
- 0x0F120102,
- 0x0F120201,
- 0x0F120302,
- 0x0F120203,
- 0x0F120102,
- 0x0F120101,
- 0x0F120202,
- 0x0F120202,
- 0x0F120101,
- 0x0F120101,
- 0x0F120201,
- 0x0F120102,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
-
-/* Sharpness 0*/
- 0x002A0A28,
- 0x0F126024, /*_ee_iLowSharpPower*/
- 0x002A0ADE,
- 0x0F126024, /*_ee_iLowSharpPower*/
- 0x002A0B94,
- 0x0F126024, /*_ee_iLowSharpPower*/
- 0x002A0C4A,
- 0x0F126024, /*_ee_iLowSharpPower*/
- 0x002A0D00,
- 0x0F126024, /*_ee_iLowSharpPower*/
-
-/* Saturation 0*/
- 0x002A0234,
- 0x0F120000, /*REG_TC_UserSaturation */
- 0x002A06B8,
- 0x0F12452C,
- 0x0F120005, /*lt_uMaxLei */
-
- 0x002A0A1E,
- 0x0F120350,/*_ccm_oscar_iSaturation [7:0] AFIT8_RGB2YUV_iYOffset*/
-
- 0x002A0638,
- 0x0F120001,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_0_ */
- 0x0F120A3C,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_1_ */
- 0x0F120D05,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_2_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_3_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_4_ */
- 0x0F126810,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_5_ */
- 0x0F128214,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_6_ */
- 0x0F12C350,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_7_ */
- 0x0F12C350,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_8_ */
- 0x0F12C350,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_9_ */
-
- 0x002A02C2,
- 0x0F12029A,/*REG_0TC_PCFG_usMaxFrTimeMsecMult10 //029Ah:15fps */
- 0x0F12014A,/*REG_0TC_PCFG_usMinFrTimeMsecMult10 //014Ah:30fps */
- 0x002A03B4,
- 0x0F120535,/*REG_0TC_CCFG_usMaxFrTimeMsecMult10 //0535h:7.5fps */
- 0x0F12029A,/*REG_0TC_CCFG_usMinFrTimeMsecMult10 //029Ah:15fps */
-
- 0x002A0938,
- 0x0F120000, /*afit_bUseNB_Afit */
-
- 0x002A04E6,
- 0x0F12077F, /*REG_TC_DBG_AutoAlgEnBits */
-
- 0x002A04D0,
- 0x0F120000, /*REG_SF_USER_IsoType */
- 0x0F120000, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
-
- 0x002A06C2,
- 0x0F120200, /*lt_bUseSecISODgain */
-
- 0x002A1648,
- 0x0F129002, /*af_search_usSingleAfFlags */
-
- 0x002A15E8,
- 0x0F120015, /*af_pos_usTableLastInd */
- 0x0F120027, /*af_pos_usTable_0_ */
- 0x0F120030, /*af_pos_usTable_1_ */
- 0x0F120036, /*af_pos_usTable_2_ */
- 0x0F12003C, /*af_pos_usTable_3_ */
- 0x0F120042, /*af_pos_usTable_4_ */
- 0x0F120048, /*af_pos_usTable_5_ */
- 0x0F12004E, /*af_pos_usTable_6_ */
- 0x0F120054, /*af_pos_usTable_7_ */
- 0x0F12005A, /*af_pos_usTable_8_ */
- 0x0F120060, /*af_pos_usTable_9_ */
- 0x0F120066, /*af_pos_usTable_10 */
- 0x0F12006C, /*af_pos_usTable_11_ */
- 0x0F120072, /*af_pos_usTable_12_ */
- 0x0F120078, /*af_pos_usTable_13_ */
- 0x0F12007E, /*af_pos_usTable_14_ */
- 0x0F120084, /*af_pos_usTable_15_ */
- 0x0F12008A, /*af_pos_usTable_16_ */
- 0x0F120090, /*af_pos_usTable_17_ */
- 0x0F120096, /*af_pos_usTable_18_ */
- 0x0F12009C, /*af_pos_usTable_19_ */
- 0x0F1200A2, /*af_pos_usTable_20_ */
- 0x0F1200A8, /*af_pos_usTable_21_ */
- 0x0F1200AE, /*af_pos_usTable_22_ */
- 0x0F1200B4, /*af_pos_usTable_23_ */
- 0x0F1200BA, /*af_pos_usTable_24_ */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
- 0x002A023E,
- 0x0F120001, /*REG_TC_GP_EnablePreview */
- 0x0F120001, /*REG_TC_GP_EnablePreviewChanged */
-
-};
-
-static const u32 s5k4ecgx_Scene_Portrait_EVT1[] = {
- 0x00287000,
- 0x002A0A28,
- 0x0F124020,
- 0x002A0ADE,
- 0x0F124020,
- 0x002A0B94,
- 0x0F124020,
- 0x002A0C4A,
- 0x0F124020,
- 0x002A0D00,
- 0x0F124020,
-};
-
-static const u32 s5k4ecgx_Scene_Nightshot_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A06B8,
- 0x0F12FFFF, /*lt_uMaxLei */
- 0x0F1200FF, /*lt_usMinExp */
-
- 0x002A0A1E,
- 0x0F1215C0,/*_ccm_oscar_iSaturation [7:0] AFIT8_RGB2YUV_iYOffset*/
-
- 0x002A0638,
- 0x0F120001,
- 0x0F120000,/*ltExpGainExpCurveGainMaxStr_0_ulExpOut0*/
- 0x0F121478,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_1_ */
- 0x0F121A0A,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_2_ */
- 0x0F126810,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_3_ */
- 0x0F126810,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_4_ */
- 0x0F12D020,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_5_ */
- 0x0F120428,
- 0x0F120001,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_6_ */
- 0x0F121A80,
- 0x0F120006,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_7_ */
- 0x0F121A80,
- 0x0F120006,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_8_ */
- 0x0F121A80,
- 0x0F120006,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_9_ */
-
- 0x002A02C2,
- 0x0F1209C4,/*REG_0TC_PCFG_usMaxFrTimeMsecMult10 //09C4h:4fps */
- 0x0F12014A,/*REG_0TC_PCFG_usMinFrTimeMsecMult10 //014Ah:30fps */
- 0x002A03B4,
- 0x0F121388,/*REG_0TC_CCFG_usMaxFrTimeMsecMult10 //1388h:2fps */
- 0x0F121388,/*REG_0TC_CCFG_usMinFrTimeMsecMult10 //1388h:2fps */
-
- 0x002A1648, /*af_search_usSingleAfFlags */
- 0x0F129000,
-
- 0x002A15E8,
- 0x0F120006, /*af_pos_usTableLastInd */
- 0x0F120036,
- 0x0F12003A,
- 0x0F120040,
- 0x0F120048,
- 0x0F120050,
- 0x0F120058,
- 0x0F120060,
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
- 0x002A023E,
- 0x0F120001, /*REG_TC_GP_EnablePreview */
- 0x0F120001, /*REG_TC_GP_EnablePreviewChanged */
-
-};
-
-static const u32 s5k4ecgx_Scene_Backlight_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1492,
- 0x0F120000, /*ae_WeightTbl_16 */
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120101,
- 0x0F120101,
- 0x0F120000,
- 0x0F120000,
- 0x0F12010F,
- 0x0F120F01,
- 0x0F120000,
- 0x0F120000,
- 0x0F12010F,
- 0x0F120F01,
- 0x0F120000,
- 0x0F120000,
- 0x0F120101,
- 0x0F120101,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
- 0x0F120000,
-
-};
-
-static const u32 s5k4ecgx_Scene_Landscape_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1492,
- 0x0F120101, /*ae_WeightTbl_16 */
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
-
- 0x002A0A28,
- 0x0F12E082,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
- 0x002A0ADE,
- 0x0F12E082,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
- 0x002A0B94,
- 0x0F12E082,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
- 0x002A0C4A,
- 0x0F12E082,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
- 0x002A0D00,
- 0x0F12E082,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
-
- 0x002A0234,
- 0x0F120030, /*REG_TC_UserSaturation */
-};
-
-static const u32 s5k4ecgx_Scene_Sports_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0638,
- 0x0F120001,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_0_ */
- 0x0F120A3C,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_1_ */
- 0x0F120D05,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_2_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_3_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_4_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_5_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_6_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_7_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_8_ */
- 0x0F123408,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_9_ */
-
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
-
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F120200, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120150, /*lt_bUseSecISODgain */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
- 0x002A023E,
- 0x0F120001, /*REG_TC_GP_EnablePreview */
- 0x0F120001, /*REG_TC_GP_EnablePreviewChanged */
-
-};
-
-static const u32 s5k4ecgx_Scene_Party_Indoor_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
-
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F120340, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120180, /*lt_bUseSecISODgain */
-
- 0x002A0234,
- 0x0F120030, /*REG_TC_UserSaturation */
-};
-
-static const u32 s5k4ecgx_Scene_Beach_Snow_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1484,
- 0x0F120045, /*TVAR_ae_BrAve */
-
- 0x002A0938,
- 0x0F120001, /*afit_bUseNB_Afit */
-
- 0x002A04D0,
- 0x0F120001, /*REG_SF_USER_IsoType */
- 0x0F1200D0, /*REG_SF_USER_IsoVal */
- 0x0F120001, /*REG_SF_USER_IsoChanged */
- 0x002A06C2,
- 0x0F120150, /*lt_bUseSecISODgain */
-
- 0x002A0234,
- 0x0F120030, /*REG_TC_UserSaturation */
-};
-
-static const u32 s5k4ecgx_Scene_Sunset_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04E6,
- 0x0F120777, /*REG_TC_DBG_AutoAlgEnBits //AWB Off */
-
- 0x002A04BA,
- 0x0F1205F0, /*REG_SF_USER_Rgain */
- 0x002A04BE,
- 0x0F120400, /*REG_SF_USER_Ggain */
- 0x002A04C2,
- 0x0F120588, /*REG_SF_USER_Bgain */
-
- 0x002A04C6,
- 0x0F120001, /*REG_SF_USER_RGBGainChanged */
-};
-
-static const u32 s5k4ecgx_Scene_Duskdawn_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04E6,
- 0x0F120777, /*REG_TC_DBG_AutoAlgEnBits //AWB Off */
-
- 0x002A04BA,
- 0x0F1205A5, /*REG_SF_USER_Rgain */
- 0x002A04BE,
- 0x0F120400, /*REG_SF_USER_Ggain */
- 0x002A04C2,
- 0x0F1208A8, /*REG_SF_USER_Bgain */
-
- 0x002A04C6,
- 0x0F120001, /*REG_SF_USER_RGBGainChanged */
-};
-
-static const u32 s5k4ecgx_Scene_Fall_Color_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0234,
- 0x0F120060,
-};
-
-static const u32 s5k4ecgx_Scene_Fireworks_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0638,
- 0x0F120001,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_0_ */
- 0x0F121478,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_1_ */
- 0x0F121A0A,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_2_ */
- 0x0F126810,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_3_ */
- 0x0F126810,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_4_ */
- 0x0F12D020,
- 0x0F120000,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_5_ */
- 0x0F120428,
- 0x0F120001,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_6_ */
- 0x0F121A80,
- 0x0F120006,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_7_ */
- 0x0F121A80,
- 0x0F120006,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_8_ */
- 0x0F121A80,
- 0x0F120006,/*lt_ExpGain_ExpCurveGainMaxStr_0__ulExpOut_9_ */
-
- 0x002A03B4,
- 0x0F122710,/*REG_0TC_CCFG_usMaxFrTimeMsecMult10 //2710h:1fps */
- 0x0F122710,/*REG_0TC_CCFG_usMinFrTimeMsecMult10 //2710h:1fps */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
- 0x002A023E,
- 0x0F120001, /*REG_TC_GP_EnablePreview */
- 0x0F120001, /*REG_TC_GP_EnablePreviewChanged */
-};
-
-static const u32 s5k4ecgx_Scene_Text_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0A28,
- 0x0F12A060,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
- 0x002A0ADE,
- 0x0F12A060,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
- 0x002A0B94,
- 0x0F12A060,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
- 0x002A0C4A,
- 0x0F12A060,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
- 0x002A0D00,
- 0x0F12A060,/*_ee_iLowSharpPower [7:0] AFIT8_ee_iHighSharpPower*/
-};
-
-static const u32 s5k4ecgx_Scene_Candle_Light_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A04E6,
- 0x0F120777, /*REG_TC_DBG_AutoAlgEnBits //AWB Off */
-
- 0x002A04BA,
- 0x0F1205F0, /*REG_SF_USER_Rgain */
- 0x002A04BE,
- 0x0F120400, /*REG_SF_USER_Ggain */
- 0x002A04C2,
- 0x0F120588, /*REG_SF_USER_Bgain */
-
- 0x002A04C6,
- 0x0F120001, /*REG_SF_USER_RGBGainChanged */
-};
-
- /* AE Lock */
-static const u32 s5k4ecgx_ae_lock_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A2C5E,
- 0x0F120000,
-};
-
- /* AE unLock */
-static const u32 s5k4ecgx_ae_unlock_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A2C5E,
- 0x0F120001,
-};
-
- /* AWB Lock */
-static const u32 s5k4ecgx_awb_lock_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A2C66,
- 0x0F120000,
-};
-
- /* AWB unLock */
-static const u32 s5k4ecgx_awb_unlock_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A2C66,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_Night_Mode_Off_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_AF_Return_Inf_pos_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A15D6,
- 0x0F12D000,
-};
-
-static const u32 s5k4ecgx_AF_Return_Macro_pos_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A15E8,
- 0x0F120018,
- 0x0F12002A,
- 0x0F120030,
- 0x0F120036,
- 0x0F12003C,
- 0x0F120042,
- 0x0F120048,
- 0x0F12004E,
- 0x0F120054,
- 0x0F12005A,
- 0x0F120060,
- 0x0F120066,
- 0x0F12006C,
- 0x0F120072,
- 0x0F120078,
- 0x0F12007E,
- 0x0F120084,
- 0x0F12008A,
- 0x0F120090,
- 0x0F120096,
- 0x0F12009C,
- 0x0F1200A2,
- 0x0F1200A8,
- 0x0F1200AE,
- 0x0F1200B4,
- 0x0F1200BA,
-};
-
-static const u32 s5k4ecgx_AF_Normal_mode_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1648,
- 0x0F129002,
-};
-
-static const u32 s5k4ecgx_AF_Normal_mode_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A028E,
- 0x0F120000,
-};
-
-static const u32 s5k4ecgx_AF_Normal_mode_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A028C,
- 0x0F120004,
-};
-
-static const u32 s5k4ecgx_AF_Normal_mode_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1648,
- 0x0F129002,
-
- 0x002A15E8,
- 0x0F120017, /*af_pos_usTableLastInd */
- 0x0F120026,
- 0x0F12002C,
- 0x0F120032,
- 0x0F120038,
- 0x0F12003E,
- 0x0F120044,
- 0x0F12004A,
- 0x0F120050,
- 0x0F120056,
- 0x0F12005C,
- 0x0F120062,
- 0x0F120068,
- 0x0F12006E,
- 0x0F120074,
- 0x0F12007A,
- 0x0F120080,
- 0x0F120086,
- 0x0F12008C,
- 0x0F120092,
- 0x0F120098,
- 0x0F12009E,
- 0x0F1200A4,
- 0x0F1200AA,
- 0x0F1200B0,
-};
-
-static const u32 s5k4ecgx_AF_Macro_mode_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A028E,
- 0x0F1200D0,
-};
-
-static const u32 s5k4ecgx_AF_Macro_mode_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A028C,
- 0x0F120004,
-};
-
-static const u32 s5k4ecgx_AF_Macro_mode_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1648,
- 0x0F129042,
-
- 0x002A15E8,
- 0x0F120015, /*af_pos_usTableLastInd */
- 0x0F120032,
- 0x0F120038,
- 0x0F12003E,
- 0x0F120044,
- 0x0F12004A,
- 0x0F120050,
- 0x0F120056,
- 0x0F12005C,
- 0x0F120062,
- 0x0F120068,
- 0x0F12006E,
- 0x0F120074,
- 0x0F12007A,
- 0x0F120080,
- 0x0F120086,
- 0x0F12008C,
- 0x0F120092,
- 0x0F120098,
- 0x0F12009E,
- 0x0F1200A4,
- 0x0F1200AA,
- 0x0F1200B0,
-
- 0x002A15DA,
- 0x0F121500,/* 16 start number of table 00 End number of table */
-};
-
-static const u32 s5k4ecgx_AF_Low_Light_normal_mode_1_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_AF_Low_Light_normal_mode_2_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_AF_Low_Light_normal_mode_3_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_AF_Low_Light_Macro_mode_1_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_AF_Low_Light_Macro_mode_2_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_AF_Low_Light_Macro_mode_3_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_Single_AF_Start_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A028C,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_Single_AF_Off_1_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_Single_AF_Off_2_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_Single_AF_Off_3_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_Face_Detection_On_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0294,
- 0x0F120100,
- 0x0F1200E3,
- 0x0F120200,
- 0x0F120238,
- 0x0F1201C6,
- 0x0F120166,
- 0x0F120074,
- 0x0F120132,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_Face_Detection_Off_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0294,
- 0x0F120100,
- 0x0F1200E3,
- 0x0F120200,
- 0x0F120238,
- 0x0F1201C6,
- 0x0F120166,
- 0x0F120074,
- 0x0F120132,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_Low_Cap_On_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A06B8,
- 0x0F12552C, /*lt_uMaxLei */
- 0x0F120006, /*lt_usMinExp */
-
- 0x002A0608,
- 0x0F120001, /*lt_ExpGain_uSubsamplingmode */
- 0x0F120001, /*lt_ExpGain_uNonSubsampling */
- 0x0F120900, /*lt_ExpGain_ExpCurveGainMaxStr_0__uMaxAnGain */
-
-};
-
-static const u32 s5k4ecgx_Low_Cap_Off_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A06B8,
- 0x0F12452C, /*lt_uMaxLei */
- 0x0F120005, /*lt_usMinExp // 0725 000C->0005 */
-
- 0x002A0608,
- 0x0F120001, /*lt_ExpGain_uSubsamplingmode */
- 0x0F120001, /*lt_ExpGain_uNonSubsampling */
- 0x0F120800, /*lt_ExpGain_ExpCurveGainMaxStr_0__uMaxAnGain */
-
-};
-
-static const u32 s5k4ecgx_Night_Mode_On_EVT1[] = {
-
-};
-
-static const u32 s5k4ecgx_Capture_Start_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0242,
- 0x0F120001,
- 0x002A024E,
- 0x0F120001,
- 0x002A0244,
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_Preview_Return_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A0242,
- 0x0F120000, /*REG_TC_GP_EnableCapture*/
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync*/
- 0x002A0244,
- 0x0F120001, /*REG_TC_GP_EnableCaptureChanged*/
-
-};
-
- /* Flash Control */
-static const u32 s5k4ecgx_Flash_init_EVT1[] = {
-/* Include initial setting*/
-};
-
-static const u32 s5k4ecgx_Pre_Flash_On_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A17FC, /* fls_FlashWP_0_Pre_Flash_Start*/
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_Pre_Flash_Off_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A1800, /*fls_afl_FlashWP_Weight_0_Pre_Flash_end*/
- 0x0F120001,
-};
-
-static const u32 s5k4ecgx_Main_Flash_On_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A17E8,/*fls_afl_FlashMode:Flash alg start*/
- 0x0F120001,
- 0x002A180C,/*fls_afl_FlashWP_Weight_4:flash br avg*/
- 0x0F120027,
-};
-
-static const u32 s5k4ecgx_Main_Flash_Off_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A17E8, /*fls_afl_FlashMode Flash alg end*/
- 0x0F120000,
-};
-
-static const u32 s5k4ecgx_5M_Capture_EVT1[] = { /* 2560 x 1920 */
- 0xFCFCD000,
- 0x00287000,
- 0x002A0258,
- 0x0F120A00, /*REG_TC_GP_CapReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_CapReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
- 0x0F12000C, /*REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
-
- 0x002A0264,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInCap */
-
- 0x002A049C,
- 0x0F120A00, /*REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputHeightOfs */
-
- 0x002A047C,
- 0x0F120001, /*REG_TC_THUMB_Thumb_bActive */
- 0x0F120280, /*REG_TC_THUMB_Thumb_uWidth //640 */
- 0x0F1201E0, /*REG_TC_THUMB_Thumb_uHeight //480 */
-
- 0x002A0398,
- 0x0F120A00, /*REG_0TC_CCFG_usWidth //2560 */
- 0x0F120780, /*REG_0TC_CCFG_usHeight //1920 */
-
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
-};
-
-static const u32 s5k4ecgx_3M_Capture_EVT1[] = { /*2048 x 1536 */
- 0xFCFCD000,
- 0x00287000,
- 0x002A0258,
- 0x0F120A00, /*REG_TC_GP_CapReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_CapReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
- 0x0F12000C, /*REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
-
- 0x002A0264,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInCap */
-
- 0x002A049C,
- 0x0F120A00, /*REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputHeightOfs */
-
- 0x002A047C,
- 0x0F120001, /*REG_TC_THUMB_Thumb_bActive */
- 0x0F120280, /*REG_TC_THUMB_Thumb_uWidth //640 */
- 0x0F1201E0, /*REG_TC_THUMB_Thumb_uHeight //480 */
-
- 0x002A0398,
- 0x0F120800, /*REG_0TC_CCFG_usWidth //2048 */
- 0x0F120600, /*REG_0TC_CCFG_usHeight //1536 */
-
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_2M_Capture_EVT1[] = { /*1600 x 1200 */
- 0xFCFCD000,
- 0x00287000,
- 0x002A0258,
- 0x0F120A00, /*REG_TC_GP_CapReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_CapReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
- 0x0F12000C, /*REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
-
- 0x002A0264,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInCap */
-
- 0x002A049C,
- 0x0F120A00, /*REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputHeightOfs */
-
- 0x002A047C,
- 0x0F120001, /*REG_TC_THUMB_Thumb_bActive */
- 0x0F120280, /*REG_TC_THUMB_Thumb_uWidth //640 */
- 0x0F1201E0, /*REG_TC_THUMB_Thumb_uHeight //480 */
-
- 0x002A0398,
- 0x0F120640, /*REG_0TC_CCFG_usWidth //1600 */
- 0x0F1204B0, /*REG_0TC_CCFG_usHeight //1200 */
-
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
-};
-
-static const u32 s5k4ecgx_1M_Capture_EVT1[] = { /* 1280 x 960 */
- 0xFCFCD000,
- 0x00287000,
- 0x002A0258,
- 0x0F120A00, /*REG_TC_GP_CapReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_CapReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
- 0x0F12000C, /*REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
-
- 0x002A0264,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInCap */
-
- 0x002A049C,
- 0x0F120A00, /*REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputHeightOfs */
-
- 0x002A047C,
- 0x0F120001, /*REG_TC_THUMB_Thumb_bActive */
- 0x0F120280, /*REG_TC_THUMB_Thumb_uWidth //640 */
- 0x0F1201E0, /*REG_TC_THUMB_Thumb_uHeight //480 */
-
- 0x002A0398,
- 0x0F120500, /*REG_0TC_CCFG_usWidth //1280 */
- 0x0F1203C0, /*REG_0TC_CCFG_usHeight //960 */
-
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
-
-};
-
- /* 1024 x 768 */
-static const u32 s5k4ecgx_XGA_Capture_EVT1[] = {
-/* 0725 add*/
- 0xFCFCD000,
- 0x00287000,
- 0x002A0258,
- 0x0F120A00, /*REG_TC_GP_CapReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_CapReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
- 0x0F12000C, /*REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
-
- 0x002A0264,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInCap */
-
- 0x002A049C,
- 0x0F120A00, /*REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputHeightOfs */
-
- 0x002A047C,
- 0x0F120001, /*REG_TC_THUMB_Thumb_bActive */
- 0x0F120280, /*REG_TC_THUMB_Thumb_uWidth //640 */
- 0x0F1201E0, /*REG_TC_THUMB_Thumb_uHeight //480 */
-
- 0x002A0398,
- 0x0F120400, /*REG_0TC_CCFG_usWidth //1024 */
- 0x0F120300, /*REG_0TC_CCFG_usHeight //768 */
-
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
-};
-
-static const u32 s5k4ecgx_VGA_Capture_EVT1[] = { /* 640 x 480 */
- 0xFCFCD000,
- 0x00287000,
- 0x002A0258,
- 0x0F120A00, /*REG_TC_GP_CapReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_CapReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_CapInputWidthOfs //(2592-2560)/2 */
- 0x0F12000C, /*REG_TC_GP_CapInputHeightOfs //(1944-1920)/2 */
-
- 0x002A0264,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInCap */
-
- 0x002A049C,
- 0x0F120A00, /*REG_TC_PZOOM_CapZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_CapZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_CapZoomReqInputHeightOfs */
-
- 0x002A047C,
- 0x0F120001, /*REG_TC_THUMB_Thumb_bActive */
- 0x0F120280, /*REG_TC_THUMB_Thumb_uWidth //640 */
- 0x0F1201E0, /*REG_TC_THUMB_Thumb_uHeight //480 */
-
- 0x002A0398,
- 0x0F120280, /*REG_0TC_CCFG_usWidth //640 */
- 0x0F1201E0, /*REG_0TC_CCFG_usHeight //480 */
-
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0270,
- 0x0F120001, /*REG_TC_GP_CapConfigChanged */
-};
-
-static const u32 s5k4ecgx_QVGA_Capture_EVT1[] = { /* 320 x 240 */
-
-};
-
-static const u32 s5k4ecgx_1280_Preview_EVT1[] = { /* 1280 x 720 */
- /*720P enable setting */
- 0xFCFCD000,
- 0x00287000,
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin */
- 0x0F120060, /*senHal_uAddColsNoBin */
- 0x0F1207DC, /*senHal_uMinColsBin */
- 0x0F1205C0, /*senHal_uMinColsNoBin */
-
- /* Size */
- 0x002A0250,
- 0x0F120A00, /*REG_TC_GP_PrevReqInputWidth //2560 */
- 0x0F1205A0, /*REG_TC_GP_PrevReqInputHeight //1440 */
- 0x0F120010, /*REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
- 0x0F1200FC, /*REG_TC_GP_PrevInputHeightOfs //(1944-1440)/2*/
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
- 0x002A0494,
- 0x0F120A00, /*REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
- 0x0F1205A0, /*REG_TC_PZOOM_PrevZoomReqInputHeight //1440 */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
- 0x002A02A6,
- 0x0F120500, /*REG_0TC_PCFG_usWidth //1280 */
- 0x0F1202D0, /*REG_0TC_PCFG_usHeight //720 */
-
- /* Frame Rate */
- 0x002A02BE,
- 0x0F120000, /*REG_0TC_PCFG_usFrTimeType */
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
- 0x0F12014A,/*REG_0TC_PCFG_usMaxFrTimeMsecMult10 //014Ah:30fps */
- 0x0F12014A,/*REG_0TC_PCFG_usMinFrTimeMsecMult10 //014Ah:30fps */
-
- /* AE Target */
- 0x002A1484,
- 0x0F12002A, /*003C //TVAR_ae_BrAve */
-
- /* AE Weight Matrix */
- 0x002A1492,
- 0x0F120101, /*0100 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0001 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0201 */
- 0x0F120101, /*0102 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0202 */
- 0x0F120101, /*0202 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0201 */
- 0x0F120101, /*0302 */
- 0x0F120101, /*0203 */
- 0x0F120101, /*0102 */
- 0x0F120101, /*0201 */
- 0x0F120101, /*0302 */
- 0x0F120101, /*0203 */
- 0x0F120101, /*0102 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0202 */
- 0x0F120101, /*0202 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0201 */
- 0x0F120101, /*0102 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0101 */
- 0x0F120101, /*0101 */
-
- /* Slow AE */
- 0x002A1568,
- 0x0F120030, /*0010 //ae_GainIn_0_ */
- 0x0F120090, /*0020 //ae_GainIn_1_ */
- 0x0F1200A8, /*0040 //ae_GainIn_2_ */
- 0x0F1200C0, /*0080 //ae_GainIn_3_ */
- 0x0F120100, /*0010 //ae_GainIn_4_ FIX */
- 0x0F120140, /*0200 //ae_GainIn_5_ */
- 0x0F120180, /*0400 //ae_GainIn_6_ */
- 0x0F120400, /*0800 //ae_GainIn_7_ */
- 0x0F122000, /*0800 //ae_GainIn_8_ */
- 0x0F120080, /*0010 //ae_GainOut_0_ */
- 0x0F1200D0, /*0020 //ae_GainOut_1_ */
- 0x0F1200D8, /*0040 //ae_GainOut_2_ */
- 0x0F1200F8, /*0080 //ae_GainOut_3_ */
- 0x0F120100, /*0100 //ae_GainOut_4_ FIX */
- 0x0F120103, /*0200 //ae_GainOut_5_ */
- 0x0F120110, /*0400 //ae_GainOut_6_ */
- 0x0F120150, /*0800 //ae_GainOut_7_ */
- 0x0F120400, /*2000 //ae_GainOut_8_*/
- 0x002A0544,
- 0x0F120105, /*0111 //lt_uLimitHigh */
- 0x0F1200FA, /*00EF //lt_uLimitLow */
- 0x002A0588,
- 0x0F120001, /*0000 //lt_uInitPostToleranceCnt */
- 0x002A0582,
- 0x0F1200D0, /*0000 //lt_uSlowFilterCoef */
-
- 0x002A0734, /*R*/
- 0x0F120000,
- 0x0F120005,
- 0x0F12000F,
- 0x0F120026,
- 0x0F120066,
- 0x0F1200D5,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
-
- 0x0F120000, /*G*/
- 0x0F120005,
- 0x0F12000F,
- 0x0F120026,
- 0x0F120066,
- 0x0F1200D5,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
-
- 0x0F120000, /*B*/
- 0x0F120005,
- 0x0F12000F,
- 0x0F120026,
- 0x0F120066,
- 0x0F1200D5,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
-
- /* Slow AWB */
- 0x002A139A,
- 0x0F120158, /*0258 //awbb_GainsMaxMove */
-
- /* AWB Convergence Speed */
- 0x002A1464,
- 0x0F120008, /*awbb_WpFilterMinThr */
- 0x0F12FFFF, /*0190 //awbb_WpFilterMaxThr */
- 0x0F120010, /*00A0 //awbb_WpFilterCoef */
- 0x0F120020, /*0004 //awbb_WpFilterSize */
- 0x002A0938,
- 0x0F120001,/*0000 // on/off AFIT by NB option */
- 0x0F120014, /*0014//SARR_uNormBrInDoor */
- 0x0F1200D2, /*00D2//SARR_uNormBrInDoor */
- 0x0F120784, /*0384//SARR_uNormBrInDoor */
- 0x0F1210D0, /*07D0//SARR_uNormBrInDoor */
- 0x0F121388, /*1388//SARR_uNormBrInDoor */
- 0x002A098C,
- 0x0F120000, /*0000//7000098C//_BRIGHTNESS AFIT 0 */
- 0x0F120000, /*0000//7000098E//_CONTRAST */
- 0x0F120000, /*0000//70000990//_SATURATION */
- 0x0F120000, /*0000//70000992//_SHARP_BLUR */
- 0x0F120000, /*0000//70000994//_GLAMOUR */
- 0x0F1200C0, /*00C0//70000996//_bnr_edge_high */
- 0x0F120064, /*0064//70000998//_postdmsc_iLowBright */
- 0x0F120384, /*0384//7000099A//_postdmsc_iHighBright */
- 0x0F120051, /*005F//7000099C//_postdmsc_iLowSat */
- 0x0F1201F4, /*01F4//7000099E//_postdmsc_iHighSat */
- 0x0F120070, /*0070//700009A0//_postdmsc_iTune */
- 0x0F120040, /*0040//700009A2//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*00A0//700009A4//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*0100//700009A6//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*0010//700009A8//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*0040//700009AA//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*00A0//700009AC//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*1430//700009AE//_bnr_edge_low */
- 0x0F120201, /*0201//700009B0//_bnr_repl_force */
- 0x0F120204, /*0204//700009B2//_bnr_iHotThreshLow */
- 0x0F122404, /*3604//700009B4//_bnr_iColdThreshLow */
- 0x0F12031B, /*032A//700009B6//_bnr_DispTH_High */
- 0x0F120103, /*0403//700009B8//_bnr_DISP_Limit_High */
- 0x0F121205, /*1B06//700009BA//_bnr_iDistSigmaMax */
- 0x0F12400D, /*6015//700009BC//_bnr_iDiffSigmaHigh */
- 0x0F120080, /*00C0//700009BE//_bnr_iNormalizedSTD_Limit */
- 0x0F122080, /*6080//700009C0//_bnr_iDirMinThres */
- 0x0F123040, /*4080//700009C2//_bnr_iDirFltDiffThresLow*/
- 0x0F120630, /*0640//700009C4//_bnr_iDirSmoothPowerLow*/
- 0x0F120306, /*0306//700009C6//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*2003//700009C8//_bnr_iHighSlopeThresh*/
- 0x0F12FF01, /*FF01//700009CA//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*0000//700009CC//_bnr_AddNoisePower1 */
- 0x0F120300, /*0400//700009CE//_bnr_iRadialTune */
- 0x0F12245A, /*365A//700009D0//_bnr_iRadialLimit */
- 0x0F121018, /*102A//700009D2//_ee_iFSMagThHigh */
- 0x0F12000B, /*000B//700009D4//_ee_iFSVarThHigh */
- 0x0F120B00, /*0600//700009D6//_ee_iFSThHigh */
- 0x0F125A0F, /*5A0F//700009D8//_ee_iFSVarCountTh */
- 0x0F120505, /*0505//700009DA//_ee_iRadialPower */
- 0x0F121802, /*1802//700009DC//_ee_iROADThres */
- 0x0F120000, /*0000//700009DE//_ee_iROADSubMaxNR */
- 0x0F122006, /*2006//700009E0//_ee_iROADNeiThres */
- 0x0F123428, /*3028//700009E2//_ee_iSmoothEdgeThres */
- 0x0F12041C, /*0418//700009E4//_ee_iWSharpen */
- 0x0F120101, /*0101//700009E6//_ee_iWShThresh */
- 0x0F120800, /*0800//700009E8//_ee_iEmbossCentAdd */
- 0x0F121004, /*1804//700009EA//_ee_iReduceEdgeThresh */
- 0x0F124008, /*4008//700009EC//_dmsc_iDesatThresh */
- 0x0F120540, /*0540//700009EE//_dmsc_iDemBlurLow */
- 0x0F128006, /*8006//700009F0//_dmsc_iDecisionThresh */
- 0x0F120020, /*0020//700009F2//_dmsc_iMonochrom */
- 0x0F120000, /*0000//700009F4//_dmsc_iGRDenoiseVal */
- 0x0F121800, /*2000//700009F6//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*0000//700009F8//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*1E10//700009FA//_postdmsc_iBCoeff */
- 0x0F12000B, /*000B//700009FC//_postdmsc_iWideMult */
- 0x0F120607, /*0607//700009FE//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*0005//70000A00//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*0607//70000A02//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*0705//70000A04//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*0206//70000A06//_yuviirnr_iXSupportUV */
- 0x0F120304, /*0304//70000A08//_yuviirnr_iHighYNorm */
- 0x0F120409, /*0309//70000A0A//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*0305//70000A0C//_yuviirnr_iUVNormShift */
- 0x0F120407, /*2006//70000A0E//_yuviirnr_iVertLength_UV */
- 0x0F121F04, /*1320//70000A10//_yuviirnr_iDiffThreshH_Y */
- 0x0F120218, /*1014//70000A12//_yuviirnr_iDiffThreshH_UV */
- 0x0F121102, /*1010//70000A14//_yuviirnr_iMaxThreshH_Y */
- 0x0F120611, /*0C10//70000A16//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*1A0C//70000A18//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*4A18//70000A1A//_yuviirnr_iUVNRStrengthH */
- 0x0F1200B0, /*0080//70000A1C//_RGBGamma2_iLinearity */
- 0x0F121080, /*0350//70000A1E//_ccm_oscar_iSaturation */
- 0x0F120180, /*0180//70000A20//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*0A0A//70000A22//_bnr_iClustMulT_H */
- 0x0F120101, /*0101//70000A24//_bnr_iClustThresh_H */
- 0x0F121B24, /*2A36//70000A26//_bnr_iDenThreshLow */
- 0x0F126024, /*6024//70000A28//_ee_iLowSharpPower */
- 0x0F121D22, /*2A36//70000A2A//_ee_iLowShDenoise */
- 0x0F12FFFF, /*FFFF//70000A2C//_ee_iLowSharpClamp */
- 0x0F120808, /*0808//70000A2E//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*0A01//70000A30//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*010A//70000A32//_bnr_iClustMulT_C_Bin */
- 0x0F122401, /*2701//70000A34//_bnr_iClustThresh_C_Bin*/
- 0x0F12241B, /*241E//70000A36//_bnr_iDenThreshHigh_Bin*/
- 0x0F121E60, /*2E60//70000A38//_ee_iHighSharpPower_Bin*/
- 0x0F12FF18, /*FF22//70000A3A//_ee_iHighShDenoise_Bin */
- 0x0F1208FF, /*40FF//70000A3C//_ee_iHighSharpClamp_Bin */
- 0x0F120008, /*0009//70000A3E//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*0001//70000A40//_bnr_nClustLevel_C */
- 0x0F120000, /*0000//70000A42//_BRIGHTNESS AFIT 1 */
- 0x0F120000, /*0000//70000A44//_CONTRAST */
- 0x0F120000, /*0000//70000A46//_SATURATION */
- 0x0F120000, /*0000//70000A48//_SHARP_BLUR */
- 0x0F120000, /*0000//70000A4A//_GLAMOUR */
- 0x0F1200C0, /*00C0//70000A4C//_bnr_edge_high */
- 0x0F120064, /*0064//70000A4E//_postdmsc_iLowBright */
- 0x0F120384, /*0384//70000A50//_postdmsc_iHighBright */
- 0x0F120051, /*0051//70000A52//_postdmsc_iLowSat */
- 0x0F1201F4, /*01F4//70000A54//_postdmsc_iHighSat */
- 0x0F120070, /*0070//70000A56//_postdmsc_iTune */
- 0x0F120040, /*0040//70000A58//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*00A0//70000A5A//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*0100//70000A5C//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*0010//70000A5E//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*0060//70000A60//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*0100//70000A62//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*1430//70000A64//_bnr_edge_low */
- 0x0F120201, /*0201//70000A66//_bnr_repl_force */
- 0x0F120204, /*0204//70000A68//_bnr_iHotThreshLow */
- 0x0F121B04, /*2404//70000A6A//_bnr_iColdThreshLow */
- 0x0F120312, /*031B//70000A6C//_bnr_DispTH_High */
- 0x0F120003, /*0103//70000A6E//_bnr_DISP_Limit_High */
- 0x0F120C03, /*1205//70000A70//_bnr_iDistSigmaMax */
- 0x0F122806, /*400D//70000A72//_bnr_iDiffSigmaHigh */
- 0x0F120060, /*0080//70000A74//_bnr_iNormalizedSTD_Limit */
- 0x0F121540, /*1980//70000A76//_bnr_iDirMinThres */
- 0x0F12201C, /*272E//70000A78//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*0629//70000A7A//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*0306//70000A7C//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*2003//70000A7E//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*FF01//70000A80//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*0404//70000A82//_bnr_AddNoisePower1 */
- 0x0F120300, /*0300//70000A84//_bnr_iRadialTune */
- 0x0F12145A, /*245A//70000A86//_bnr_iRadialLimit */
- 0x0F121010, /*1018//70000A88//_ee_iFSMagThHigh */
- 0x0F12000B, /*000B//70000A8A//_ee_iFSVarThHigh */
- 0x0F120B00, /*0B00//70000A8C//_ee_iFSThHigh */
- 0x0F125A0F, /*5A0F//70000A8E//_ee_iFSVarCountTh */
- 0x0F120503, /*0505//70000A90//_ee_iRadialPower */
- 0x0F121802, /*1802//70000A92//_ee_iROADThres */
- 0x0F120000, /*0000//70000A94//_ee_iROADSubMaxNR */
- 0x0F122006, /*2006//70000A96//_ee_iROADNeiThres */
- 0x0F123C28, /*3828//70000A98//_ee_iSmoothEdgeThres */
- 0x0F120428, /*0425//70000A9A//_ee_iWSharpen */
- 0x0F120101, /*0101//70000A9C//_ee_iWShThresh */
- 0x0F128000, /*0800//70000A9E//_ee_iEmbossCentAdd */
- 0x0F121004, /*1004//70000AA0//_ee_iReduceEdgeThresh */
- 0x0F124008, /*4008//70000AA2//_dmsc_iDesatThresh */
- 0x0F120540, /*0540//70000AA4//_dmsc_iDemBlurLow */
- 0x0F128006, /*8006//70000AA6//_dmsc_iDecisionThresh */
- 0x0F120020, /*0020//70000AA8//_dmsc_iMonochrom */
- 0x0F120000, /*0000//70000AAA//_dmsc_iGRDenoiseVal */
- 0x0F121800, /*2000//70000AAC//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*0000//70000AAE//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*1E10//70000AB0//_postdmsc_iBCoeff */
- 0x0F12000B, /*000B//70000AB2//_postdmsc_iWideMult */
- 0x0F120607, /*0607//70000AB4//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*0005//70000AB6//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*0607//70000AB8//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*0405//70000ABA//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*0205//70000ABC//_yuviirnr_iXSupportUV */
- 0x0F120304, /*0304//70000ABE//_yuviirnr_iHighYNorm */
- 0x0F120409, /*0409//70000AC0//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*0306//70000AC2//_yuviirnr_iUVNormShift */
- 0x0F120407, /*0407//70000AC4//_yuviirnr_iVertLength_UV*/
- 0x0F121F04, /*2204//70000AC6//_yuviirnr_iDiffThreshH_Y*/
- 0x0F120228, /*021C//70000AC8//_yuviirnr_iDiffThreshH_UV */
- 0x0F121402, /*1102//70000ACA//_yuviirnr_iMaxThreshH_Y */
- 0x0F120618, /*0611//70000ACC//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*1A02//70000ACE//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*8018//70000AD0//_yuviirnr_iUVNRStrengthH*/
- 0x0F1200A0, /*0080//70000AD2//_RGBGamma2_iLinearity */
- 0x0F121080, /*0374//70000AD4//_ccm_oscar_iSaturation */
- 0x0F120180, /*0180//70000AD6//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*0A0A//70000AD8//_bnr_iClustMulT_H */
- 0x0F120101, /*0101//70000ADA//_bnr_iClustThresh_H */
- 0x0F121B24, /*141D//70000ADC//_bnr_iDenThreshLow */
- 0x0F126024, /*6024//70000ADE//_ee_iLowSharpPower */
- 0x0F120C0C, /*1217//70000AE0//_ee_iLowShDenoise */
- 0x0F12FFFF, /*FFFF//70000AE2//_ee_iLowSharpClamp */
- 0x0F120808, /*0808//70000AE4//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*0A01//70000AE6//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*010A//70000AE8//_bnr_iClustMulT_C_Bin */
- 0x0F121501, /*0001//70000AEA//_bnr_iClustThresh_C_Bin*/
- 0x0F12240F, /*2400//70000AEC//_bnr_iDenThreshHigh_Bin*/
- 0x0F120C60, /*1660//70000AEE//_ee_iHighSharpPower_Bin*/
- 0x0F12FF0C, /*FF10//70000AF0//_ee_iHighShDenoise_Bin */
- 0x0F1208FF, /*40FF//70000AF2//_ee_iHighSharpClamp_Bin*/
- 0x0F120008, /*0009//70000AF4//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*0001//70000AF6//_bnr_nClustLevel_C */
- 0x0F120000, /*0000//70000AF8//_BRIGHTNESS AFIT 2 */
- 0x0F120000, /*0000//70000AFA//_CONTRAST */
- 0x0F120000, /*0000//70000AFC//_SATURATION */
- 0x0F120000, /*0000//70000AFE//_SHARP_BLUR */
- 0x0F120000, /*0000//70000B00//_GLAMOUR */
- 0x0F1200C0, /*00C0//70000B02//_bnr_edge_high */
- 0x0F120064, /*0064//70000B04//_postdmsc_iLowBright */
- 0x0F120384, /*0384//70000B06//_postdmsc_iHighBright */
- 0x0F120043, /*0043//70000B08//_postdmsc_iLowSat */
- 0x0F1201F4, /*01F4//70000B0A//_postdmsc_iHighSat */
- 0x0F120070, /*0070//70000B0C//_postdmsc_iTune */
- 0x0F120040, /*0040//70000B0E//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*00A0//70000B10//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*0100//70000B12//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*0010//70000B14//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*0060//70000B16//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*0100//70000B18//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*1430//70000B1A//_bnr_edge_low */
- 0x0F120201, /*0201//70000B1C//_bnr_repl_force */
- 0x0F120204, /*0204//70000B1E//_bnr_iHotThreshLow */
- 0x0F121B04, /*1B04//70000B20//_bnr_iColdThreshLow */
- 0x0F120312, /*0312//70000B22//_bnr_DispTH_High */
- 0x0F120003, /*0003//70000B24//_bnr_DISP_Limit_High */
- 0x0F120C03, /*0C03//70000B26//_bnr_iDistSigmaMax */
- 0x0F122806, /*2806//70000B28//_bnr_iDiffSigmaHigh */
- 0x0F120060, /*0060//70000B2A//_bnr_iNormalizedSTD_Limit*/
- 0x0F121540, /*1580//70000B2C//_bnr_iDirMinThres */
- 0x0F12201C, /*2020//70000B2E//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*0620//70000B30//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*0306//70000B32//_bnr_iHighMaxSlopeAllowed*/
- 0x0F122003, /*2003//70000B34//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*FF01//70000B36//_bnr_iSlopeBlurStrength*/
- 0x0F120404, /*0404//70000B38//_bnr_AddNoisePower1 */
- 0x0F120300, /*0300//70000B3A//_bnr_iRadialTune */
- 0x0F12145A, /*145A//70000B3C//_bnr_iRadialLimit */
- 0x0F121010, /*1010//70000B3E//_ee_iFSMagThHigh*/
- 0x0F12000B, /*000B//70000B40//_ee_iFSVarThHigh*/
- 0x0F120E00, /*0E00//70000B42//_ee_iFSThHigh */
- 0x0F125A0F, /*5A0F//70000B44//_ee_iFSVarCountTh */
- 0x0F120503, /*0504//70000B46//_ee_iRadialPower*/
- 0x0F121802, /*1802//70000B48//_ee_iROADThres */
- 0x0F120000, /*0000//70000B4A//_ee_iROADSubMaxNR */
- 0x0F122006, /*2006//70000B4C//_ee_iROADNeiThres */
- 0x0F123C28, /*3828//70000B4E//_ee_iSmoothEdgeThres */
- 0x0F120428, /*0428//70000B50//_ee_iWSharpen */
- 0x0F120101, /*0101//70000B52//_ee_iWShThresh */
- 0x0F128000, /*8000//70000B54//_ee_iEmbossCentAdd */
- 0x0F120A04, /*0A04//70000B56//_ee_iReduceEdgeThresh */
- 0x0F124008, /*4008//70000B58//_dmsc_iDesatThresh */
- 0x0F120540, /*0540//70000B5A//_dmsc_iDemBlurLow */
- 0x0F128006, /*8006//70000B5C//_dmsc_iDecisionThresh */
- 0x0F120020, /*0020//70000B5E//_dmsc_iMonochrom */
- 0x0F120000, /*0000//70000B60//_dmsc_iGRDenoiseVal */
- 0x0F121800, /*2000//70000B62//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*0000//70000B64//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*1E10//70000B66//_postdmsc_iBCoeff */
- 0x0F12000B, /*000B//70000B68//_postdmsc_iWideMult */
- 0x0F120607, /*0607//70000B6A//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*0005//70000B6C//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*0607//70000B6E//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*0405//70000B70//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*0207//70000B72//_yuviirnr_iXSupportUV */
- 0x0F120304, /*0304//70000B74//_yuviirnr_iHighYNorm */
- 0x0F120409, /*0409//70000B76//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*0306//70000B78//_yuviirnr_iUVNormShift */
- 0x0F120407, /*0407//70000B7A//_yuviirnr_iVertLength_UV*/
- 0x0F122404, /*2404//70000B7C//_yuviirnr_iDiffThreshH_Y*/
- 0x0F120228, /*0221//70000B7E//_yuviirnr_iDiffThreshH_UV */
- 0x0F121402, /*1202//70000B80//_yuviirnr_iMaxThreshH_Y */
- 0x0F120618, /*0613//70000B82//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*1A02//70000B84//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*8018//70000B86//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*0080//70000B88//_RGBGamma2_iLinearity */
- 0x0F121080, /*0080//70000B8A//_ccm_oscar_iSaturation */
- 0x0F120180, /*0180//70000B8C//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*0A0A//70000B8E//_bnr_iClustMulT_H */
- 0x0F120101, /*0101//70000B90//_bnr_iClustThresh_H */
- 0x0F12141D, /*121B//70000B92//_bnr_iDenThreshLow */
- 0x0F126024, /*6024//70000B94//_ee_iLowSharpPower */
- 0x0F120C0C, /*0C0C//70000B96//_ee_iLowShDenoise */
- 0x0F12FFFF, /*FFFF//70000B98//_ee_iLowSharpClamp */
- 0x0F120808, /*0808//70000B9A//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*0A01//70000B9C//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*010A//70000B9E//_bnr_iClustMulT_C_Bin */
- 0x0F121501, /*0001//70000BA0//_bnr_iClustThresh_C_Bin*/
- 0x0F12240F, /*2400//70000BA2//_bnr_iDenThreshHigh_Bin*/
- 0x0F120C60, /*0460//70000BA4//_ee_iHighSharpPower_Bin*/
- 0x0F12FF0C, /*FF04//70000BA6//_ee_iHighShDenoise_Bin*/
- 0x0F1208FF, /*40FF//70000BA8//_ee_iHighSharpClamp_Bin */
- 0x0F120008, /*0009//70000BAA//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*0001//70000BAC//_bnr_nClustLevel_C */
- 0x0F120000, /*0000//70000BAE//_BRIGHTNESS AFIT 3 */
- 0x0F120000, /*0000//70000BB0//_CONTRAST */
- 0x0F120000, /*0000//70000BB2//_SATURATION */
- 0x0F120000, /*0000//70000BB4//_SHARP_BLUR */
- 0x0F120000, /*0000//70000BB6//_GLAMOUR */
- 0x0F1200C0, /*00C0//70000BB8//_bnr_edge_high */
- 0x0F120064, /*0064//70000BBA//_postdmsc_iLowBright */
- 0x0F120384, /*0384//70000BBC//_postdmsc_iHighBright */
- 0x0F120032, /*0032//70000BBE//_postdmsc_iLowSat */
- 0x0F1201F4, /*01F4//70000BC0//_postdmsc_iHighSat */
- 0x0F120070, /*0070//70000BC2//_postdmsc_iTune */
- 0x0F120040, /*0040//70000BC4//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*00A0//70000BC6//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*0100//70000BC8//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*0010//70000BCA//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*0060//70000BCC//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*0100//70000BCE//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*1430//70000BD0//_bnr_edge_low */
- 0x0F120201, /*0201//70000BD2//_bnr_repl_force */
- 0x0F120204, /*0204//70000BD4//_bnr_iHotThreshLow */
- 0x0F121504, /*1504//70000BD6//_bnr_iColdThreshLow */
- 0x0F12030F, /*030F//70000BD8//_bnr_DispTH_High */
- 0x0F120003, /*0003//70000BDA//_bnr_DISP_Limit_High */
- 0x0F120902, /*0902//70000BDC//_bnr_iDistSigmaMax */
- 0x0F122004, /*2004//70000BDE//_bnr_iDiffSigmaHigh */
- 0x0F120050, /*0050//70000BE0//_bnr_iNormalizedSTD_Limit*/
- 0x0F121140, /*1140//70000BE2//_bnr_iDirMinThres */
- 0x0F12201C, /*201C//70000BE4//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*0620//70000BE6//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*0306//70000BE8//_bnr_iHighMaxSlopeAllowed*/
- 0x0F122003, /*2003//70000BEA//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*FF01//70000BEC//_bnr_iSlopeBlurStrength*/
- 0x0F120404, /*0404//70000BEE//_bnr_AddNoisePower1 */
- 0x0F120300, /*0300//70000BF0//_bnr_iRadialTune */
- 0x0F12145A, /*145A//70000BF2//_bnr_iRadialLimit */
- 0x0F121010, /*1010//70000BF4//_ee_iFSMagThHigh */
- 0x0F12000B, /*000B//70000BF6//_ee_iFSVarThHigh */
- 0x0F121000, /*1000//70000BF8//_ee_iFSThHigh */
- 0x0F125A0F, /*5A0F//70000BFA//_ee_iFSVarCountTh */
- 0x0F120503, /*0503//70000BFC//_ee_iRadialPower */
- 0x0F121802, /*1802//70000BFE//_ee_iROADThres */
- 0x0F120000, /*0000//70000C00//_ee_iROADSubMaxNR */
- 0x0F122006, /*2006//70000C02//_ee_iROADNeiThres */
- 0x0F123C28, /*3C28//70000C04//_ee_iSmoothEdgeThres */
- 0x0F12042C, /*042C//70000C06//_ee_iWSharpen */
- 0x0F120101, /*0101//70000C08//_ee_iWShThresh */
- 0x0F128000, /*FF00//70000C0A//_ee_iEmbossCentAdd */
- 0x0F120904, /*0904//70000C0C//_ee_iReduceEdgeThresh */
- 0x0F124008, /*4008//70000C0E//_dmsc_iDesatThresh */
- 0x0F120540, /*0540//70000C10//_dmsc_iDemBlurLow */
- 0x0F128006, /*8006//70000C12//_dmsc_iDecisionThresh */
- 0x0F120020, /*0020//70000C14//_dmsc_iMonochrom */
- 0x0F120000, /*0000//70000C16//_dmsc_iGRDenoiseVal */
- 0x0F121800, /*2000//70000C18//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*0000//70000C1A//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*1E10//70000C1C//_postdmsc_iBCoeff */
- 0x0F12000B, /*000B//70000C1E//_postdmsc_iWideMult */
- 0x0F120607, /*0607//70000C20//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*0005//70000C22//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*0607//70000C24//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*0405//70000C26//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*0206//70000C28//_yuviirnr_iXSupportUV */
- 0x0F120304, /*0304//70000C2A//_yuviirnr_iHighYNorm */
- 0x0F120409, /*0409//70000C2C//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*0305//70000C2E//_yuviirnr_iUVNormShift */
- 0x0F120407, /*0406//70000C30//_yuviirnr_iVertLength_UV*/
- 0x0F122804, /*2804//70000C32//_yuviirnr_iDiffThreshH_Y*/
- 0x0F120228, /*0228//70000C34//_yuviirnr_iDiffThreshH_UV */
- 0x0F121402, /*1402//70000C36//_yuviirnr_iMaxThreshH_Y */
- 0x0F120618, /*0618//70000C38//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*1A02//70000C3A//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*8018//70000C3C//_yuviirnr_iUVNRStrengthH*/
- 0x0F120080, /*0080//70000C3E//_RGBGamma2_iLinearity */
- 0x0F121080, /*0080//70000C40//_ccm_oscar_iSaturation */
- 0x0F120180, /*0180//70000C42//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*0A0A//70000C44//_bnr_iClustMulT_H */
- 0x0F120101, /*0101//70000C46//_bnr_iClustThresh_H */
- 0x0F121117, /*0F15//70000C48//_bnr_iDenThreshLow */
- 0x0F126024, /*6024//70000C4A//_ee_iLowSharpPower */
- 0x0F120A0A, /*0A0A//70000C4C//_ee_iLowShDenoise */
- 0x0F12FFFF, /*FFFF//70000C4E//_ee_iLowSharpClamp */
- 0x0F120808, /*0808//70000C50//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*0A01//70000C52//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*010A//70000C54//_bnr_iClustMulT_C_Bin */
- 0x0F121501, /*0001//70000C56//_bnr_iClustThresh_C_Bin*/
- 0x0F12240F, /*2400//70000C58//_bnr_iDenThreshHigh_Bin*/
- 0x0F120A60, /*0260//70000C5A//_ee_iHighSharpPower_Bin*/
- 0x0F12FF0A, /*FF02//70000C5C//_ee_iHighShDenoise_Bin */
- 0x0F1208FF, /*40FF//70000C5E//_ee_iHighSharpClamp_Bin*/
- 0x0F120008, /*0009//70000C60//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*0001//70000C62//_bnr_nClustLevel_C */
- 0x0F120000, /*0000//70000C64//_BRIGHTNESS AFIT 4 */
- 0x0F120000, /*0000//70000C66//_CONTRAST */
- 0x0F120000, /*0000//70000C68//_SATURATION */
- 0x0F120000, /*0000//70000C6A//_SHARP_BLUR */
- 0x0F120000, /*0000//70000C6C//_GLAMOUR */
- 0x0F1200C0, /*00C0//70000C6E//_bnr_edge_high */
- 0x0F120064, /*0064//70000C70//_postdmsc_iLowBright */
- 0x0F120384, /*0384//70000C72//_postdmsc_iHighBright */
- 0x0F120032, /*0032//70000C74//_postdmsc_iLowSat */
- 0x0F1201F4, /*01F4//70000C76//_postdmsc_iHighSat */
- 0x0F120070, /*0070//70000C78//_postdmsc_iTune */
- 0x0F120040, /*0040//70000C7A//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*00A0//70000C7C//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*0100//70000C7E//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*0010//70000C80//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*0060//70000C82//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*0100//70000C84//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*1430//70000C86//_bnr_edge_low */
- 0x0F120201, /*0201//70000C88//_bnr_repl_force */
- 0x0F120204, /*0204//70000C8A//_bnr_iHotThreshLow */
- 0x0F120F04, /*0F04//70000C8C//_bnr_iColdThreshLow */
- 0x0F12030C, /*030C//70000C8E//_bnr_DispTH_High */
- 0x0F120003, /*0003//70000C90//_bnr_DISP_Limit_High */
- 0x0F120602, /*0602//70000C92//_bnr_iDistSigmaMax */
- 0x0F121803, /*1803//70000C94//_bnr_iDiffSigmaHigh */
- 0x0F120040, /*0040//70000C96//_bnr_iNormalizedSTD_Limit*/
- 0x0F120E20, /*0E20//70000C98//_bnr_iDirMinThres */
- 0x0F122018, /*2018//70000C9A//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*0620//70000C9C//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*0306//70000C9E//_bnr_iHighMaxSlopeAllowed*/
- 0x0F122003, /*2003//70000CA0//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*FF01//70000CA2//_bnr_iSlopeBlurStrength*/
- 0x0F120404, /*0404//70000CA4//_bnr_AddNoisePower1 */
- 0x0F120200, /*0200//70000CA6//_bnr_iRadialTune */
- 0x0F12145A, /*145A//70000CA8//_bnr_iRadialLimit */
- 0x0F121010, /*1010//70000CAA//_ee_iFSMagThHigh */
- 0x0F12000B, /*000B//70000CAC//_ee_iFSVarThHigh */
- 0x0F121200, /*1200//70000CAE//_ee_iFSThHigh */
- 0x0F125A0F, /*5A0F//70000CB0//_ee_iFSVarCountTh */
- 0x0F120502, /*0502//70000CB2//_ee_iRadialPower */
- 0x0F121802, /*1802//70000CB4//_ee_iROADThres */
- 0x0F120000, /*0000//70000CB6//_ee_iROADSubMaxNR */
- 0x0F122006, /*2006//70000CB8//_ee_iROADNeiThres */
- 0x0F124028, /*4028//70000CBA//_ee_iSmoothEdgeThres */
- 0x0F120430, /*0430//70000CBC//_ee_iWSharpen */
- 0x0F120101, /*0101//70000CBE//_ee_iWShThresh */
- 0x0F12FF00, /*FF00//70000CC0//_ee_iEmbossCentAdd */
- 0x0F120804, /*0804//70000CC2//_ee_iReduceEdgeThresh */
- 0x0F124008, /*4008//70000CC4//_dmsc_iDesatThresh */
- 0x0F120540, /*0540//70000CC6//_dmsc_iDemBlurLow */
- 0x0F128006, /*8006//70000CC8//_dmsc_iDecisionThresh */
- 0x0F120020, /*0020//70000CCA//_dmsc_iMonochrom */
- 0x0F120000, /*0000//70000CCC//_dmsc_iGRDenoiseVal */
- 0x0F121800, /*2000//70000CCE//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*0000//70000CD0//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*1E10//70000CD2//_postdmsc_iBCoeff */
- 0x0F12000B, /*000B//70000CD4//_postdmsc_iWideMult */
- 0x0F120607, /*0607//70000CD6//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*0005//70000CD8//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*0607//70000CDA//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*0405//70000CDC//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*0205//70000CDE//_yuviirnr_iXSupportUV */
- 0x0F120304, /*0304//70000CE0//_yuviirnr_iHighYNorm */
- 0x0F120409, /*0409//70000CE2//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*0306//70000CE4//_yuviirnr_iUVNormShift */
- 0x0F120407, /*0407//70000CE6//_yuviirnr_iVertLength_UV*/
- 0x0F122C04, /*2C04//70000CE8//_yuviirnr_iDiffThreshH_Y*/
- 0x0F12022C, /*022C//70000CEA//_yuviirnr_iDiffThreshH_UV */
- 0x0F121402, /*1402//70000CEC//_yuviirnr_iMaxThreshH_Y */
- 0x0F120618, /*0618//70000CEE//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*1A02//70000CF0//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*8018//70000CF2//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*0080//70000CF4//_RGBGamma2_iLinearity */
- 0x0F121080, /*0080//70000CF6//_ccm_oscar_iSaturation */
- 0x0F120180, /*0180//70000CF8//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*0A0A//70000CFA//_bnr_iClustMulT_H */
- 0x0F120101, /*0101//70000CFC//_bnr_iClustThresh_H */
- 0x0F120C0F, /*0C0F//70000CFE//_bnr_iDenThreshLow */
- 0x0F126024, /*6024//70000D00//_ee_iLowSharpPower */
- 0x0F120808, /*0808//70000D02//_ee_iLowShDenoise */
- 0x0F12FFFF, /*FFFF//70000D04//_ee_iLowSharpClamp */
- 0x0F120808, /*0808//70000D06//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*0A01//70000D08//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*010A//70000D0A//_bnr_iClustMulT_C_Bin */
- 0x0F120F01, /*0001//70000D0C//_bnr_iClustThresh_C_Bin*/
- 0x0F12240C, /*2400//70000D0E//_bnr_iDenThreshHigh_Bin*/
- 0x0F120860, /*0060//70000D10//_ee_iHighSharpPower_Bin*/
- 0x0F12FF08, /*FF00//70000D12//_ee_iHighShDenoise_Bin */
- 0x0F1208FF, /*40FF//70000D14//_ee_iHighSharpClamp_Bin*/
- 0x0F120008, /*0009//70000D16//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*0001//70000D18//_bnr_nClustLevel_C */
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_1280_Preview_Disable_EVT1[] = {/*1280x720 */
- /* 720P disable setting */
- 0xFCFCD000,
- 0x00287000,
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin */
- 0x0F120060, /*senHal_uAddColsNoBin */
- 0x0F1205C0, /*senHal_uMinColsBin */
- 0x0F1205C0, /*senHal_uMinColsNoBin */
-
- /* Size */
- 0x002A0250,
- 0x0F120A00, /*REG_TC_GP_PrevReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_PrevReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_PrevInputWidthOfs/(2592-2560)/2*/
- 0x0F12000C, /*REG_TC_GP_PrevInputHeightOfs/(1944-1920)/2*/
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
- 0x002A0494,
- 0x0F120A00, /*REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
- 0x002A02A6,
- 0x0F120280, /*REG_0TC_PCFG_usWidth //640 */
- 0x0F1201E0, /*REG_0TC_PCFG_usHeight //480 */
-
- /* Frame Rate */
- 0x002A02BE,
- 0x0F120000, /*REG_0TC_PCFG_usFrTimeType*/
- 0x0F120001, /*REG_0TC_PCFG_FrRateQualityType */
- 0x0F1203E8, /*029A/REG_0TC_PCFG_usMaxFrTimeMsecMult10/029Ah:15fps*/
- 0x0F12014A, /*REG_0TC_PCFG_usMinFrTimeMsecMult10/014Ah:30fps*/
-
- /* AE Target */
- 0x002A1484,
- 0x0F12003C, /*TVAR_ae_BrAve */
-
- /* AE Weight Matrix */
- 0x002A1492,
- 0x0F120100,
- 0x0F120101,
- 0x0F120101,
- 0x0F120001,
- 0x0F120101,
- 0x0F120201,
- 0x0F120102,
- 0x0F120101,
- 0x0F120101,
- 0x0F120202,
- 0x0F120202,
- 0x0F120101,
- 0x0F120201,
- 0x0F120302,
- 0x0F120203,
- 0x0F120102,
- 0x0F120201,
- 0x0F120302,
- 0x0F120203,
- 0x0F120102,
- 0x0F120101,
- 0x0F120202,
- 0x0F120202,
- 0x0F120101,
- 0x0F120101,
- 0x0F120201,
- 0x0F120102,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
- 0x0F120101,
-
- /* Slow AE */
- 0x002A1568,
- 0x0F120010, /*ae_GainIn_0_ */
- 0x0F120020, /*ae_GainIn_1_ */
- 0x0F120040, /*ae_GainIn_2_ */
- 0x0F120080, /*ae_GainIn_3_ */
- 0x0F120100, /*ae_GainIn_4_ FIX */
- 0x0F120200, /*ae_GainIn_5_ */
- 0x0F120400, /*ae_GainIn_6_ */
- 0x0F120800, /*ae_GainIn_7_ */
- 0x0F120800, /*ae_GainIn_8_ */
- 0x0F120010, /*ae_GainOut_0_ */
- 0x0F120020, /*ae_GainOut_1_ */
- 0x0F120040, /*ae_GainOut_2_ */
- 0x0F120080, /*ae_GainOut_3_ */
- 0x0F120100, /*ae_GainOut_4_ FIX */
- 0x0F120200, /*ae_GainOut_5_ */
- 0x0F120400, /*ae_GainOut_6_ */
- 0x0F120800, /*ae_GainOut_7_ */
- 0x0F122000, /*ae_GainOut_8_ */
- 0x002A0544,
- 0x0F120111, /*lt_uLimitHigh */
- 0x0F1200EF, /*lt_uLimitLow */
- 0x002A0588,
- 0x0F120000, /*lt_uInitPostToleranceCnt */
- 0x002A0582,
- 0x0F120000, /*lt_uSlowFilterCoef */
- 0x002A0734, /*R*/
- 0x0F120000,
- 0x0F120001,
- 0x0F120006,
- 0x0F120017,
- 0x0F12004A,
- 0x0F1200C9,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
- 0x0F120000, /*G*/
- 0x0F120001,
- 0x0F120006,
- 0x0F120017,
- 0x0F12004A,
- 0x0F1200C9,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
- 0x0F120000, /*B*/
- 0x0F120001,
- 0x0F120006,
- 0x0F120017,
- 0x0F12004A,
- 0x0F1200C9,
- 0x0F120138,
- 0x0F120163,
- 0x0F120189,
- 0x0F1201C6,
- 0x0F1201F8,
- 0x0F120222,
- 0x0F120247,
- 0x0F120282,
- 0x0F1202B5,
- 0x0F12030F,
- 0x0F12035F,
- 0x0F1203A2,
- 0x0F1203D8,
- 0x0F1203FF,
-
- /* Slow AWB */
- 0x002A139A,
- 0x0F120258, /*awbb_GainsMaxMove */
-
- /* AWB Convergence Speed */
- 0x002A1464,
- 0x0F120008, /*awbb_WpFilterMinThr */
- 0x0F120190, /*awbb_WpFilterMaxThr */
- 0x0F1200A0, /*awbb_WpFilterCoef */
- 0x0F120004, /*awbb_WpFilterSize */
- 0x002A0938,
- 0x0F120000, /* on/off AFIT by NB option */
- 0x0F120014, /*SARR_uNormBrInDoor */
- 0x0F1200D2, /*SARR_uNormBrInDoor */
- 0x0F120384, /*SARR_uNormBrInDoor */
- 0x0F1207D0, /*SARR_uNormBrInDoor */
- 0x0F121388, /*SARR_uNormBrInDoor */
- 0x002A098C,
- 0x0F120000, /*7000098C//_BRIGHTNESS AFIT 0 */
- 0x0F120000, /*7000098E//_CONTRAST */
- 0x0F120000, /*70000990//_SATURATION */
- 0x0F120000, /*70000992//_SHARP_BLUR */
- 0x0F120000, /*70000994//_GLAMOUR */
- 0x0F1200C0, /*70000996//_bnr_edge_high */
- 0x0F120064, /*70000998//_postdmsc_iLowBright */
- 0x0F120384, /*7000099A//_postdmsc_iHighBright */
- 0x0F12005F, /*7000099C//_postdmsc_iLowSat */
- 0x0F1201F4, /*7000099E//_postdmsc_iHighSat */
- 0x0F120070, /*700009A0//_postdmsc_iTune */
- 0x0F120040, /*700009A2//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*700009A4//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*700009A6//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*700009A8//_yuvemix_mPosRanges_0 */
- 0x0F120040, /*700009AA//_yuvemix_mPosRanges_1 */
- 0x0F1200A0, /*700009AC//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*700009AE//_bnr_edge_low */
- 0x0F120201, /*700009B0//_bnr_repl_force */
- 0x0F120204, /*700009B2//_bnr_iHotThreshLow */
- 0x0F123604, /*700009B4//_bnr_iColdThreshLow */
- 0x0F12032A, /*700009B6//_bnr_DispTH_High */
- 0x0F120403, /*700009B8//_bnr_DISP_Limit_High */
- 0x0F121B06, /*700009BA//_bnr_iDistSigmaMax */
- 0x0F126015, /*700009BC//_bnr_iDiffSigmaHigh */
- 0x0F1200C0, /*700009BE//_bnr_iNormalizedSTD_Limit */
- 0x0F126080, /*700009C0//_bnr_iDirMinThres */
- 0x0F124080, /*700009C2//_bnr_iDirFltDiffThresLow */
- 0x0F120640, /*700009C4//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*700009C6//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*700009C8//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*700009CA//_bnr_iSlopeBlurStrength */
- 0x0F120000, /*700009CC//_bnr_AddNoisePower1 */
- 0x0F120400, /*700009CE//_bnr_iRadialTune */
- 0x0F12365A, /*700009D0//_bnr_iRadialLimit */
- 0x0F12102A, /*700009D2//_ee_iFSMagThHigh */
- 0x0F12000B, /*700009D4//_ee_iFSVarThHigh */
- 0x0F120600, /*700009D6//_ee_iFSThHigh */
- 0x0F125A0F, /*700009D8//_ee_iFSVarCountTh */
- 0x0F120505, /*700009DA//_ee_iRadialPower */
- 0x0F121802, /*700009DC//_ee_iROADThres */
- 0x0F120000, /*700009DE//_ee_iROADSubMaxNR */
- 0x0F122006, /*700009E0//_ee_iROADNeiThres */
- 0x0F123028, /*700009E2//_ee_iSmoothEdgeThres */
- 0x0F120418, /*700009E4//_ee_iWSharpen */
- 0x0F120101, /*700009E6//_ee_iWShThresh */
- 0x0F120800, /*700009E8//_ee_iEmbossCentAdd */
- 0x0F121804, /*700009EA//_ee_iReduceEdgeThresh */
- 0x0F124008, /*700009EC//_dmsc_iDesatThresh */
- 0x0F120540, /*700009EE//_dmsc_iDemBlurLow */
- 0x0F128006, /*700009F0//_dmsc_iDecisionThresh */
- 0x0F120020, /*700009F2//_dmsc_iMonochrom */
- 0x0F120000, /*700009F4//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*700009F6//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*700009F8//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*700009FA//_postdmsc_iBCoeff */
- 0x0F12000B, /*700009FC//_postdmsc_iWideMult */
- 0x0F120607, /*700009FE//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000A00//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000A02//_yuvemix_mPosSlopes_1 */
- 0x0F120705, /*70000A04//_yuvemix_mPosSlopes_3 */
- 0x0F120206, /*70000A06//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000A08//_yuviirnr_iHighYNorm */
- 0x0F120309, /*70000A0A//_yuviirnr_iHighUVNorm */
- 0x0F120305, /*70000A0C//_yuviirnr_iUVNormShift */
- 0x0F122006, /*70000A0E//_yuviirnr_iVertLength_UV */
- 0x0F121320, /*70000A10//_yuviirnr_iDiffThreshH_Y */
- 0x0F121014, /*70000A12//_yuviirnr_iDiffThreshH_UV */
- 0x0F121010, /*70000A14//_yuviirnr_iMaxThreshH_Y */
- 0x0F120C10, /*70000A16//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A0C, /*70000A18//_yuviirnr_iYNRStrengthH */
- 0x0F124A18, /*70000A1A//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000A1C//_RGBGamma2_iLinearity */
- 0x0F120350, /*70000A1E//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000A20//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000A22//_bnr_iClustMulT_H */
- 0x0F120101, /*70000A24//_bnr_iClustThresh_H */
- 0x0F122A36, /*70000A26//_bnr_iDenThreshLow */
- 0x0F126024, /*70000A28//_ee_iLowSharpPower */
- 0x0F122A36, /*70000A2A//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000A2C//_ee_iLowSharpClamp */
- 0x0F120808, /*70000A2E//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000A30//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000A32//_bnr_iClustMulT_C_Bin */
- 0x0F122701, /*70000A34//_bnr_iClustThresh_C_Bin */
- 0x0F12241E, /*70000A36//_bnr_iDenThreshHigh_Bin */
- 0x0F122E60, /*70000A38//_ee_iHighSharpPower_Bin */
- 0x0F12FF22, /*70000A3A//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000A3C//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000A3E//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000A40//_bnr_nClustLevel_C */
- 0x0F120000, /*70000A42//_BRIGHTNESS AFIT 1 */
- 0x0F120000, /*70000A44//_CONTRAST */
- 0x0F120000, /*70000A46//_SATURATION */
- 0x0F120000, /*70000A48//_SHARP_BLUR */
- 0x0F120000, /*70000A4A//_GLAMOUR */
- 0x0F1200C0, /*70000A4C//_bnr_edge_high */
- 0x0F120064, /*70000A4E//_postdmsc_iLowBright */
- 0x0F120384, /*70000A50//_postdmsc_iHighBright */
- 0x0F120051, /*70000A52//_postdmsc_iLowSat */
- 0x0F1201F4, /*70000A54//_postdmsc_iHighSat */
- 0x0F120070, /*70000A56//_postdmsc_iTune */
- 0x0F120040, /*70000A58//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*70000A5A//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*70000A5C//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*70000A5E//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*70000A60//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*70000A62//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*70000A64//_bnr_edge_low */
- 0x0F120201, /*70000A66//_bnr_repl_force */
- 0x0F120204, /*70000A68//_bnr_iHotThreshLow */
- 0x0F122404, /*70000A6A//_bnr_iColdThreshLow */
- 0x0F12031B, /*70000A6C//_bnr_DispTH_High */
- 0x0F120103, /*70000A6E//_bnr_DISP_Limit_High */
- 0x0F121205, /*70000A70//_bnr_iDistSigmaMax */
- 0x0F12400D, /*70000A72//_bnr_iDiffSigmaHigh */
- 0x0F120080, /*70000A74//_bnr_iNormalizedSTD_Limit */
- 0x0F121980, /*70000A76//_bnr_iDirMinThres */
- 0x0F12272E, /*70000A78//_bnr_iDirFltDiffThresLow */
- 0x0F120629, /*70000A7A//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*70000A7C//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*70000A7E//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*70000A80//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*70000A82//_bnr_AddNoisePower1 */
- 0x0F120300, /*70000A84//_bnr_iRadialTune */
- 0x0F12245A, /*70000A86//_bnr_iRadialLimit */
- 0x0F121018, /*70000A88//_ee_iFSMagThHigh */
- 0x0F12000B, /*70000A8A//_ee_iFSVarThHigh */
- 0x0F120B00, /*70000A8C//_ee_iFSThHigh */
- 0x0F125A0F, /*70000A8E//_ee_iFSVarCountTh */
- 0x0F120505, /*70000A90//_ee_iRadialPower */
- 0x0F121802, /*70000A92//_ee_iROADThres */
- 0x0F120000, /*70000A94//_ee_iROADSubMaxNR */
- 0x0F122006, /*70000A96//_ee_iROADNeiThres */
- 0x0F123828, /*70000A98//_ee_iSmoothEdgeThres */
- 0x0F120425, /*70000A9A//_ee_iWSharpen */
- 0x0F120101, /*70000A9C//_ee_iWShThresh */
- 0x0F120800, /*70000A9E//_ee_iEmbossCentAdd */
- 0x0F121004, /*70000AA0//_ee_iReduceEdgeThresh */
- 0x0F124008, /*70000AA2//_dmsc_iDesatThresh */
- 0x0F120540, /*70000AA4//_dmsc_iDemBlurLow */
- 0x0F128006, /*70000AA6//_dmsc_iDecisionThresh */
- 0x0F120020, /*70000AA8//_dmsc_iMonochrom */
- 0x0F120000, /*70000AAA//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*70000AAC//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*70000AAE//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*70000AB0//_postdmsc_iBCoeff */
- 0x0F12000B, /*70000AB2//_postdmsc_iWideMult */
- 0x0F120607, /*70000AB4//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000AB6//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000AB8//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*70000ABA//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*70000ABC//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000ABE//_yuviirnr_iHighYNorm */
- 0x0F120409, /*70000AC0//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*70000AC2//_yuviirnr_iUVNormShift */
- 0x0F120407, /*70000AC4//_yuviirnr_iVertLength_UV */
- 0x0F122204, /*70000AC6//_yuviirnr_iDiffThreshH_Y */
- 0x0F12021C, /*70000AC8//_yuviirnr_iDiffThreshH_UV */
- 0x0F121102, /*70000ACA//_yuviirnr_iMaxThreshH_Y */
- 0x0F120611, /*70000ACC//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*70000ACE//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*70000AD0//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000AD2//_RGBGamma2_iLinearity */
- 0x0F120374, /*70000AD4//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000AD6//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000AD8//_bnr_iClustMulT_H */
- 0x0F120101, /*70000ADA//_bnr_iClustThresh_H */
- 0x0F12141D, /*70000ADC//_bnr_iDenThreshLow */
- 0x0F126024, /*70000ADE//_ee_iLowSharpPower */
- 0x0F121217, /*70000AE0//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000AE2//_ee_iLowSharpClamp */
- 0x0F120808, /*70000AE4//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000AE6//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000AE8//_bnr_iClustMulT_C_Bin */
- 0x0F120001, /*70000AEA//_bnr_iClustThresh_C_Bin */
- 0x0F122400, /*70000AEC//_bnr_iDenThreshHigh_Bin */
- 0x0F121660, /*70000AEE//_ee_iHighSharpPower_Bin */
- 0x0F12FF10, /*70000AF0//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000AF2//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000AF4//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000AF6//_bnr_nClustLevel_C */
- 0x0F120000, /*70000AF8//_BRIGHTNESS AFIT 2 */
- 0x0F120000, /*70000AFA//_CONTRAST */
- 0x0F120000, /*70000AFC//_SATURATION */
- 0x0F120000, /*70000AFE//_SHARP_BLUR */
- 0x0F120000, /*70000B00//_GLAMOUR */
- 0x0F1200C0, /*70000B02//_bnr_edge_high */
- 0x0F120064, /*70000B04//_postdmsc_iLowBright */
- 0x0F120384, /*70000B06//_postdmsc_iHighBright */
- 0x0F120043, /*70000B08//_postdmsc_iLowSat */
- 0x0F1201F4, /*70000B0A//_postdmsc_iHighSat */
- 0x0F120070, /*70000B0C//_postdmsc_iTune */
- 0x0F120040, /*70000B0E//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*70000B10//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*70000B12//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*70000B14//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*70000B16//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*70000B18//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*70000B1A//_bnr_edge_low */
- 0x0F120201, /*70000B1C//_bnr_repl_force */
- 0x0F120204, /*70000B1E//_bnr_iHotThreshLow */
- 0x0F121B04, /*70000B20//_bnr_iColdThreshLow */
- 0x0F120312, /*70000B22//_bnr_DispTH_High */
- 0x0F120003, /*70000B24//_bnr_DISP_Limit_High */
- 0x0F120C03, /*70000B26//_bnr_iDistSigmaMax */
- 0x0F122806, /*70000B28//_bnr_iDiffSigmaHigh */
- 0x0F120060, /*70000B2A//_bnr_iNormalizedSTD_Limit */
- 0x0F121580, /*70000B2C//_bnr_iDirMinThres */
- 0x0F122020, /*70000B2E//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*70000B30//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*70000B32//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*70000B34//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*70000B36//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*70000B38//_bnr_AddNoisePower1 */
- 0x0F120300, /*70000B3A//_bnr_iRadialTune */
- 0x0F12145A, /*70000B3C//_bnr_iRadialLimit */
- 0x0F121010, /*70000B3E//_ee_iFSMagThHigh */
- 0x0F12000B, /*70000B40//_ee_iFSVarThHigh */
- 0x0F120E00, /*70000B42//_ee_iFSThHigh */
- 0x0F125A0F, /*70000B44//_ee_iFSVarCountTh */
- 0x0F120504, /*70000B46//_ee_iRadialPower */
- 0x0F121802, /*70000B48//_ee_iROADThres */
- 0x0F120000, /*70000B4A//_ee_iROADSubMaxNR */
- 0x0F122006, /*70000B4C//_ee_iROADNeiThres */
- 0x0F123828, /*70000B4E//_ee_iSmoothEdgeThres */
- 0x0F120428, /*70000B50//_ee_iWSharpen */
- 0x0F120101, /*70000B52//_ee_iWShThresh */
- 0x0F128000, /*70000B54//_ee_iEmbossCentAdd */
- 0x0F120A04, /*70000B56//_ee_iReduceEdgeThresh */
- 0x0F124008, /*70000B58//_dmsc_iDesatThresh */
- 0x0F120540, /*70000B5A//_dmsc_iDemBlurLow */
- 0x0F128006, /*70000B5C//_dmsc_iDecisionThresh */
- 0x0F120020, /*70000B5E//_dmsc_iMonochrom */
- 0x0F120000, /*70000B60//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*70000B62//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*70000B64//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*70000B66//_postdmsc_iBCoeff */
- 0x0F12000B, /*70000B68//_postdmsc_iWideMult */
- 0x0F120607, /*70000B6A//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000B6C//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000B6E//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*70000B70//_yuvemix_mPosSlopes_3 */
- 0x0F120207, /*70000B72//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000B74//_yuviirnr_iHighYNorm */
- 0x0F120409, /*70000B76//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*70000B78//_yuviirnr_iUVNormShift */
- 0x0F120407, /*70000B7A//_yuviirnr_iVertLength_UV */
- 0x0F122404, /*70000B7C//_yuviirnr_iDiffThreshH_Y */
- 0x0F120221, /*70000B7E//_yuviirnr_iDiffThreshH_UV */
- 0x0F121202, /*70000B80//_yuviirnr_iMaxThreshH_Y*/
- 0x0F120613, /*70000B82//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*70000B84//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*70000B86//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000B88//_RGBGamma2_iLinearity */
- 0x0F120080, /*70000B8A//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000B8C//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000B8E//_bnr_iClustMulT_H */
- 0x0F120101, /*70000B90//_bnr_iClustThresh_H */
- 0x0F12121B, /*70000B92//_bnr_iDenThreshLow */
- 0x0F126024, /*70000B94//_ee_iLowSharpPower */
- 0x0F120C0C, /*70000B96//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000B98//_ee_iLowSharpClamp */
- 0x0F120808, /*70000B9A//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000B9C//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000B9E//_bnr_iClustMulT_C_Bin */
- 0x0F120001, /*70000BA0//_bnr_iClustThresh_C_Bin */
- 0x0F122400, /*70000BA2//_bnr_iDenThreshHigh_Bin */
- 0x0F120460, /*70000BA4//_ee_iHighSharpPower_Bin */
- 0x0F12FF04, /*70000BA6//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000BA8//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000BAA//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000BAC//_bnr_nClustLevel_C */
- 0x0F120000, /*70000BAE//_BRIGHTNESS AFIT 3 */
- 0x0F120000, /*70000BB0//_CONTRAST */
- 0x0F120000, /*70000BB2//_SATURATION */
- 0x0F120000, /*70000BB4//_SHARP_BLUR */
- 0x0F120000, /*70000BB6//_GLAMOUR */
- 0x0F1200C0, /*70000BB8//_bnr_edge_high */
- 0x0F120064, /*70000BBA//_postdmsc_iLowBright */
- 0x0F120384, /*70000BBC//_postdmsc_iHighBright */
- 0x0F120032, /*70000BBE//_postdmsc_iLowSat */
- 0x0F1201F4, /*70000BC0//_postdmsc_iHighSat */
- 0x0F120070, /*70000BC2//_postdmsc_iTune */
- 0x0F120040, /*70000BC4//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*70000BC6//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*70000BC8//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*70000BCA//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*70000BCC//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*70000BCE//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*70000BD0//_bnr_edge_low */
- 0x0F120201, /*70000BD2//_bnr_repl_force */
- 0x0F120204, /*70000BD4//_bnr_iHotThreshLow */
- 0x0F121504, /*70000BD6//_bnr_iColdThreshLow */
- 0x0F12030F, /*70000BD8//_bnr_DispTH_High */
- 0x0F120003, /*70000BDA//_bnr_DISP_Limit_High */
- 0x0F120902, /*70000BDC//_bnr_iDistSigmaMax */
- 0x0F122004, /*70000BDE//_bnr_iDiffSigmaHigh */
- 0x0F120050, /*70000BE0//_bnr_iNormalizedSTD_Limit */
- 0x0F121140, /*70000BE2//_bnr_iDirMinThres */
- 0x0F12201C, /*70000BE4//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*70000BE6//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*70000BE8//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*70000BEA//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*70000BEC//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*70000BEE//_bnr_AddNoisePower1 */
- 0x0F120300, /*70000BF0//_bnr_iRadialTune */
- 0x0F12145A, /*70000BF2//_bnr_iRadialLimit */
- 0x0F121010, /*70000BF4//_ee_iFSMagThHigh */
- 0x0F12000B, /*70000BF6//_ee_iFSVarThHigh */
- 0x0F121000, /*70000BF8//_ee_iFSThHigh */
- 0x0F125A0F, /*70000BFA//_ee_iFSVarCountTh */
- 0x0F120503, /*70000BFC//_ee_iRadialPower */
- 0x0F121802, /*70000BFE//_ee_iROADThres */
- 0x0F120000, /*70000C00//_ee_iROADSubMaxNR */
- 0x0F122006, /*70000C02//_ee_iROADNeiThres */
- 0x0F123C28, /*70000C04//_ee_iSmoothEdgeThres */
- 0x0F12042C, /*70000C06//_ee_iWSharpen */
- 0x0F120101, /*70000C08//_ee_iWShThresh */
- 0x0F12FF00, /*70000C0A//_ee_iEmbossCentAdd */
- 0x0F120904, /*70000C0C//_ee_iReduceEdgeThresh */
- 0x0F124008, /*70000C0E//_dmsc_iDesatThresh */
- 0x0F120540, /*70000C10//_dmsc_iDemBlurLow */
- 0x0F128006, /*70000C12//_dmsc_iDecisionThresh */
- 0x0F120020, /*70000C14//_dmsc_iMonochrom */
- 0x0F120000, /*70000C16//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*70000C18//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*70000C1A//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*70000C1C//_postdmsc_iBCoeff */
- 0x0F12000B, /*70000C1E//_postdmsc_iWideMult */
- 0x0F120607, /*70000C20//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000C22//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000C24//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*70000C26//_yuvemix_mPosSlopes_3 */
- 0x0F120206, /*70000C28//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000C2A//_yuviirnr_iHighYNorm */
- 0x0F120409, /*70000C2C//_yuviirnr_iHighUVNorm */
- 0x0F120305, /*70000C2E//_yuviirnr_iUVNormShift */
- 0x0F120406, /*70000C30//_yuviirnr_iVertLength_UV */
- 0x0F122804, /*70000C32//_yuviirnr_iDiffThreshH_Y */
- 0x0F120228, /*70000C34//_yuviirnr_iDiffThreshH_UV */
- 0x0F121402, /*70000C36//_yuviirnr_iMaxThreshH_Y */
- 0x0F120618, /*70000C38//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*70000C3A//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*70000C3C//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000C3E//_RGBGamma2_iLinearity */
- 0x0F120080, /*70000C40//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000C42//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000C44//_bnr_iClustMulT_H */
- 0x0F120101, /*70000C46//_bnr_iClustThresh_H */
- 0x0F120F15, /*70000C48//_bnr_iDenThreshLow */
- 0x0F126024, /*70000C4A//_ee_iLowSharpPower */
- 0x0F120A0A, /*70000C4C//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000C4E//_ee_iLowSharpClamp */
- 0x0F120808, /*70000C50//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000C52//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000C54//_bnr_iClustMulT_C_Bin */
- 0x0F120001, /*70000C56//_bnr_iClustThresh_C_Bin */
- 0x0F122400, /*70000C58//_bnr_iDenThreshHigh_Bin */
- 0x0F120260, /*70000C5A//_ee_iHighSharpPower_Bin */
- 0x0F12FF02, /*70000C5C//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000C5E//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000C60//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000C62//_bnr_nClustLevel_C */
- 0x0F120000, /*70000C64//_BRIGHTNESS AFIT 4 */
- 0x0F120000, /*70000C66//_CONTRAST */
- 0x0F120000, /*70000C68//_SATURATION */
- 0x0F120000, /*70000C6A//_SHARP_BLUR */
- 0x0F120000, /*70000C6C//_GLAMOUR */
- 0x0F1200C0, /*70000C6E//_bnr_edge_high */
- 0x0F120064, /*70000C70//_postdmsc_iLowBright */
- 0x0F120384, /*70000C72//_postdmsc_iHighBright */
- 0x0F120032, /*70000C74//_postdmsc_iLowSat */
- 0x0F1201F4, /*70000C76//_postdmsc_iHighSat */
- 0x0F120070, /*70000C78//_postdmsc_iTune */
- 0x0F120040, /*70000C7A//_yuvemix_mNegRanges_0 */
- 0x0F1200A0, /*70000C7C//_yuvemix_mNegRanges_1 */
- 0x0F120100, /*70000C7E//_yuvemix_mNegRanges_2 */
- 0x0F120010, /*70000C80//_yuvemix_mPosRanges_0 */
- 0x0F120060, /*70000C82//_yuvemix_mPosRanges_1 */
- 0x0F120100, /*70000C84//_yuvemix_mPosRanges_2 */
- 0x0F121430, /*70000C86//_bnr_edge_low */
- 0x0F120201, /*70000C88//_bnr_repl_force */
- 0x0F120204, /*70000C8A//_bnr_iHotThreshLow */
- 0x0F120F04, /*70000C8C//_bnr_iColdThreshLow */
- 0x0F12030C, /*70000C8E//_bnr_DispTH_High */
- 0x0F120003, /*70000C90//_bnr_DISP_Limit_High */
- 0x0F120602, /*70000C92//_bnr_iDistSigmaMax */
- 0x0F121803, /*70000C94//_bnr_iDiffSigmaHigh */
- 0x0F120040, /*70000C96//_bnr_iNormalizedSTD_Limit */
- 0x0F120E20, /*70000C98//_bnr_iDirMinThres */
- 0x0F122018, /*70000C9A//_bnr_iDirFltDiffThresLow */
- 0x0F120620, /*70000C9C//_bnr_iDirSmoothPowerLow */
- 0x0F120306, /*70000C9E//_bnr_iHighMaxSlopeAllowed */
- 0x0F122003, /*70000CA0//_bnr_iHighSlopeThresh */
- 0x0F12FF01, /*70000CA2//_bnr_iSlopeBlurStrength */
- 0x0F120404, /*70000CA4//_bnr_AddNoisePower1 */
- 0x0F120200, /*70000CA6//_bnr_iRadialTune */
- 0x0F12145A, /*70000CA8//_bnr_iRadialLimit */
- 0x0F121010, /*70000CAA//_ee_iFSMagThHigh */
- 0x0F12000B, /*70000CAC//_ee_iFSVarThHigh */
- 0x0F121200, /*70000CAE//_ee_iFSThHigh */
- 0x0F125A0F, /*70000CB0//_ee_iFSVarCountTh */
- 0x0F120502, /*70000CB2//_ee_iRadialPower */
- 0x0F121802, /*70000CB4//_ee_iROADThres */
- 0x0F120000, /*70000CB6//_ee_iROADSubMaxNR */
- 0x0F122006, /*70000CB8//_ee_iROADNeiThres */
- 0x0F124028, /*70000CBA//_ee_iSmoothEdgeThres */
- 0x0F120430, /*70000CBC//_ee_iWSharpen */
- 0x0F120101, /*70000CBE//_ee_iWShThresh */
- 0x0F12FF00, /*70000CC0//_ee_iEmbossCentAdd */
- 0x0F120804, /*70000CC2//_ee_iReduceEdgeThresh */
- 0x0F124008, /*70000CC4//_dmsc_iDesatThresh */
- 0x0F120540, /*70000CC6//_dmsc_iDemBlurLow */
- 0x0F128006, /*70000CC8//_dmsc_iDecisionThresh */
- 0x0F120020, /*70000CCA//_dmsc_iMonochrom */
- 0x0F120000, /*70000CCC//_dmsc_iGRDenoiseVal */
- 0x0F122000, /*70000CCE//_dmsc_iEdgeDesatThrLow */
- 0x0F120000, /*70000CD0//_dmsc_iNearGrayDesat */
- 0x0F121E10, /*70000CD2//_postdmsc_iBCoeff */
- 0x0F12000B, /*70000CD4//_postdmsc_iWideMult */
- 0x0F120607, /*70000CD6//_yuvemix_mNegSlopes_1 */
- 0x0F120005, /*70000CD8//_yuvemix_mNegSlopes_3 */
- 0x0F120607, /*70000CDA//_yuvemix_mPosSlopes_1 */
- 0x0F120405, /*70000CDC//_yuvemix_mPosSlopes_3 */
- 0x0F120205, /*70000CDE//_yuviirnr_iXSupportUV */
- 0x0F120304, /*70000CE0//_yuviirnr_iHighYNorm */
- 0x0F120409, /*70000CE2//_yuviirnr_iHighUVNorm */
- 0x0F120306, /*70000CE4//_yuviirnr_iUVNormShift */
- 0x0F120407, /*70000CE6//_yuviirnr_iVertLength_UV */
- 0x0F122C04, /*70000CE8//_yuviirnr_iDiffThreshH_Y */
- 0x0F12022C, /*70000CEA//_yuviirnr_iDiffThreshH_UV */
- 0x0F121402, /*70000CEC//_yuviirnr_iMaxThreshH_Y */
- 0x0F120618, /*70000CEE//_yuviirnr_iMaxThreshH_UV */
- 0x0F121A02, /*70000CF0//_yuviirnr_iYNRStrengthH */
- 0x0F128018, /*70000CF2//_yuviirnr_iUVNRStrengthH */
- 0x0F120080, /*70000CF4//_RGBGamma2_iLinearity */
- 0x0F120080, /*70000CF6//_ccm_oscar_iSaturation */
- 0x0F120180, /*70000CF8//_RGB2YUV_iRGBGain */
- 0x0F120A0A, /*70000CFA//_bnr_iClustMulT_H */
- 0x0F120101, /*70000CFC//_bnr_iClustThresh_H */
- 0x0F120C0F, /*70000CFE//_bnr_iDenThreshLow */
- 0x0F126024, /*70000D00//_ee_iLowSharpPower */
- 0x0F120808, /*70000D02//_ee_iLowShDenoise */
- 0x0F12FFFF, /*70000D04//_ee_iLowSharpClamp */
- 0x0F120808, /*70000D06//_ee_iReduceEdgeMinMult */
- 0x0F120A01, /*70000D08//_bnr_nClustLevel_H_Bin */
- 0x0F12010A, /*70000D0A//_bnr_iClustMulT_C_Bin */
- 0x0F120001, /*70000D0C//_bnr_iClustThresh_C_Bin */
- 0x0F122400, /*70000D0E//_bnr_iDenThreshHigh_Bin */
- 0x0F120060, /*70000D10//_ee_iHighSharpPower_Bin */
- 0x0F12FF00, /*70000D12//_ee_iHighShDenoise_Bin */
- 0x0F1240FF, /*70000D14//_ee_iHighSharpClamp_Bin */
- 0x0F120009, /*70000D16//_ee_iReduceEdgeSlope_Bin */
- 0x0F120001, /*70000D18//_bnr_nClustLevel_C */
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_800_Preview_EVT1[] = { /* 800 x 480 // */
- 0xFCFCD000,
- 0x00287000,
-
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin */
- 0x0F120060, /*senHal_uAddColsNoBin */
- 0x0F1205C0, /*senHal_uMinColsBin */
- 0x0F1205C0, /*senHal_uMinColsNoBin */
-
- 0x002A0250,
- 0x0F120A00, /*REG_TC_GP_PrevReqInputWidth //2560 */
- 0x0F120600, /*REG_TC_GP_PrevReqInputHeight //1536 */
- 0x0F120010, /*REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2*/
- 0x0F1200CC, /*REG_TC_GP_PrevInputHeightOfs/(1944-1536)/2*/
-
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
-
- 0x002A0494,
- 0x0F120A00, /*REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
- 0x0F120600, /*REG_TC_PZOOM_PrevZoomReqInputHeight //1536 */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
-
- 0x002A02A6,
- 0x0F120320, /*REG_0TC_PCFG_usWidth //800 */
- 0x0F1201E0, /*REG_0TC_PCFG_usHeight //480 */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_720_Preview_EVT1[] = { /* 720 x 480 */
- 0xFCFCD000,
- 0x00287000,
-
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin */
- 0x0F120060, /*senHal_uAddColsNoBin */
- 0x0F1205C0, /*senHal_uMinColsBin */
- 0x0F1205C0, /*senHal_uMinColsNoBin */
-
- 0x002A0250,
- 0x0F120A00, /*REG_TC_GP_PrevReqInputWidth //2560 */
- 0x0F1206A8, /*REG_TC_GP_PrevReqInputHeight //1704 */
- 0x0F120010, /*REG_TC_GP_PrevInputWidthOfs/(2592-2560)/2*/
- 0x0F120078, /*REG_TC_GP_PrevInputHeightOfs //(1944-1704)/2*/
-
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
-
- 0x002A0494,
- 0x0F120A00, /*REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
- 0x0F1206A8, /*REG_TC_PZOOM_PrevZoomReqInputHeight //1704 */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
-
- 0x002A02A6,
- 0x0F1202D0, /*REG_0TC_PCFG_usWidth //720 */
- 0x0F1201E0, /*REG_0TC_PCFG_usHeight //480 */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-};
-
-static const u32 s5k4ecgx_640_Preview_EVT1[] = { /* 640 x 480 */
- 0xFCFCD000,
- 0x00287000,
-
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin */
- 0x0F120060, /*senHal_uAddColsNoBin */
- 0x0F1205C0, /*senHal_uMinColsBin */
- 0x0F1205C0, /*senHal_uMinColsNoBin */
-
- 0x002A0250,
- 0x0F120A00, /*REG_TC_GP_PrevReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_PrevReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_PrevInputWidthOfs/(2592-2560)/2*/
- 0x0F12000C, /*REG_TC_GP_PrevInputHeightOfs/(1944-1920)/2*/
-
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
-
- 0x002A0494,
- 0x0F120A00, /*REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
-
- 0x002A02A6,
- 0x0F120280, /*REG_0TC_PCFG_usWidth //640 */
- 0x0F1201E0, /*REG_0TC_PCFG_usHeight //480 */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_352_Preview_EVT1[] = { /* 352 x 288 */
- 0xFCFCD000,
- 0x00287000,
-
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin */
- 0x0F120060, /*senHal_uAddColsNoBin */
- 0x0F1205C0, /*senHal_uMinColsBin */
- 0x0F1205C0, /*senHal_uMinColsNoBin */
-
- 0x002A0250,
- 0x0F120928, /*REG_TC_GP_PrevReqInputWidth //2344 */
- 0x0F120780, /*REG_TC_GP_PrevReqInputHeight //1920 */
- 0x0F12007C, /*REG_TC_GP_PrevInputWidthOfs //(2592-2344)/2 */
- 0x0F12000C, /*REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2 */
-
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
-
- 0x002A0494,
- 0x0F120928, /*REG_TC_PZOOM_PrevZoomReqInputWidth //2344 */
- 0x0F120780, /*REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
-
- 0x002A02A6,
- 0x0F120160, /*REG_0TC_PCFG_usWidth //352 */
- 0x0F120120, /*REG_0TC_PCFG_usHeight //288 */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_320_Preview_EVT1[] = { /* 320 x 240 */
- 0xFCFCD000,
- 0x00287000,
-
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin */
- 0x0F120060, /*senHal_uAddColsNoBin */
- 0x0F1205C0, /*senHal_uMinColsBin */
- 0x0F1205C0, /*senHal_uMinColsNoBin */
-
- 0x002A0250,
- 0x0F120A00, /*REG_TC_GP_PrevReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_GP_PrevReqInputHeight //1920 */
- 0x0F120010, /*REG_TC_GP_PrevInputWidthOfs //(2592-2560)/2 */
- 0x0F12000C, /*REG_TC_GP_PrevInputHeightOfs //(1944-1920)/2*/
-
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
-
- 0x002A0494,
- 0x0F120A00, /*REG_TC_PZOOM_PrevZoomReqInputWidth //2560 */
- 0x0F120780, /*REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
-
- 0x002A02A6,
- 0x0F120140, /*REG_0TC_PCFG_usWidth //320 */
- 0x0F1200F0, /*REG_0TC_PCFG_usHeight //240 */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-
-};
-
-static const u32 s5k4ecgx_176_Preview_EVT1[] = { /* 176 x 144 */
- 0xFCFCD000,
- 0x00287000,
-
- 0x002A18AC,
- 0x0F120060, /*senHal_uAddColsBin */
- 0x0F120060, /*senHal_uAddColsNoBin */
- 0x0F1205C0, /*senHal_uMinColsBin */
- 0x0F1205C0, /*senHal_uMinColsNoBin */
-
- 0x002A0250,
- 0x0F120928, /*REG_TC_GP_PrevReqInputWidth //2344 */
- 0x0F120780, /*REG_TC_GP_PrevReqInputHeight //1920 */
- 0x0F12007C, /*REG_TC_GP_PrevInputWidthOfs //(2592-2344)/2 */
- 0x0F12000C,/*REG_TC_GP_PrevInputHeightOfs/(1944-1920)/2*/
-
- 0x002A0262,
- 0x0F120001, /*REG_TC_GP_bUseReqInputInPre */
-
- 0x002A0494,
- 0x0F120928, /*REG_TC_PZOOM_PrevZoomReqInputWidth //2344 */
- 0x0F120780, /*REG_TC_PZOOM_PrevZoomReqInputHeight //1920 */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputWidthOfs */
- 0x0F120000, /*REG_TC_PZOOM_PrevZoomReqInputHeightOfs */
-
- 0x002A02A6,
- 0x0F1200B0, /*REG_0TC_PCFG_usWidth //176 */
- 0x0F120090, /*REG_0TC_PCFG_usHeight //144 */
-
- 0x002A0266,
- 0x0F120000, /*REG_TC_GP_ActivePrevConfig */
- 0x002A026A,
- 0x0F120001, /*REG_TC_GP_PrevOpenAfterChange */
- 0x002A024E,
- 0x0F120001, /*REG_TC_GP_NewConfigSync */
- 0x002A0268,
- 0x0F120001, /*REG_TC_GP_PrevConfigChanged */
-};
-
-/* Zoom set for 320,176*/
-static const u32 s5k4ecgx_X4_Zoom_0_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120100,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X4_Zoom_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120120,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X4_Zoom_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120140,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X4_Zoom_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120160,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X4_Zoom_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120180,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X4_Zoom_5_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F1201A0,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X4_Zoom_6_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F1201C0,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X4_Zoom_7_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F1201E0,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X4_Zoom_8_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120200,
- 0x002A04A4,
- 0x0F120005,
-};
-
-/* Zoom set for 1280 x 640*/
-static const u32 s5k4ecgx_X2_Zoom_0_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120100,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X2_Zoom_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120120,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X2_Zoom_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120140,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X2_Zoom_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120160,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X2_Zoom_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120180,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X2_Zoom_5_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F1201A0,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X2_Zoom_6_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F1201C0,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X2_Zoom_7_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F1201E0,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X2_Zoom_8_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120200,
- 0x002A04A4,
- 0x0F120005,
-};
-
-/* Zoom set for 720*/
-static const u32 s5k4ecgx_X1_77_Zoom_0_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120100,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_77_Zoom_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120118,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_77_Zoom_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120130,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_77_Zoom_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120148,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_77_Zoom_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120160,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_77_Zoom_5_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120178,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_77_Zoom_6_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120190,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_77_Zoom_7_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F1201A8,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_77_Zoom_8_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F1201C5,
- 0x002A04A4,
- 0x0F120005,
-};
-
-/* Zoom set for 1600 */
-static const u32 s5k4ecgx_X1_6_Zoom_0_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120100,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_6_Zoom_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120113,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_6_Zoom_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120126,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_6_Zoom_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120139,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_6_Zoom_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F12014C,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_6_Zoom_5_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F12015F,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_6_Zoom_6_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120172,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_6_Zoom_7_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120185,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_6_Zoom_8_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F12019A,
- 0x002A04A4,
- 0x0F120005,
-};
-
-/* Zoom set for 2048 */
-static const u32 s5k4ecgx_X1_25_Zoom_0_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120100,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_25_Zoom_1_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120108,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_25_Zoom_2_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120110,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_25_Zoom_3_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120118,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_25_Zoom_4_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120120,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_25_Zoom_5_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120128,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_25_Zoom_6_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120130,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_25_Zoom_7_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120138,
- 0x002A04A4,
- 0x0F120005,
-};
-
-static const u32 s5k4ecgx_X1_25_Zoom_8_EVT1[] = {
- 0xFCFCD000,
- 0x00287000,
- 0x002A048E,
- 0x0F120140,
- 0x002A04A4,
- 0x0F120005,
-};
-
-#endif /* __S5K4ECGX_SETFILE_H */