GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
ifneq ($(MCU), )
|
||||
include Makefile.riscv
|
||||
else
|
||||
include Makefile.linux
|
||||
endif
|
||||
@@ -0,0 +1,20 @@
|
||||
ISP_DIR := $(shell cd ../.. && /bin/pwd)
|
||||
SDK_DIR ?= $(shell cd $(ISP_DIR)/../../../.. && /bin/pwd)
|
||||
|
||||
include $(SDK_DIR)/build/base.mk
|
||||
include $(ISP_DIR)/sensor/plat.mk
|
||||
|
||||
LIB_NAME := libsns_sc4336p
|
||||
|
||||
SRCS := $(wildcard *.c)
|
||||
|
||||
SDK_USR_CFLAGS += -I$(GMP_DIR)/include
|
||||
SDK_USR_CFLAGS += -I$(GMP_DIR)/usr/include
|
||||
SDK_USR_CFLAGS += -I$(ISP_DIR)/include
|
||||
SDK_USR_CFLAGS += -I$(ISP_DIR)/../include
|
||||
SDK_USR_CFLAGS += -I.
|
||||
AT := @
|
||||
|
||||
$(info SRCS=$(SRCS))
|
||||
|
||||
include $(SDK_DIR)/build/sdk_lib_rules.mk
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
SRCS-y += sc4336p.c
|
||||
SRCS-y += sc4336p_ctrl.c
|
||||
|
||||
+1371
File diff suppressed because it is too large
Load Diff
+48
@@ -0,0 +1,48 @@
|
||||
#ifndef __SC4336P_H__
|
||||
#define __SC4336P_H__
|
||||
|
||||
#include "sns_comm.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* sensor fps mode */
|
||||
#define SC4336P_FULL_LINES_MAX 0x7FFF
|
||||
#define SC4336P_VMAX_4M_LINEAR 1500
|
||||
#define SC4336P_FRAME_RATE_MIN 0x34BC
|
||||
#define SC4336P_EXP_OFFSET_LINEAR 10
|
||||
|
||||
#define SC4336P_S_EXP_MAX_DEFAULT_1440P 0xcc
|
||||
|
||||
// the value of the sc4336p exposure register is in half line units, (<< 1) for AE calculation, (>> 1) for EXP reg
|
||||
#define SC4336P_EXP_SHIFT 1
|
||||
|
||||
#define SC4336P_REG_ADDR_EXP_H 0x3e00
|
||||
#define SC4336P_REG_ADDR_EXP_M 0x3e01
|
||||
#define SC4336P_REG_ADDR_EXP_L 0x3e02
|
||||
#define SC4336P_REG_ADDR_AGAIN_H 0x3e08
|
||||
#define SC4336P_REG_ADDR_AGAIN_L 0x3e09
|
||||
#define SC4336P_REG_ADDR_DGAIN_H 0x3e06
|
||||
#define SC4336P_REG_ADDR_DGAIN_L 0x3e07
|
||||
#define SC4336P_REG_ADDR_VMAX_H 0x320e
|
||||
#define SC4336P_REG_ADDR_VMAX_L 0x320f
|
||||
|
||||
typedef enum {
|
||||
SC4336P_REG_EXP_H = 0,
|
||||
SC4336P_REG_EXP_M,
|
||||
SC4336P_REG_EXP_L,
|
||||
SC4336P_REG_AGAIN_H,
|
||||
SC4336P_REG_AGAIN_L,
|
||||
SC4336P_REG_DGAIN_H,
|
||||
SC4336P_REG_DGAIN_L,
|
||||
SC4336P_REG_VMAX_H,
|
||||
SC4336P_REG_VMAX_L,
|
||||
SC4336P_REG_L_MAX_NUM,
|
||||
} sc4336p_reg_info;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __SC4336P_H__
|
||||
+374
@@ -0,0 +1,374 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "i2c_dev.h"
|
||||
#include "sc4336p.h"
|
||||
#include "sc4336p_ctrl.h"
|
||||
|
||||
static xmedia_s32 g_sc4336p_i2c_addr[XMEDIA_SENSOR_DEV_MAX_NUM] =
|
||||
{ [0 ...(XMEDIA_SENSOR_DEV_MAX_NUM - 1)] = SENSOR_I2C_INVALID };
|
||||
static xmedia_s32 g_sc4336p_i2c_fd[XMEDIA_SENSOR_DEV_MAX_NUM] =
|
||||
{ [0 ...(XMEDIA_SENSOR_DEV_MAX_NUM - 1)] = SENSOR_I2C_INVALID };
|
||||
#define SC4336P_REG_ADDR_MIRROR_FLIP 0x3221
|
||||
|
||||
/*
|
||||
* 函数功能: sc4336p MIPI 2lane 1440p线性模式初始化序列 - 2560x1440x30fps
|
||||
* 函数参数:
|
||||
* dev - sensor 设备号
|
||||
* 返回值:
|
||||
*
|
||||
*/
|
||||
static xmedia_s32 sc4336p_2lane_linear_2560x1440_init(xmedia_u32 dev)
|
||||
{
|
||||
xmedia_s32 ret = XMEDIA_SUCCESS;
|
||||
|
||||
ret |= sc4336p_write_reg(dev, 0x0103, 0x01);
|
||||
ret |= sc4336p_write_reg(dev, 0x36e9, 0x80);
|
||||
ret |= sc4336p_write_reg(dev, 0x37f9, 0x80);
|
||||
ret |= sc4336p_write_reg(dev, 0x301f, 0x01);
|
||||
ret |= sc4336p_write_reg(dev, 0x30b8, 0x44);
|
||||
ret |= sc4336p_write_reg(dev, 0x3028, 0x37);
|
||||
ret |= sc4336p_write_reg(dev, 0x3250, 0xff);
|
||||
ret |= sc4336p_write_reg(dev, 0x3253, 0x10);
|
||||
ret |= sc4336p_write_reg(dev, 0x3301, 0x0a);
|
||||
ret |= sc4336p_write_reg(dev, 0x3302, 0xff);
|
||||
ret |= sc4336p_write_reg(dev, 0x3305, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x3306, 0x90);
|
||||
ret |= sc4336p_write_reg(dev, 0x3308, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x330a, 0x01);
|
||||
ret |= sc4336p_write_reg(dev, 0x330b, 0xb0);
|
||||
ret |= sc4336p_write_reg(dev, 0x330d, 0xf0);
|
||||
ret |= sc4336p_write_reg(dev, 0x3314, 0x14);
|
||||
ret |= sc4336p_write_reg(dev, 0x3333, 0x10);
|
||||
ret |= sc4336p_write_reg(dev, 0x3334, 0x40);
|
||||
ret |= sc4336p_write_reg(dev, 0x335e, 0x06);
|
||||
ret |= sc4336p_write_reg(dev, 0x335f, 0x0a);
|
||||
ret |= sc4336p_write_reg(dev, 0x3364, 0x5e);
|
||||
ret |= sc4336p_write_reg(dev, 0x337d, 0x0e);
|
||||
ret |= sc4336p_write_reg(dev, 0x338f, 0x20);
|
||||
ret |= sc4336p_write_reg(dev, 0x3390, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x3391, 0x09);
|
||||
ret |= sc4336p_write_reg(dev, 0x3392, 0x0f);
|
||||
ret |= sc4336p_write_reg(dev, 0x3393, 0x18);
|
||||
ret |= sc4336p_write_reg(dev, 0x3394, 0x60);
|
||||
ret |= sc4336p_write_reg(dev, 0x3395, 0xff);
|
||||
ret |= sc4336p_write_reg(dev, 0x3396, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x3397, 0x09);
|
||||
ret |= sc4336p_write_reg(dev, 0x3398, 0x0f);
|
||||
ret |= sc4336p_write_reg(dev, 0x3399, 0x0a);
|
||||
ret |= sc4336p_write_reg(dev, 0x339a, 0x18);
|
||||
ret |= sc4336p_write_reg(dev, 0x339b, 0x60);
|
||||
ret |= sc4336p_write_reg(dev, 0x339c, 0xff);
|
||||
ret |= sc4336p_write_reg(dev, 0x33a2, 0x04);
|
||||
ret |= sc4336p_write_reg(dev, 0x33ad, 0x0c);
|
||||
ret |= sc4336p_write_reg(dev, 0x33b2, 0x40);
|
||||
ret |= sc4336p_write_reg(dev, 0x33b3, 0x30);
|
||||
ret |= sc4336p_write_reg(dev, 0x33f8, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x33f9, 0xb0);
|
||||
ret |= sc4336p_write_reg(dev, 0x33fa, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x33fb, 0xf8);
|
||||
ret |= sc4336p_write_reg(dev, 0x33fc, 0x09);
|
||||
ret |= sc4336p_write_reg(dev, 0x33fd, 0x1f);
|
||||
ret |= sc4336p_write_reg(dev, 0x349f, 0x03);
|
||||
ret |= sc4336p_write_reg(dev, 0x34a6, 0x09);
|
||||
ret |= sc4336p_write_reg(dev, 0x34a7, 0x1f);
|
||||
ret |= sc4336p_write_reg(dev, 0x34a8, 0x28);
|
||||
ret |= sc4336p_write_reg(dev, 0x34a9, 0x28);
|
||||
ret |= sc4336p_write_reg(dev, 0x34aa, 0x01);
|
||||
ret |= sc4336p_write_reg(dev, 0x34ab, 0xe0);
|
||||
ret |= sc4336p_write_reg(dev, 0x34ac, 0x02);
|
||||
ret |= sc4336p_write_reg(dev, 0x34ad, 0x28);
|
||||
ret |= sc4336p_write_reg(dev, 0x34f8, 0x1f);
|
||||
ret |= sc4336p_write_reg(dev, 0x34f9, 0x20);
|
||||
ret |= sc4336p_write_reg(dev, 0x3630, 0xc0);
|
||||
ret |= sc4336p_write_reg(dev, 0x3631, 0x84);
|
||||
ret |= sc4336p_write_reg(dev, 0x3632, 0x54);
|
||||
ret |= sc4336p_write_reg(dev, 0x3633, 0x44);
|
||||
ret |= sc4336p_write_reg(dev, 0x3637, 0x49);
|
||||
ret |= sc4336p_write_reg(dev, 0x363f, 0xc0);
|
||||
ret |= sc4336p_write_reg(dev, 0x3641, 0x28);
|
||||
ret |= sc4336p_write_reg(dev, 0x3670, 0x56);
|
||||
ret |= sc4336p_write_reg(dev, 0x3674, 0xb0);
|
||||
ret |= sc4336p_write_reg(dev, 0x3675, 0xa0);
|
||||
ret |= sc4336p_write_reg(dev, 0x3676, 0xa0);
|
||||
ret |= sc4336p_write_reg(dev, 0x3677, 0x84);
|
||||
ret |= sc4336p_write_reg(dev, 0x3678, 0x88);
|
||||
ret |= sc4336p_write_reg(dev, 0x3679, 0x8d);
|
||||
ret |= sc4336p_write_reg(dev, 0x367c, 0x09);
|
||||
ret |= sc4336p_write_reg(dev, 0x367d, 0x0b);
|
||||
ret |= sc4336p_write_reg(dev, 0x367e, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x367f, 0x0f);
|
||||
ret |= sc4336p_write_reg(dev, 0x3696, 0x24);
|
||||
ret |= sc4336p_write_reg(dev, 0x3697, 0x34);
|
||||
ret |= sc4336p_write_reg(dev, 0x3698, 0x34);
|
||||
ret |= sc4336p_write_reg(dev, 0x36a0, 0x0f);
|
||||
ret |= sc4336p_write_reg(dev, 0x36a1, 0x1f);
|
||||
ret |= sc4336p_write_reg(dev, 0x36b0, 0x81);
|
||||
ret |= sc4336p_write_reg(dev, 0x36b1, 0x83);
|
||||
ret |= sc4336p_write_reg(dev, 0x36b2, 0x85);
|
||||
ret |= sc4336p_write_reg(dev, 0x36b3, 0x8b);
|
||||
ret |= sc4336p_write_reg(dev, 0x36b4, 0x09);
|
||||
ret |= sc4336p_write_reg(dev, 0x36b5, 0x0b);
|
||||
ret |= sc4336p_write_reg(dev, 0x36b6, 0x0f);
|
||||
ret |= sc4336p_write_reg(dev, 0x370f, 0x01);
|
||||
ret |= sc4336p_write_reg(dev, 0x3722, 0x09);
|
||||
ret |= sc4336p_write_reg(dev, 0x3724, 0x21);
|
||||
ret |= sc4336p_write_reg(dev, 0x3771, 0x09);
|
||||
ret |= sc4336p_write_reg(dev, 0x3772, 0x05);
|
||||
ret |= sc4336p_write_reg(dev, 0x3773, 0x05);
|
||||
ret |= sc4336p_write_reg(dev, 0x377a, 0x0f);
|
||||
ret |= sc4336p_write_reg(dev, 0x377b, 0x1f);
|
||||
ret |= sc4336p_write_reg(dev, 0x3905, 0x8c);
|
||||
ret |= sc4336p_write_reg(dev, 0x391d, 0x02);
|
||||
ret |= sc4336p_write_reg(dev, 0x391f, 0x49);
|
||||
ret |= sc4336p_write_reg(dev, 0x3926, 0x21);
|
||||
ret |= sc4336p_write_reg(dev, 0x3933, 0x80);
|
||||
ret |= sc4336p_write_reg(dev, 0x3934, 0x03);
|
||||
ret |= sc4336p_write_reg(dev, 0x3937, 0x7b);
|
||||
ret |= sc4336p_write_reg(dev, 0x3939, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x393a, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x39dc, 0x02);
|
||||
ret |= sc4336p_write_reg(dev, 0x3e00, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x3e01, 0x5d);
|
||||
ret |= sc4336p_write_reg(dev, 0x3e02, 0x40);
|
||||
ret |= sc4336p_write_reg(dev, 0x440d, 0x10);
|
||||
ret |= sc4336p_write_reg(dev, 0x440e, 0x01);
|
||||
ret |= sc4336p_write_reg(dev, 0x4509, 0x28);
|
||||
ret |= sc4336p_write_reg(dev, 0x450d, 0x32);
|
||||
ret |= sc4336p_write_reg(dev, 0x5000, 0x06);
|
||||
ret |= sc4336p_write_reg(dev, 0x5780, 0x76);
|
||||
ret |= sc4336p_write_reg(dev, 0x5784, 0x10);
|
||||
ret |= sc4336p_write_reg(dev, 0x5785, 0x04);
|
||||
ret |= sc4336p_write_reg(dev, 0x5787, 0x0a);
|
||||
ret |= sc4336p_write_reg(dev, 0x5788, 0x0a);
|
||||
ret |= sc4336p_write_reg(dev, 0x5789, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x578a, 0x0a);
|
||||
ret |= sc4336p_write_reg(dev, 0x578b, 0x0a);
|
||||
ret |= sc4336p_write_reg(dev, 0x578c, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x578d, 0x40);
|
||||
ret |= sc4336p_write_reg(dev, 0x5790, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x5791, 0x04);
|
||||
ret |= sc4336p_write_reg(dev, 0x5792, 0x04);
|
||||
ret |= sc4336p_write_reg(dev, 0x5793, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x5794, 0x04);
|
||||
ret |= sc4336p_write_reg(dev, 0x5795, 0x04);
|
||||
ret |= sc4336p_write_reg(dev, 0x5799, 0x46);
|
||||
ret |= sc4336p_write_reg(dev, 0x579a, 0x77);
|
||||
ret |= sc4336p_write_reg(dev, 0x57a1, 0x04);
|
||||
ret |= sc4336p_write_reg(dev, 0x57a8, 0xd2);
|
||||
ret |= sc4336p_write_reg(dev, 0x57aa, 0x2a);
|
||||
ret |= sc4336p_write_reg(dev, 0x57ab, 0x7f);
|
||||
ret |= sc4336p_write_reg(dev, 0x57ac, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x57ad, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x57d9, 0x46);
|
||||
ret |= sc4336p_write_reg(dev, 0x57da, 0x77);
|
||||
ret |= sc4336p_write_reg(dev, 0x59e2, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x59e3, 0x03);
|
||||
ret |= sc4336p_write_reg(dev, 0x59e4, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x59e5, 0x10);
|
||||
ret |= sc4336p_write_reg(dev, 0x59e6, 0x06);
|
||||
ret |= sc4336p_write_reg(dev, 0x59e7, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x59e8, 0x08);
|
||||
ret |= sc4336p_write_reg(dev, 0x59e9, 0x02);
|
||||
ret |= sc4336p_write_reg(dev, 0x59ea, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x59eb, 0x10);
|
||||
ret |= sc4336p_write_reg(dev, 0x59ec, 0x04);
|
||||
ret |= sc4336p_write_reg(dev, 0x59ed, 0x00);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae0, 0xfe);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae1, 0x40);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae2, 0x38);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae3, 0x30);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae4, 0x28);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae5, 0x38);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae6, 0x30);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae7, 0x28);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae8, 0x3f);
|
||||
ret |= sc4336p_write_reg(dev, 0x5ae9, 0x34);
|
||||
ret |= sc4336p_write_reg(dev, 0x5aea, 0x2c);
|
||||
ret |= sc4336p_write_reg(dev, 0x5aeb, 0x3f);
|
||||
ret |= sc4336p_write_reg(dev, 0x5aec, 0x34);
|
||||
ret |= sc4336p_write_reg(dev, 0x5aed, 0x2c);
|
||||
ret |= sc4336p_write_reg(dev, 0x36e9, 0x44);
|
||||
ret |= sc4336p_write_reg(dev, 0x37f9, 0x44);
|
||||
ret |= sc4336p_write_reg(dev, 0x0100, 0x01);
|
||||
|
||||
if (ret != XMEDIA_SUCCESS) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "sc4336p_write_reg failed\n");
|
||||
return XMEDIA_FAILURE;
|
||||
} else {
|
||||
SENSOR_PRINT("=================================================================================\n");
|
||||
SENSOR_PRINT("========= SC4336P_27MInput_MIPI_2lane_10bit_2560x1440_30fps init success!========\n");
|
||||
SENSOR_PRINT("=================================================================================\n");
|
||||
return XMEDIA_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
SENSOR_PRIORITY_FUNC static xmedia_void sc4336p_slave_init(xmedia_u32 dev)
|
||||
{
|
||||
sc4336p_write_reg(dev, 0x0100, 0x00);
|
||||
sc4336p_write_reg(dev, 0x301f, 0x0a);
|
||||
sc4336p_write_reg(dev, 0x3222, 0x01);//slave fsync
|
||||
sc4336p_write_reg(dev, 0x300a, 0x22);
|
||||
sc4336p_write_reg(dev, 0x3224, 0x92);
|
||||
sc4336p_write_reg(dev, 0x0100, 0x01);
|
||||
|
||||
SENSOR_PRINT("====== SC4336P slave setting init success!=======\n");
|
||||
}
|
||||
|
||||
xmedia_s32 sc4336p_init_image(xmedia_u32 dev, xmedia_u8 image_mode, xmedia_sensor_work_mode work_mode)
|
||||
{
|
||||
xmedia_s32 ret = XMEDIA_SUCCESS;
|
||||
|
||||
switch(image_mode) {
|
||||
case SC4336P_4M_30FPS_10BIT_LINEAR_MODE:
|
||||
ret = sc4336p_2lane_linear_2560x1440_init(dev);
|
||||
break;
|
||||
|
||||
default:
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "Not support, please check image param!\n");
|
||||
return XMEDIA_ERRCODE_NOT_SUPPORT;
|
||||
}
|
||||
|
||||
if (work_mode == XMEDIA_SENSOR_WORK_MODE_SLAVE) {
|
||||
sc4336p_slave_init(dev);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
SENSOR_PRIORITY_FUNC xmedia_s32 sc4336p_set_slave_addr(xmedia_u32 dev, xmedia_u32 slave_addr)
|
||||
{
|
||||
xmedia_s32 ret;
|
||||
|
||||
if (g_sc4336p_i2c_fd[dev] < 0) {
|
||||
SENSOR_PRINT("Sensor dev [%d], i2c not open. please init i2c at first.\n", dev);
|
||||
return XMEDIA_ERRCODE_NOT_INIT;
|
||||
}
|
||||
|
||||
ret = i2c_set_slave_addr(g_sc4336p_i2c_fd[dev], slave_addr);
|
||||
if (ret < 0) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "I2C_SLAVE_FORCE error!\n");
|
||||
i2c_close(g_sc4336p_i2c_fd[dev]);
|
||||
g_sc4336p_i2c_fd[dev] = SENSOR_I2C_INVALID;
|
||||
return XMEDIA_FAILURE;
|
||||
}
|
||||
|
||||
g_sc4336p_i2c_addr[dev] = slave_addr;
|
||||
SENSOR_PRINT("Sensor dev [%d] set slave addr 0x%x success.\n", dev, slave_addr);
|
||||
|
||||
return XMEDIA_SUCCESS;
|
||||
}
|
||||
|
||||
SENSOR_PRIORITY_FUNC xmedia_s32 sc4336p_i2c_init(xmedia_u32 dev, xmedia_s8 i2c_dev, xmedia_u32 i2c_addr)
|
||||
{
|
||||
xmedia_s32 ret;
|
||||
|
||||
if (g_sc4336p_i2c_fd[dev] >= 0) {
|
||||
SENSOR_PRINT("====== Sensor dev [%d], i2c already init !=======\n", dev);
|
||||
return XMEDIA_SUCCESS;
|
||||
}
|
||||
|
||||
if (i2c_dev == SENSOR_I2C_INVALID) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "Sensor i2c dev invalid! Please set i2c dev at first!\n");
|
||||
return XMEDIA_ERRCODE_NOT_CONFIG;
|
||||
}
|
||||
|
||||
g_sc4336p_i2c_fd[dev] = i2c_open(i2c_dev);
|
||||
if (g_sc4336p_i2c_fd[dev] < 0) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "Open /dev/i2c_drv-%u error!\n", i2c_dev);
|
||||
return XMEDIA_ERRCODE_OPEN_FAILED;
|
||||
}
|
||||
|
||||
ret = sc4336p_set_slave_addr(dev, i2c_addr);
|
||||
SENSOR_CHECK_RET_RETURN(ret);
|
||||
SENSOR_PRINT("====== i2c[%d] init success!=======\n", i2c_dev);
|
||||
return XMEDIA_SUCCESS;
|
||||
}
|
||||
|
||||
SENSOR_PRIORITY_FUNC xmedia_s32 sc4336p_i2c_exit(xmedia_u32 dev)
|
||||
{
|
||||
xmedia_s32 ret;
|
||||
|
||||
ret = i2c_close(g_sc4336p_i2c_fd[dev]);
|
||||
if(ret < 0 ) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "sensor dev[%d] close i2c failed!\n", dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
g_sc4336p_i2c_fd[dev] = SENSOR_I2C_INVALID;
|
||||
|
||||
return XMEDIA_SUCCESS;
|
||||
}
|
||||
|
||||
SENSOR_PRIORITY_FUNC xmedia_s32 sc4336p_read_reg(xmedia_u32 dev, xmedia_u32 addr, xmedia_u32 *data)
|
||||
{
|
||||
xmedia_s32 ret;
|
||||
xmedia_u8 buf[SC4336P_DATA_BYTE];
|
||||
|
||||
if (g_sc4336p_i2c_fd[dev] < 0) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "sensor dev[%d]'s i2c is not init!\n", dev);
|
||||
return XMEDIA_ERRCODE_NOT_INIT;
|
||||
}
|
||||
|
||||
ret = i2c_read(g_sc4336p_i2c_fd[dev], g_sc4336p_i2c_addr[dev], addr, SC4336P_ADDR_BYTE, buf, SC4336P_DATA_BYTE);
|
||||
if (ret < 0) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "sensor dev[%d] read i2c addr [0x%X] failed!\n", dev, addr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
*data = buf[0]; //SC4336P_DATA_BYTE == 1
|
||||
|
||||
return XMEDIA_SUCCESS;
|
||||
}
|
||||
|
||||
SENSOR_PRIORITY_FUNC xmedia_s32 sc4336p_write_reg(xmedia_u32 dev, xmedia_u32 addr, xmedia_u32 data)
|
||||
{
|
||||
xmedia_u32 idx = 0;
|
||||
xmedia_s32 ret;
|
||||
xmedia_u8 buf[8];
|
||||
|
||||
if (g_sc4336p_i2c_fd[dev] < 0) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "sensor dev[%d]'s i2c is not init!\n", dev);
|
||||
return XMEDIA_ERRCODE_NOT_INIT;
|
||||
}
|
||||
|
||||
buf[idx] = (addr >> 8) & 0xff;
|
||||
idx++;
|
||||
buf[idx] = addr & 0xff;
|
||||
idx++;
|
||||
buf[idx] = data & 0xff;
|
||||
|
||||
ret = i2c_write(g_sc4336p_i2c_fd[dev], g_sc4336p_i2c_addr[dev], buf, SC4336P_ADDR_BYTE + SC4336P_DATA_BYTE);
|
||||
if (ret < 0) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "I2C_WRITE error!\n");
|
||||
return XMEDIA_FAILURE;
|
||||
}
|
||||
return XMEDIA_SUCCESS;
|
||||
}
|
||||
|
||||
xmedia_s32 sc4336p_set_mirror_flip(xmedia_u32 dev, xmedia_bool mirror_en, xmedia_bool flip_en)
|
||||
{
|
||||
xmedia_s32 ret;
|
||||
xmedia_u32 mirror_flip_type;
|
||||
|
||||
sc4336p_read_reg(dev, SC4336P_REG_ADDR_MIRROR_FLIP, &mirror_flip_type);
|
||||
|
||||
if (mirror_en) {
|
||||
mirror_flip_type |= 0x06;
|
||||
} else {
|
||||
mirror_flip_type &= 0xf9;
|
||||
}
|
||||
|
||||
if (flip_en) {
|
||||
mirror_flip_type |= 0x60;
|
||||
} else {
|
||||
mirror_flip_type &= 0x9f;
|
||||
}
|
||||
|
||||
ret = sc4336p_write_reg(dev, SC4336P_REG_ADDR_MIRROR_FLIP, mirror_flip_type);
|
||||
|
||||
if (ret != XMEDIA_SUCCESS) {
|
||||
SENSOR_TRACE(MODULE_DBG_ERR, "sc4336p_write_reg failed\n");
|
||||
}
|
||||
|
||||
return XMEDIA_SUCCESS;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
#ifndef __SC4336P_CTRL_H__
|
||||
#define __SC4336P_CTRL_H__
|
||||
|
||||
#include "sns_comm.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define SC4336P_I2C_ADDR 0x60
|
||||
#define SC4336P_ADDR_BYTE 2
|
||||
#define SC4336P_DATA_BYTE 1
|
||||
|
||||
// sc4336p specs list
|
||||
#define SC4336P_4M_30FPS_10BIT_LINEAR_MODE 1 // 2560x1440x30fps
|
||||
|
||||
xmedia_s32 sc4336p_i2c_init(xmedia_u32 dev, xmedia_s8 i2c_dev, xmedia_u32 i2c_addr);
|
||||
xmedia_s32 sc4336p_i2c_exit(xmedia_u32 dev);
|
||||
xmedia_s32 sc4336p_read_reg(xmedia_u32 dev, xmedia_u32 addr, xmedia_u32 *data);
|
||||
xmedia_s32 sc4336p_write_reg(xmedia_u32 dev, xmedia_u32 addr, xmedia_u32 data);
|
||||
xmedia_s32 sc4336p_set_mirror_flip(xmedia_u32 dev, xmedia_bool mirror_en, xmedia_bool flip_en);
|
||||
xmedia_s32 sc4336p_init_image(xmedia_u32 dev, xmedia_u8 image_mode, xmedia_sensor_work_mode work_mode);
|
||||
xmedia_s32 sc4336p_set_slave_addr(xmedia_u32 dev, xmedia_u32 slave_addr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //__SC4336P_CTRL_H__
|
||||
+272
@@ -0,0 +1,272 @@
|
||||
#ifndef __SC4336P_EX_H__
|
||||
#define __SC4336P_EX_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
static const xmedia_isp_bnr_attr sc4336p_bnr={
|
||||
1, //enable
|
||||
2, //ainr_pos_switch
|
||||
0, //coring_pos_switch
|
||||
0, //noise_reserve_enable
|
||||
{102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,103,104,105,106,107,108,108,108,108,108,108,108,108,108,108,108,115,115,115,115,123,123,123,123,131,131,131,131,138,138,138,138,146,146,146,146,154,154,154,154,161,161}, //noise_reserve_lut
|
||||
3200, //noise_profile_thd
|
||||
{ 0.0002908287,0.0213421710,0.0000000897,0.00012421610,0.0114417665 },
|
||||
{ 0.0002908287,0.0213421710,0.0000000897,0.00012421610,0.0114417665 },
|
||||
0, //snr_wdr_comp_en
|
||||
1, //tnr_enable
|
||||
1, //tnr_luma_comp_enable
|
||||
0, //tnr_wdr_comp_enable
|
||||
0, //op_type
|
||||
{
|
||||
12, //iso_num
|
||||
{100,200,400,800,1600,3200,6400,12800,25600,51200,102400,204800,409600,819200,1638400,3276800}, //iso_level
|
||||
{
|
||||
{282,282,282,282}, //snr_coarse_str[0]
|
||||
{282,282,282,282}, //snr_coarse_str[1]
|
||||
{307,307,307,307}, //snr_coarse_str[2]
|
||||
{333,333,333,333}, //snr_coarse_str[3]
|
||||
{358,358,358,358}, //snr_coarse_str[4]
|
||||
{358,358,358,358}, //snr_coarse_str[5]
|
||||
{358,358,358,358}, //snr_coarse_str[6]
|
||||
{358,358,358,358}, //snr_coarse_str[7]
|
||||
{358,358,358,358}, //snr_coarse_str[8]
|
||||
{358,358,358,358}, //snr_coarse_str[9]
|
||||
{358,358,358,358}, //snr_coarse_str[10]
|
||||
{358,358,358,358}, //snr_coarse_str[11]
|
||||
{358,358,358,358}, //snr_coarse_str[12]
|
||||
{358,358,358,358}, //snr_coarse_str[13]
|
||||
{358,358,358,358}, //snr_coarse_str[14]
|
||||
{358,358,358,358}, //snr_coarse_str[15]
|
||||
}, //snr_coarse_str
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_coring_wgt
|
||||
{
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[0]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[1]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[2]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[3]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[4]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[5]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[6]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[7]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[8]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[9]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[10]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[11]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[12]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[13]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[14]
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str[15]
|
||||
}, //snr_luma_nr_str
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //snr_center_luma_mode
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //snr_center_tnr_luma_mode
|
||||
{512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512}, //snr_wdr_comp_scl
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_noise_min
|
||||
{64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64}, //tnr_bayer_str
|
||||
{56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56}, //tnr_md_thd_low
|
||||
{112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112}, //tnr_md_thd_high
|
||||
{512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512}, //tnr_wgt_min
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //tnr_min_ratio
|
||||
{70,64,56,48,40,32,24,16,12,8,8,8,8,8,8,8}, //tnr_mot_bld_thd_low
|
||||
{140,128,112,96,80,64,48,32,24,16,16,16,16,16,16,16}, //tnr_mot_bld_thd_high
|
||||
{120,112,104,96,88,16,16,32,32,32,32,32,32,32,32,32}, //tnr_edge_md_thd_low
|
||||
{240,224,208,192,176,32,32,64,64,64,64,64,64,64,64,64}, //tnr_edge_md_thd_high
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_flat_md_scl
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_edge_md_scl
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //tnr_md_mode
|
||||
{1024,1024,1024,1024,896,768,640,512,256,128,128,128,128,128,128,128}, //tnr_luma_md_thd_low
|
||||
{2048,2048,2048,2048,2560,1024,1024,1024,512,256,256,256,256,256,256,256}, //tnr_luma_md_thd_high
|
||||
{256,256,256,256,256,256,256,256,320,320,320,320,320,320,320,320}, //tnr_dark_md_scl
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_bright_md_scl
|
||||
{
|
||||
{176,176,176}, //tnr_mot_scl[0]
|
||||
{176,176,176}, //tnr_mot_scl[1]
|
||||
{176,176,176}, //tnr_mot_scl[2]
|
||||
{176,176,176}, //tnr_mot_scl[3]
|
||||
{176,176,176}, //tnr_mot_scl[4]
|
||||
{176,176,176}, //tnr_mot_scl[5]
|
||||
{176,176,176}, //tnr_mot_scl[6]
|
||||
{176,176,176}, //tnr_mot_scl[7]
|
||||
{176,176,176}, //tnr_mot_scl[8]
|
||||
{176,176,176}, //tnr_mot_scl[9]
|
||||
{176,176,176}, //tnr_mot_scl[10]
|
||||
{176,176,176}, //tnr_mot_scl[11]
|
||||
{176,176,176}, //tnr_mot_scl[12]
|
||||
{176,176,176}, //tnr_mot_scl[13]
|
||||
{176,176,176}, //tnr_mot_scl[14]
|
||||
{176,176,176}, //tnr_mot_scl[15]
|
||||
}, //tnr_mot_scl
|
||||
{32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}, //tnr_var_scl
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //tnr_mot_noise_luma_thd_low
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //tnr_mot_noise_luma_thd_high
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_mot_noise_dark_scl
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_mot_noise_bright_scl
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //tnr_mot_dpc_str
|
||||
{
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[0]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[1]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[2]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[3]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[4]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[5]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[6]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[7]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[8]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[9]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[10]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[11]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[12]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[13]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[14]
|
||||
{880,1280,1280,1536}, //tnr_mot_convg_thd[15]
|
||||
}, //tnr_mot_convg_thd
|
||||
{256,256,256,256,256,256,320,384,384,384,384,384,384,384,384,384}, //tnr_mot_noise_scl
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_mot_noise_scl_high
|
||||
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //tnr_dpc_en
|
||||
{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1}, //tnr_dp_mode
|
||||
{384,384,389,384,384,384,384,384,256,256,256,256,256,256,256,256}, //tnr_dp_thd_rb
|
||||
{384,384,384,384,384,384,384,384,256,256,256,256,256,256,256,256}, //tnr_dp_thd_g
|
||||
{128,128,128,128,128,256,256,384,384,384,384,384,384,384,384,384}, //tnr_dp_luma_thd_low
|
||||
{256,256,256,256,256,512,512,768,768,768,768,768,768,768,768,768}, //tnr_dp_luma_thd_high
|
||||
{256,256,256,256,256,224,192,160,128,128,128,128,128,128,128,128}, //tnr_dp_thd_low_dark_scl
|
||||
{256,256,256,256,256,256,224,192,160,128,128,128,128,128,128,128}, //tnr_dp_thd_high_dark_scl
|
||||
{
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[0]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[1]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[2]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[3]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[4]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[5]
|
||||
{128,160,192,224,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[6]
|
||||
{64,96,128,160,192,224,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[7]
|
||||
{32,64,96,128,160,192,224,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[8]
|
||||
{0,32,64,96,128,160,192,224,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[9]
|
||||
{0,32,64,96,128,160,192,224,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[10]
|
||||
{0,32,64,96,128,160,192,224,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[11]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[12]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[13]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[14]
|
||||
{256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256}, //tnr_luma_ratio[15]
|
||||
}, //tnr_luma_ratio
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //tnr_wdr_comp_scl
|
||||
}, //auto_attr
|
||||
{
|
||||
{128,128,128,128}, //snr_coarse_str
|
||||
128, //snr_coring_wgt
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //snr_luma_nr_str
|
||||
0, //snr_center_luma_mode
|
||||
0, //snr_center_tnr_luma_mode
|
||||
512, //snr_wdr_comp_scl
|
||||
335, //tnr_noise_min
|
||||
512, //tnr_bayer_str
|
||||
8, //tnr_md_thd_low
|
||||
16, //tnr_md_thd_high
|
||||
512, //tnr_wgt_min
|
||||
256, //tnr_min_ratio
|
||||
6, //tnr_mot_bld_thd_low
|
||||
12, //tnr_mot_bld_thd_high
|
||||
16, //tnr_edge_md_thd_low
|
||||
48, //tnr_edge_md_thd_high
|
||||
256, //tnr_flat_md_scl
|
||||
256, //tnr_edge_md_scl
|
||||
3, //tnr_md_mode
|
||||
128, //tnr_luma_md_thd_low
|
||||
256, //tnr_luma_md_thd_high
|
||||
512, //tnr_dark_md_scl
|
||||
256, //tnr_bright_md_scl
|
||||
{144,144,144}, //tnr_mot_scl
|
||||
32, //tnr_var_scl
|
||||
128, //tnr_mot_noise_luma_thd_low
|
||||
256, //tnr_mot_noise_luma_thd_high
|
||||
256, //tnr_mot_noise_dark_scl
|
||||
256, //tnr_mot_noise_bright_scl
|
||||
64, //tnr_mot_dpc_str
|
||||
{360,512,1280,1536}, //tnr_mot_convg_thd
|
||||
256, //tnr_mot_noise_scl
|
||||
256, //tnr_mot_noise_scl_high
|
||||
1, //tnr_dpc_en
|
||||
1, //tnr_dp_mode
|
||||
68, //tnr_dp_thd_rb
|
||||
105, //tnr_dp_thd_g
|
||||
128, //tnr_dp_luma_thd_low
|
||||
256, //tnr_dp_luma_thd_high
|
||||
256, //tnr_dp_thd_low_dark_scl
|
||||
256, //tnr_dp_thd_high_dark_scl
|
||||
{128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128}, //tnr_luma_ratio
|
||||
0, //tnr_wdr_comp_scl
|
||||
}, //manual_attr
|
||||
{
|
||||
{64,64}, //wdr_frame_str
|
||||
}, //wdr
|
||||
};
|
||||
|
||||
// Piris attr
|
||||
static const xmedia_isp_piris_attr g_sc4336p_piris_attr = {
|
||||
0,
|
||||
1,
|
||||
94,
|
||||
62,
|
||||
// Step-F number mapping table. Must be from small to large. F1.0 is 1024 and F32.0 is 1
|
||||
{30, 35, 40, 45, 50, 56, 61, 67, 73, 79, 85, 92, 98, 105, 112, 120, 127, 135, 143, 150, 158,
|
||||
166, 174, 183, 191, 200, 208, 217, 225, 234, 243, 252, 261, 270, 279, 289, 298, 307, 316, 325, 335, 344,
|
||||
353, 362, 372, 381, 390, 399, 408, 417, 426, 435, 444, 453, 462, 470, 478, 486, 493, 500, 506, 512},
|
||||
XMEDIA_ISP_IRIS_F_NO_1_4,
|
||||
XMEDIA_ISP_IRIS_F_NO_5_6
|
||||
};
|
||||
|
||||
static const xmedia_isp_awb_ccm g_sc4336p_awb_ccm = {
|
||||
4,
|
||||
{
|
||||
{
|
||||
6150,
|
||||
{
|
||||
0x0292, 0x81C6, 0x0034,
|
||||
0x806E, 0x01D1, 0x8063,
|
||||
0x8021, 0x815B, 0x027C
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
4850,
|
||||
{
|
||||
0x02A5, 0x81D3, 0x002E,
|
||||
0x806D, 0x01AB, 0x803E,
|
||||
0x8023, 0x819F, 0x02C2
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
3650,
|
||||
{
|
||||
0x026E, 0x8172, 0x0004,
|
||||
0x809F, 0x01D6, 0x8037,
|
||||
0x8047, 0x81C4, 0x030B
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
2650,
|
||||
{
|
||||
0x01E5, 0x80B7, 0x802E,
|
||||
0x8096, 0x01A6, 0x8010,
|
||||
0x80B9, 0x82B1, 0x046A
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static const xmedia_isp_awb_agc_table g_sc4336p_awb_agc_table = {
|
||||
/* bvalid */
|
||||
1,
|
||||
|
||||
/* saturation */
|
||||
/* 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 */
|
||||
{100, 100, 100, 100, 95, 95, 95, 95, 90, 90, 90, 80, 80, 80, 80, 80}
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user