aboutsummaryrefslogtreecommitdiff
path: root/kernel-headers
diff options
context:
space:
mode:
authorMister Oyster <oysterized@gmail.com>2017-01-13 12:08:42 +0100
committerMister Oyster <oysterized@gmail.com>2017-01-13 12:08:42 +0100
commitd0efe21e023b19cec3a58d6debed50191bf4fc1c (patch)
tree9758eb4117cf62817c06ef7bcb070dff04315ef5 /kernel-headers
parent19eb1fe54d54773a77675d64b9411aabfc0bba65 (diff)
mtk: headers: update from CyanogenMod/mt6753_common
Diffstat (limited to 'kernel-headers')
-rw-r--r--kernel-headers/asm/cache.h24
-rwxr-xr-x[-rw-r--r--]kernel-headers/bits_api.h0
-rw-r--r--kernel-headers/camera_fdvt.h59
-rw-r--r--kernel-headers/camera_isp.h909
-rwxr-xr-xkernel-headers/camera_isp_D2.h537
-rw-r--r--kernel-headers/camera_isp_FrmB_D2.h573
-rw-r--r--kernel-headers/camera_pipe_mgr_D2.h114
-rw-r--r--kernel-headers/camera_pipe_mgr_imp_D2.h113
-rw-r--r--kernel-headers/camera_sysram.h37
-rw-r--r--kernel-headers/camera_sysram_D2.h56
-rw-r--r--kernel-headers/camera_sysram_imp_D2.h176
-rw-r--r--kernel-headers/cmdq_engine.h73
-rw-r--r--kernel-headers/cmdq_event.h145
-rw-r--r--kernel-headers/cmdq_event_D1.h181
-rw-r--r--kernel-headers/cmdq_event_D2.h182
-rw-r--r--kernel-headers/cmdq_event_D3.h182
-rw-r--r--kernel-headers/cmdq_subsys.h28
-rwxr-xr-x[-rw-r--r--]kernel-headers/cmdq_subsys_common.h0
-rw-r--r--kernel-headers/ddp_aal.h29
-rw-r--r--kernel-headers/ddp_data_type.h165
-rw-r--r--kernel-headers/ddp_drv.h332
-rw-r--r--kernel-headers/ddp_gamma.h35
-rw-r--r--kernel-headers/ddp_hal.h125
-rw-r--r--kernel-headers/ddp_ovl.h17
-rw-r--r--kernel-headers/disp_event.h19
-rw-r--r--kernel-headers/errata.h41
-rwxr-xr-x[-rw-r--r--]kernel-headers/hevcd_if.h0
-rw-r--r--kernel-headers/jpeg_drv.h677
-rw-r--r--kernel-headers/kd_imgsensor.h115
-rw-r--r--kernel-headers/kd_imgsensor_define.h1
-rwxr-xr-x[-rw-r--r--]kernel-headers/linux/hwmsensor.h0
-rw-r--r--kernel-headers/mt_smi.h190
-rwxr-xr-x[-rw-r--r--]kernel-headers/val_api_private.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/val_api_public.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/val_oal.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/val_types_private.h0
-rw-r--r--kernel-headers/val_types_public.h1
-rwxr-xr-x[-rw-r--r--]kernel-headers/vcodec_OAL_v2.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/vcodec_if_v2.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/vcodec_log.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/vdec_drv_if_private.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/vdec_drv_if_public.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/venc_drv_base.h0
-rwxr-xr-x[-rw-r--r--]kernel-headers/venc_drv_if_private.h1
-rw-r--r--kernel-headers/venc_drv_if_public.h2
-rw-r--r--kernel-headers/videocodec_kernel_driver.h47
46 files changed, 5109 insertions, 77 deletions
diff --git a/kernel-headers/asm/cache.h b/kernel-headers/asm/cache.h
new file mode 100644
index 0000000..ea94fdd
--- /dev/null
+++ b/kernel-headers/asm/cache.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ *** This header was automatically generated from a Linux kernel header
+ *** of the same name, to make information necessary for userspace to
+ *** call into the kernel available to libc. It contains only constants,
+ *** structures, and macros generated from the original header, and thus,
+ *** contains no copyrightable information.
+ ***
+ *** To edit the content of this header, modify the corresponding
+ *** source file (e.g. under external/kernel-headers/original/) then
+ *** run bionic/libc/kernel/tools/update_all.py
+ ***
+ *** Any manual change here will be lost the next time this script will
+ *** be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASMARM_CACHE_H
+#define __ASMARM_CACHE_H
+#define L1_CACHE_SHIFT 5
+#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/kernel-headers/bits_api.h b/kernel-headers/bits_api.h
index 845b6d1..845b6d1 100644..100755
--- a/kernel-headers/bits_api.h
+++ b/kernel-headers/bits_api.h
diff --git a/kernel-headers/camera_fdvt.h b/kernel-headers/camera_fdvt.h
new file mode 100644
index 0000000..6ee8c1d
--- /dev/null
+++ b/kernel-headers/camera_fdvt.h
@@ -0,0 +1,59 @@
+#ifndef __CAMERA_FDVT_H__
+#define __CAMERA_FDVT_H__
+
+#include <linux/ioctl.h>
+#define FDVT_IOC_MAGIC 'N'
+
+
+typedef struct
+{
+ unsigned int *pAddr;
+ unsigned int *pData;
+ unsigned int u4Count;
+} MT6573FDVTRegIO;
+
+//below is control message
+#define MT6573FDVT_INIT_SETPARA_CMD _IO(FDVT_IOC_MAGIC, 0x00)
+#define MT6573FDVTIOC_STARTFD_CMD _IO(FDVT_IOC_MAGIC, 0x01)
+#define MT6573FDVTIOC_G_WAITIRQ _IOR(FDVT_IOC_MAGIC, 0x02, unsigned int )
+#define MT6573FDVTIOC_T_SET_FDCONF_CMD _IOW(FDVT_IOC_MAGIC, 0x03, MT6573FDVTRegIO)
+#define MT6573FDVTIOC_G_READ_FDREG_CMD _IOWR(FDVT_IOC_MAGIC, 0x04, MT6573FDVTRegIO)
+#define MT6573FDVTIOC_T_SET_SDCONF_CMD _IOW(FDVT_IOC_MAGIC, 0x05, MT6573FDVTRegIO)
+//#define FDVT_DESTROY_CMD _IO(FDVT_IOC_MAGIC, 0x10)
+
+#define MT6573FDVTIOC_T_DUMPREG _IO(FDVT_IOC_MAGIC, 0x80)
+
+//#define FDVT_SET_CMD_CMD _IOW(FDVT_IOC_MAGIC, 0x03, unsigned int)
+//#define FDVT_SET_PWR_CMD _IOW(FDVT_IOC_MAGIC, 0x04, unsigned int)
+//#define FDVT_SET_ISR_CMD _IOW(FDVT_IOC_MAGIC, 0x05, unsigned int)
+//#define FDVT_GET_CACHECTRLADDR_CMD _IOR(FDVT_IOC_MAGIC, 0x06, int)
+
+
+
+#endif //__CAMERA_FDVT_H__
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kernel-headers/camera_isp.h b/kernel-headers/camera_isp.h
new file mode 100644
index 0000000..c94350e
--- /dev/null
+++ b/kernel-headers/camera_isp.h
@@ -0,0 +1,909 @@
+#ifndef _MT_ISP_H
+#define _MT_ISP_H
+
+#include <linux/ioctl.h>
+
+
+/**
+ enforce kernel log enable
+*/
+//#define KERNEL_LOG //enable debug log flag if defined
+#define ISR_LOG_ON //turn on log print at isr if defined
+
+#define T_STAMP_2_0 //time stamp workaround method. (increase timestamp baseon fix fps, not read at each isr)
+
+#define SIG_ERESTARTSYS 512 //ERESTARTSYS
+/*******************************************************************************
+*
+********************************************************************************/
+#define ISP_DEV_MAJOR_NUMBER 251
+#define ISP_MAGIC 'k'
+/*******************************************************************************
+*
+********************************************************************************/
+//CAM_CTL_INT_P1_STATUS
+#define ISP_IRQ_P1_STATUS_VS1_INT_ST ((unsigned int)1<<0)
+#define ISP_IRQ_P1_STATUS_TG1_INT1_ST ((unsigned int)1<<1)
+#define ISP_IRQ_P1_STATUS_TG1_INT2_ST ((unsigned int)1<<2)
+#define ISP_IRQ_P1_STATUS_EXPDON1_ST ((unsigned int)1<<3)
+#define ISP_IRQ_P1_STATUS_TG1_ERR_ST ((unsigned int)1<<4)
+#define ISP_IRQ_P1_STATUS_TG1_GBERR ((unsigned int)1<<5)
+#define ISP_IRQ_P1_STATUS_CQ0_ERR ((unsigned int)1<<6)
+#define ISP_IRQ_P1_STATUS_CQ0_VS_ERR_ST ((unsigned int)1<<7)
+#define ISP_IRQ_P1_STATUS_IMGO_DROP_FRAME_ST ((unsigned int)1<<8)
+#define ISP_IRQ_P1_STATUS_RRZO_DROP_FRAME_ST ((unsigned int)1<<9)
+#define ISP_IRQ_P1_STATUS_PASS1_DON_ST ((unsigned int)1<<10)
+#define ISP_IRQ_P1_STATUS_rsv_11 ((unsigned int)1<<11)
+#define ISP_IRQ_P1_STATUS_SOF1_INT_ST ((unsigned int)1<<12)
+#define ISP_IRQ_P1_STATUS_rsv_13 ((unsigned int)1<<13)
+#define ISP_IRQ_P1_STATUS_PESUDO_P1_DON_ST ((unsigned int)1<<15)
+#define ISP_IRQ_P1_STATUS_AF_DON_ST ((unsigned int)1<<16)
+#define ISP_IRQ_P1_STATUS_FLK_DON_ST ((unsigned int)1<<17)
+#define ISP_IRQ_P1_STATUS_rsv_18 ((unsigned int)1<<18)
+#define ISP_IRQ_P1_STATUS_IMGO_ERR_ST ((unsigned int)1<<20)
+#define ISP_IRQ_P1_STATUS_AAO_ERR_ST ((unsigned int)1<<21)
+#define ISP_IRQ_P1_STATUS_LCSO_ERR_ST ((unsigned int)1<<22)
+#define ISP_IRQ_P1_STATUS_RRZO_ERR_ST ((unsigned int)1<<23)
+#define ISP_IRQ_P1_STATUS_ESFKO_ERR_ST ((unsigned int)1<<24)
+#define ISP_IRQ_P1_STATUS_FLK_ERR_ST ((unsigned int)1<<25)
+#define ISP_IRQ_P1_STATUS_LSC_ERR_ST ((unsigned int)1<<26)
+#define ISP_IRQ_P1_STATUS_FBC_RRZO_DON_ST ((unsigned int)1<<27)
+#define ISP_IRQ_P1_STATUS_FBC_IMGO_DON_ST ((unsigned int)1<<28)
+#define ISP_IRQ_P1_STATUS_rsv_29 ((unsigned int)1<<29)
+#define ISP_IRQ_P1_STATUS_DMA_ERR_ST ((unsigned int)1<<30)
+#define ISP_IRQ_P1_STATUS_rsv_31 ((unsigned int)1<<31)
+//CAM_CTL_INT_P1_STATUS2
+#define ISP_IRQ_P1_STATUS2_IMGO_DONE_ST ((unsigned int)1<<0)
+#define ISP_IRQ_P1_STATUS2_UFEO_DONE_ST ((unsigned int)1<<1)
+#define ISP_IRQ_P1_STATUS2_RRZO_DONE_ST ((unsigned int)1<<2)
+#define ISP_IRQ_P1_STATUS2_ESFKO_DONE_ST ((unsigned int)1<<3)
+#define ISP_IRQ_P1_STATUS2_LCSO_DONE_ST ((unsigned int)1<<4)
+#define ISP_IRQ_P1_STATUS2_AAO_DONE_ST ((unsigned int)1<<5)
+#define ISP_IRQ_P1_STATUS2_BPCI_DONE_ST ((unsigned int)1<<6)
+#define ISP_IRQ_P1_STATUS2_LSCI_DONE_ST ((unsigned int)1<<7)
+#define ISP_IRQ_P1_STATUS2_AF_TAR_DONE_ST ((unsigned int)1<<8)
+#define ISP_IRQ_P1_STATUS2_AF_FLO1_DONE_ST ((unsigned int)1<<9)
+#define ISP_IRQ_P1_STATUS2_AF_FLO2_DONE_ST ((unsigned int)1<<10)
+#define ISP_IRQ_P1_STATUS2_AF_FLO3_DONE_ST ((unsigned int)1<<11)
+#define ISP_IRQ_P1_STATUS2_rsv_12 ((unsigned int)1<<12)
+//CAM_CTL_INT_P1_STATUS_D
+#define ISP_IRQ_P1_STATUS_D_VS1_INT_ST ((unsigned int)1<<0)
+#define ISP_IRQ_P1_STATUS_D_TG1_INT1_ST ((unsigned int)1<<1)
+#define ISP_IRQ_P1_STATUS_D_TG1_INT2_ST ((unsigned int)1<<2)
+#define ISP_IRQ_P1_STATUS_D_EXPDON1_ST ((unsigned int)1<<3)
+#define ISP_IRQ_P1_STATUS_D_TG1_ERR_ST ((unsigned int)1<<4)
+#define ISP_IRQ_P1_STATUS_D_TG1_GBERR ((unsigned int)1<<5)
+#define ISP_IRQ_P1_STATUS_D_CQ0_ERR ((unsigned int)1<<6)
+#define ISP_IRQ_P1_STATUS_D_CQ0_VS_ERR_ST ((unsigned int)1<<7)
+#define ISP_IRQ_P1_STATUS_D_IMGO_DROP_FRAME_ST ((unsigned int)1<<8)
+#define ISP_IRQ_P1_STATUS_D_RRZO_DROP_FRAME_ST ((unsigned int)1<<9)
+#define ISP_IRQ_P1_STATUS_D_PASS1_DON_ST ((unsigned int)1<<10)
+#define ISP_IRQ_P1_STATUS_D_rsv_11 ((unsigned int)1<<11)
+#define ISP_IRQ_P1_STATUS_D_SOF1_INT_ST ((unsigned int)1<<12)
+#define ISP_IRQ_P1_STATUS_D_rsv_13 ((unsigned int)1<<13)
+#define ISP_IRQ_P1_STATUS_D_PESUDO_P1_DON_ST ((unsigned int)1<<15)
+#define ISP_IRQ_P1_STATUS_D_AF_DON_ST ((unsigned int)1<<16)
+#define ISP_IRQ_P1_STATUS_D_rsv_17 ((unsigned int)1<<17)
+#define ISP_IRQ_P1_STATUS_D_IMGO_ERR_ST ((unsigned int)1<<20)
+#define ISP_IRQ_P1_STATUS_D_AAO_ERR_ST ((unsigned int)1<<21)
+#define ISP_IRQ_P1_STATUS_D_LCSO_ERR_ST ((unsigned int)1<<22)
+#define ISP_IRQ_P1_STATUS_D_RRZO_ERR_ST ((unsigned int)1<<23)
+#define ISP_IRQ_P1_STATUS_D_AFO_ERR_ST ((unsigned int)1<<24)
+#define ISP_IRQ_P1_STATUS_D_rsv_25 ((unsigned int)1<<25)
+#define ISP_IRQ_P1_STATUS_D_LSC_ERR_ST ((unsigned int)1<<26)
+#define ISP_IRQ_P1_STATUS_D_FBC_RRZO_DON_ST ((unsigned int)1<<27)
+#define ISP_IRQ_P1_STATUS_D_FBC_IMGO_DON_ST ((unsigned int)1<<28)
+#define ISP_IRQ_P1_STATUS_D_rsv_29 ((unsigned int)1<<29)
+#define ISP_IRQ_P1_STATUS_D_DMA_ERR_ST ((unsigned int)1<<30)
+#define ISP_IRQ_P1_STATUS_D_rsv_31 ((unsigned int)1<<31)
+//CAM_CTL_INT_P1_STATUS2_D
+#define ISP_IRQ_P1_STATUS2_D_IMGO_D_DONE_ST ((unsigned int)1<<0)
+#define ISP_IRQ_P1_STATUS2_D_rsv_1 ((unsigned int)1<<1)
+#define ISP_IRQ_P1_STATUS2_D_RRZO_D_DONE_ST ((unsigned int)1<<2)
+#define ISP_IRQ_P1_STATUS2_D_AFO_D_DONE_ST ((unsigned int)1<<3)
+#define ISP_IRQ_P1_STATUS2_D_LCSO_D_DONE_ST ((unsigned int)1<<4)
+#define ISP_IRQ_P1_STATUS2_D_AAO_D_DONE_ST ((unsigned int)1<<5)
+#define ISP_IRQ_P1_STATUS2_D_BPCI_D_DONE_ST ((unsigned int)1<<6)
+#define ISP_IRQ_P1_STATUS2_D_LSCI_D_DONE_ST ((unsigned int)1<<7)
+#define ISP_IRQ_P1_STATUS2_D_AF_TAR_DONE_ST ((unsigned int)1<<8)
+#define ISP_IRQ_P1_STATUS2_D_AF_FLO1_DONE_ST ((unsigned int)1<<9)
+#define ISP_IRQ_P1_STATUS2_D_AF_FLO2_DONE_ST ((unsigned int)1<<10)
+#define ISP_IRQ_P1_STATUS2_D_AF_FLO3_DONE_ST ((unsigned int)1<<11)
+#define ISP_IRQ_P1_STATUS2_D_rsv_12 ((unsigned int)1<<12)
+//CAM_CTL_SEL_P1
+#define ISP_CAM_CTL_SEL_P1_IMGO_SEL ((unsigned int)1<<6)
+//CAM_CTL_SEL_P1_D
+#define ISP_CAM_CTL_SEL_P1_D_IMGO_SEL ((unsigned int)1<<6)
+//CAM_CTL_INT_P2_STATUS
+#define ISP_IRQ_P2_STATUS_CQ_ERR_ST ((unsigned int)1<<0)
+#define ISP_IRQ_P2_STATUS_PASS2_DON_ST ((unsigned int)1<<1)
+#define ISP_IRQ_P2_STATUS_TILE_DON_ST ((unsigned int)1<<2)
+#define ISP_IRQ_P2_STATUS_CQ_DON_ST ((unsigned int)1<<3)
+#define ISP_IRQ_P2_STATUS_TDR_ERR_ST ((unsigned int)1<<4)
+#define ISP_IRQ_P2_STATUS_PASS2A_DON_ST ((unsigned int)1<<5)
+#define ISP_IRQ_P2_STATUS_PASS2B_DON_ST ((unsigned int)1<<6)
+#define ISP_IRQ_P2_STATUS_PASS2C_DON_ST ((unsigned int)1<<7)
+#define ISP_IRQ_P2_STATUS_CQ1_DONE_ST ((unsigned int)1<<8)
+#define ISP_IRQ_P2_STATUS_CQ2_DONE_ST ((unsigned int)1<<9)
+#define ISP_IRQ_P2_STATUS_CQ3_DONE_ST ((unsigned int)1<<10)
+#define ISP_IRQ_P2_STATUS_PASS2A_ERR_TRIG_ST ((unsigned int)1<<11)
+#define ISP_IRQ_P2_STATUS_PASS2B_ERR_TRIG_ST ((unsigned int)1<<12)
+#define ISP_IRQ_P2_STATUS_PASS2C_ERR_TRIG_ST ((unsigned int)1<<13)
+#define ISP_IRQ_P2_STATUS_IMGI_DONE_ST ((unsigned int)1<<15)
+#define ISP_IRQ_P2_STATUS_UFDI_DONE_ST ((unsigned int)1<<16)
+#define ISP_IRQ_P2_STATUS_VIPI_DONE_ST ((unsigned int)1<<17)
+#define ISP_IRQ_P2_STATUS_VIP2I_DONE_ST ((unsigned int)1<<18)
+#define ISP_IRQ_P2_STATUS_VIP3I_DONE_ST ((unsigned int)1<<19)
+#define ISP_IRQ_P2_STATUS_LCEI_DONE_ST ((unsigned int)1<<20)
+#define ISP_IRQ_P2_STATUS_MFBO_DONE_ST ((unsigned int)1<<21)
+#define ISP_IRQ_P2_STATUS_IMG2O_DONE_ST ((unsigned int)1<<22)
+#define ISP_IRQ_P2_STATUS_IMG3O_DONE_ST ((unsigned int)1<<23)
+#define ISP_IRQ_P2_STATUS_IMG3BO_DONE_ST ((unsigned int)1<<24)
+#define ISP_IRQ_P2_STATUS_IMG3CO_DONE_ST ((unsigned int)1<<25)
+#define ISP_IRQ_P2_STATUS_FEO_DONE_ST ((unsigned int)1<<26)
+#define ISP_IRQ_P2_STATUS_rsv_27 ((unsigned int)1<<27)
+//CAM_CTL_INT_STATUSX //P1 AND P2
+#define ISP_IRQ_STATUSX_VS1_INT_ST ((unsigned int)1<<0)
+#define ISP_IRQ_STATUSX_TG1_INT1_ST ((unsigned int)1<<1)
+#define ISP_IRQ_STATUSX_TG1_INT2_ST ((unsigned int)1<<2)
+#define ISP_IRQ_STATUSX_EXPDON1_ST ((unsigned int)1<<3)
+#define ISP_IRQ_STATUSX_TG1_ERR_ST ((unsigned int)1<<4)
+#define ISP_IRQ_STATUSX_TG1_GBERR ((unsigned int)1<<5)
+#define ISP_IRQ_STATUSX_CQ0_ERR ((unsigned int)1<<6)
+#define ISP_IRQ_STATUSX_CQ0_VS_ERR_ST ((unsigned int)1<<7)
+#define ISP_IRQ_STATUSX_IMGO_DROP_FRAME_ST ((unsigned int)1<<8)
+#define ISP_IRQ_STATUSX_RRZO_DROP_FRAME_ST ((unsigned int)1<<9)
+#define ISP_IRQ_STATUSX_PASS1_DON_ST ((unsigned int)1<<10)
+#define ISP_IRQ_STATUSX_rsv_11 ((unsigned int)1<<11)
+#define ISP_IRQ_STATUSX_SOF1_INT_ST ((unsigned int)1<<12)
+#define ISP_IRQ_STATUSX_CQ_ERR_ST ((unsigned int)1<<13)
+#define ISP_IRQ_STATUSX_PASS2_DON_ST ((unsigned int)1<<14)
+#define ISP_IRQ_STATUSX_TILE_DON_ST ((unsigned int)1<<15)
+#define ISP_IRQ_STATUSX_AF_DON_ST ((unsigned int)1<<16)
+#define ISP_IRQ_STATUSX_FLK_DON_ST ((unsigned int)1<<17)
+#define ISP_IRQ_STATUSX_rsv_18 ((unsigned int)1<<18)
+#define ISP_IRQ_STATUSX_CQ_DON_ST ((unsigned int)1<<19)
+#define ISP_IRQ_STATUSX_IMGO_ERR_ST ((unsigned int)1<<20)
+#define ISP_IRQ_STATUSX_AAO_ERR_ST ((unsigned int)1<<21)
+#define ISP_IRQ_STATUSX_LCSO_ERR_ST ((unsigned int)1<<22)
+#define ISP_IRQ_STATUSX_RRZO_ERR_ST ((unsigned int)1<<23)
+#define ISP_IRQ_STATUSX_ESFKO_ERR_ST ((unsigned int)1<<24)
+#define ISP_IRQ_STATUSX_FLK_ERR_ST ((unsigned int)1<<25)
+#define ISP_IRQ_STATUSX_LSC_ERR_ST ((unsigned int)1<<26)
+#define ISP_IRQ_STATUSX_FBC_RRZO_DON_ST ((unsigned int)1<<27)
+#define ISP_IRQ_STATUSX_FBC_IMGO_DON_ST ((unsigned int)1<<28)
+#define ISP_IRQ_STATUSX_rsv_29 ((unsigned int)1<<29)
+#define ISP_IRQ_STATUSX_DMA_ERR_ST ((unsigned int)1<<30)
+#define ISP_IRQ_STATUSX_rsv_31 ((unsigned int)1<<31)
+//CAM_CTL_INT_STATUS2X //P1_D
+#define ISP_IRQ_STATUS2X_VS1_INT_ST ((unsigned int)1<<0)
+#define ISP_IRQ_STATUS2X_TG1_INT1_ST ((unsigned int)1<<1)
+#define ISP_IRQ_STATUS2X_TG1_INT2_ST ((unsigned int)1<<2)
+#define ISP_IRQ_STATUS2X_EXPDON1_ST ((unsigned int)1<<3)
+#define ISP_IRQ_STATUS2X_TG1_ERR_ST ((unsigned int)1<<4)
+#define ISP_IRQ_STATUS2X_TG1_GBERR ((unsigned int)1<<5)
+#define ISP_IRQ_STATUS2X_CQ0_ERR ((unsigned int)1<<6)
+#define ISP_IRQ_STATUS2X_CQ0_VS_ERR_ST ((unsigned int)1<<7)
+#define ISP_IRQ_STATUS2X_IMGO_DROP_FRAME_ST ((unsigned int)1<<8)
+#define ISP_IRQ_STATUS2X_RRZO_DROP_FRAME_ST ((unsigned int)1<<9)
+#define ISP_IRQ_STATUS2X_PASS1_DON_ST ((unsigned int)1<<10)
+#define ISP_IRQ_STATUS2X_rsv_11 ((unsigned int)1<<11)
+#define ISP_IRQ_STATUS2X_SOF1_INT_ST ((unsigned int)1<<12)
+#define ISP_IRQ_STATUS2X_rsv_13 ((unsigned int)1<<13)
+#define ISP_IRQ_STATUS2X_rsv_14 ((unsigned int)1<<14)
+#define ISP_IRQ_STATUS2X_rsv_15 ((unsigned int)1<<15)
+#define ISP_IRQ_STATUS2X_AF_DON_ST ((unsigned int)1<<16)
+#define ISP_IRQ_STATUS2X_rsv_17 ((unsigned int)1<<17)
+#define ISP_IRQ_STATUS2X_rsv_18 ((unsigned int)1<<18)
+#define ISP_IRQ_STATUS2X_rsv_19 ((unsigned int)1<<19)
+#define ISP_IRQ_STATUS2X_IMGO_ERR_ST ((unsigned int)1<<20)
+#define ISP_IRQ_STATUS2X_AAO_ERR_ST ((unsigned int)1<<21)
+#define ISP_IRQ_STATUS2X_LCSO_ERR_ST ((unsigned int)1<<22)
+#define ISP_IRQ_STATUS2X_RRZO_ERR_ST ((unsigned int)1<<23)
+#define ISP_IRQ_STATUS2X_AFO_ERR_ST ((unsigned int)1<<24)
+#define ISP_IRQ_STATUS2X_rsv_25 ((unsigned int)1<<25)
+#define ISP_IRQ_STATUS2X_LSC_ERR_ST ((unsigned int)1<<26)
+#define ISP_IRQ_STATUS2X_FBC_RRZO_DON_ST ((unsigned int)1<<27)
+#define ISP_IRQ_STATUS2X_FBC_IMGO_DON_ST ((unsigned int)1<<28)
+#define ISP_IRQ_STATUS2X_rsv_29 ((unsigned int)1<<29)
+#define ISP_IRQ_STATUS2X_DMA_ERR_ST ((unsigned int)1<<30)
+#define ISP_IRQ_STATUS2X_rsv_31 ((unsigned int)1<<31)
+//ISP_IRQ_STATUS3X //ALL DMA
+#define ISP_IRQ_STATUS3X_IMGO_DONE_ST ((unsigned int)1<<0)
+#define ISP_IRQ_STATUS3X_UFEO_DONE_ST ((unsigned int)1<<1)
+#define ISP_IRQ_STATUS3X_RRZO_DONE_ST ((unsigned int)1<<2)
+#define ISP_IRQ_STATUS3X_ESFKO_DONE_ST ((unsigned int)1<<3)
+#define ISP_IRQ_STATUS3X_LCSO_DONE_ST ((unsigned int)1<<4)
+#define ISP_IRQ_STATUS3X_AAO_DONE_ST ((unsigned int)1<<5)
+#define ISP_IRQ_STATUS3X_BPCI_DONE_ST ((unsigned int)1<<6)
+#define ISP_IRQ_STATUS3X_LSCI_DONE_ST ((unsigned int)1<<7)
+#define ISP_IRQ_STATUS3X_IMGO_D_DONE_ST ((unsigned int)1<<8)
+#define ISP_IRQ_STATUS3X_RRZO_D_DONE_ST ((unsigned int)1<<9)
+#define ISP_IRQ_STATUS3X_AFO_D_DONE_ST ((unsigned int)1<<10)
+#define ISP_IRQ_STATUS3X_LCSO_D_DONE_ST ((unsigned int)1<<11)
+#define ISP_IRQ_STATUS3X_AAO_D_DONE_ST ((unsigned int)1<<12)
+#define ISP_IRQ_STATUS3X_BPCI_D_DONE_ST ((unsigned int)1<<13)
+#define ISP_IRQ_STATUS3X_LCSI_D_DONE_ST ((unsigned int)1<<14)
+#define ISP_IRQ_STATUS3X_IMGI_DONE_ST ((unsigned int)1<<15)
+#define ISP_IRQ_STATUS3X_UFDI_DONE_ST ((unsigned int)1<<16)
+#define ISP_IRQ_STATUS3X_VIPI_DONE_ST ((unsigned int)1<<17)
+#define ISP_IRQ_STATUS3X_VIP2I_DONE_ST ((unsigned int)1<<18)
+#define ISP_IRQ_STATUS3X_VIP3I_DONE_ST ((unsigned int)1<<19)
+#define ISP_IRQ_STATUS3X_LCEI_DONE_ST ((unsigned int)1<<20)
+#define ISP_IRQ_STATUS3X_MFBO_DONE_ST ((unsigned int)1<<21)
+#define ISP_IRQ_STATUS3X_IMG2O_DONE_ST ((unsigned int)1<<22)
+#define ISP_IRQ_STATUS3X_IMG3O_DONE_ST ((unsigned int)1<<23)
+#define ISP_IRQ_STATUS3X_IMG3BO_DONE_ST ((unsigned int)1<<24)
+#define ISP_IRQ_STATUS3X_IMG3CO_DONE_ST ((unsigned int)1<<25)
+#define ISP_IRQ_STATUS3X_FEO_DONE_ST ((unsigned int)1<<26)
+#define ISP_IRQ_STATUS3X_rsv_27 ((unsigned int)1<<27)
+#define ISP_IRQ_STATUS3X_rsv_28 ((unsigned int)1<<28)
+#define ISP_IRQ_STATUS3X_rsv_29 ((unsigned int)1<<29)
+#define ISP_IRQ_STATUS3X_rsv_30 ((unsigned int)1<<30)
+#define ISP_IRQ_STATUS3X_rsv_31 ((unsigned int)1<<31)
+//SENINF1_IRQ_INTSTA
+#define SENINF1_IRQ_OVERRUN_IRQ_STA ((unsigned int)1<<0)
+#define SENINF1_IRQ_CRCERR_IRQ_STA ((unsigned int)1<<1)
+#define SENINF1_IRQ_FSMERR_IRQ_STA ((unsigned int)1<<2)
+#define SENINF1_IRQ_VSIZEERR_IRQ_STA ((unsigned int)1<<3)
+#define SENINF1_IRQ_HSIZEERR_IRQ_STA ((unsigned int)1<<4)
+#define SENINF1_IRQ_SENSOR_VSIZEERR_IRQ_STA ((unsigned int)1<<5)
+#define SENINF1_IRQ_SENSOR_HSIZEERR_IRQ_STA ((unsigned int)1<<6)
+//SENINF2_IRQ_INTSTA
+#define SENINF2_IRQ_OVERRUN_IRQ_STA ((unsigned int)1<<0)
+#define SENINF2_IRQ_CRCERR_IRQ_STA ((unsigned int)1<<1)
+#define SENINF2_IRQ_FSMERR_IRQ_STA ((unsigned int)1<<2)
+#define SENINF2_IRQ_VSIZEERR_IRQ_STA ((unsigned int)1<<3)
+#define SENINF2_IRQ_HSIZEERR_IRQ_STA ((unsigned int)1<<4)
+#define SENINF2_IRQ_SENSOR_VSIZEERR_IRQ_STA ((unsigned int)1<<5)
+#define SENINF2_IRQ_SENSOR_HSIZEERR_IRQ_STA ((unsigned int)1<<6)
+//SENINF3_IRQ_INTSTA
+#define SENINF3_IRQ_OVERRUN_IRQ_STA ((unsigned int)1<<0)
+#define SENINF3_IRQ_CRCERR_IRQ_STA ((unsigned int)1<<1)
+#define SENINF3_IRQ_FSMERR_IRQ_STA ((unsigned int)1<<2)
+#define SENINF3_IRQ_VSIZEERR_IRQ_STA ((unsigned int)1<<3)
+#define SENINF3_IRQ_HSIZEERR_IRQ_STA ((unsigned int)1<<4)
+#define SENINF3_IRQ_SENSOR_VSIZEERR_IRQ_STA ((unsigned int)1<<5)
+#define SENINF3_IRQ_SENSOR_HSIZEERR_IRQ_STA ((unsigned int)1<<6)
+//SENINF4_IRQ_INTSTA
+#define SENINF4_IRQ_OVERRUN_IRQ_STA ((unsigned int)1<<0)
+#define SENINF4_IRQ_CRCERR_IRQ_STA ((unsigned int)1<<1)
+#define SENINF4_IRQ_FSMERR_IRQ_STA ((unsigned int)1<<2)
+#define SENINF4_IRQ_VSIZEERR_IRQ_STA ((unsigned int)1<<3)
+#define SENINF4_IRQ_HSIZEERR_IRQ_STA ((unsigned int)1<<4)
+#define SENINF4_IRQ_SENSOR_VSIZEERR_IRQ_STA ((unsigned int)1<<5)
+#define SENINF4_IRQ_SENSOR_HSIZEERR_IRQ_STA ((unsigned int)1<<6)
+//REG_CAMSV_INT_STATUS
+#define ISP_IRQ_CAMSV_STATUS_VS1_ST ((unsigned int)1<<0)
+#define ISP_IRQ_CAMSV_STATUS_TG_ST1 ((unsigned int)1<<1)
+#define ISP_IRQ_CAMSV_STATUS_TG_ST2 ((unsigned int)1<<2)
+#define ISP_IRQ_CAMSV_STATUS_EXPDON1_ST ((unsigned int)1<<3)
+#define ISP_IRQ_CAMSV_STATUS_TG_ERR_ST ((unsigned int)1<<4)
+#define ISP_IRQ_CAMSV_STATUS_TG_GBERR_ST ((unsigned int)1<<5)
+#define ISP_IRQ_CAMSV_STATUS_TG_DROP_ST ((unsigned int)1<<6)
+#define ISP_IRQ_CAMSV_STATUS_TG_SOF1_ST ((unsigned int)1<<7)
+#define ISP_IRQ_CAMSV_STATUS_rsv_8 ((unsigned int)1<<8)
+#define ISP_IRQ_CAMSV_STATUS_rsv_9 ((unsigned int)1<<9)
+#define ISP_IRQ_CAMSV_STATUS_PASS1_DON_ST ((unsigned int)1<<10)
+#define ISP_IRQ_CAMSV_STATUS_rsv_11 ((unsigned int)1<<11)
+#define ISP_IRQ_CAMSV_STATUS_rsv_12 ((unsigned int)1<<12)
+#define ISP_IRQ_CAMSV_STATUS_rsv_13 ((unsigned int)1<<13)
+#define ISP_IRQ_CAMSV_STATUS_rsv_14 ((unsigned int)1<<14)
+#define ISP_IRQ_CAMSV_STATUS_rsv_15 ((unsigned int)1<<15)
+#define ISP_IRQ_CAMSV_STATUS_IMGO_ERR_ST ((unsigned int)1<<16)
+#define ISP_IRQ_CAMSV_STATUS_IMGO_OVERR_ST ((unsigned int)1<<17)
+#define ISP_IRQ_CAMSV_STATUS_rsv_18 ((unsigned int)1<<18)
+#define ISP_IRQ_CAMSV_STATUS_IMGO_DROP_ST ((unsigned int)1<<19)
+//REG_ISP_IRQ_CAMSV2_STATUS
+#define ISP_IRQ_CAMSV2_STATUS_VS1_ST ((unsigned int)1<<0)
+#define ISP_IRQ_CAMSV2_STATUS_TG_ST1 ((unsigned int)1<<1)
+#define ISP_IRQ_CAMSV2_STATUS_TG_ST2 ((unsigned int)1<<2)
+#define ISP_IRQ_CAMSV2_STATUS_EXPDON1_ST ((unsigned int)1<<3)
+#define ISP_IRQ_CAMSV2_STATUS_TG_ERR_ST ((unsigned int)1<<4)
+#define ISP_IRQ_CAMSV2_STATUS_TG_GBERR_ST ((unsigned int)1<<5)
+#define ISP_IRQ_CAMSV2_STATUS_TG_DROP_ST ((unsigned int)1<<6)
+#define ISP_IRQ_CAMSV2_STATUS_TG_SOF1_ST ((unsigned int)1<<7)
+#define ISP_IRQ_CAMSV2_STATUS_rsv_8 ((unsigned int)1<<8)
+#define ISP_IRQ_CAMSV2_STATUS_rsv_9 ((unsigned int)1<<9)
+#define ISP_IRQ_CAMSV2_STATUS_PASS1_DON_ST ((unsigned int)1<<10)
+#define ISP_IRQ_CAMSV2_STATUS_rsv_11 ((unsigned int)1<<11)
+#define ISP_IRQ_CAMSV2_STATUS_rsv_12 ((unsigned int)1<<12)
+#define ISP_IRQ_CAMSV2_STATUS_rsv_13 ((unsigned int)1<<13)
+#define ISP_IRQ_CAMSV2_STATUS_rsv_14 ((unsigned int)1<<14)
+#define ISP_IRQ_CAMSV2_STATUS_rsv_15 ((unsigned int)1<<15)
+#define ISP_IRQ_CAMSV2_STATUS_IMGO_ERR_ST ((unsigned int)1<<16)
+#define ISP_IRQ_CAMSV2_STATUS_IMGO_OVERR_ST ((unsigned int)1<<17)
+#define ISP_IRQ_CAMSV2_STATUS_rsv_18 ((unsigned int)1<<18)
+#define ISP_IRQ_CAMSV2_STATUS_IMGO_DROP_ST ((unsigned int)1<<19)
+
+/*******************************************************************************
+*
+********************************************************************************/
+
+//defined if want to support multiple dequne and enque or camera 3.0
+/**
+ support multiple deque and enque if defined.
+ note: still en/de que 1 buffer each time only
+ e.g:
+ deque();
+ deque();
+ enque();
+ enque();
+*/
+#define _rtbc_buf_que_2_0_
+
+
+typedef enum
+{
+ ISP_IRQ_CLEAR_NONE,
+ ISP_IRQ_CLEAR_WAIT,
+ ISP_IRQ_CLEAR_STATUS,
+ ISP_IRQ_CLEAR_ALL
+}ISP_IRQ_CLEAR_ENUM;
+
+typedef enum
+{
+ ISP_IRQ_TYPE_INT_P1_ST, //P1
+ ISP_IRQ_TYPE_INT_P1_ST2, //P1_DMA
+ ISP_IRQ_TYPE_INT_P1_ST_D, //P1_D
+ ISP_IRQ_TYPE_INT_P1_ST2_D, //P1_DMA_D
+ ISP_IRQ_TYPE_INT_P2_ST, //P2
+ ISP_IRQ_TYPE_INT_STATUSX, //STATUSX, P1 AND P2
+ ISP_IRQ_TYPE_INT_STATUS2X, //STATUS2X, P1_D
+ ISP_IRQ_TYPE_INT_STATUS3X, //STATUS3X, ALL DMA
+ ISP_IRQ_TYPE_ISP_AMOUNT,
+ ISP_IRQ_TYPE_INT_SENINF1=ISP_IRQ_TYPE_ISP_AMOUNT,
+ ISP_IRQ_TYPE_INT_SENINF2,
+ ISP_IRQ_TYPE_INT_SENINF3,
+ ISP_IRQ_TYPE_INT_SENINF4,
+ ISP_IRQ_TYPE_SENINF_AMOUNT,
+ ISP_IRQ_TYPE_INT_CAMSV=ISP_IRQ_TYPE_SENINF_AMOUNT,
+ ISP_IRQ_TYPE_INT_CAMSV2,
+ ISP_IRQ_TYPE_AMOUNT
+}ISP_IRQ_TYPE_ENUM;
+
+
+typedef enum
+{
+ ISP_IRQ_USER_ISPDRV = 0,
+ ISP_IRQ_USER_MW = 1,
+ ISP_IRQ_USER_3A = 2,
+ ISP_IRQ_USER_HWSYNC = 3,
+ ISP_IRQ_USER_ACDK = 4,
+ ISP_IRQ_USER_EIS = 5,
+ ISP_IRQ_USER_VHDR = 6,
+ ISP_IRQ_USER_MAX
+}ISP_IRQ_USER_ENUM;
+
+typedef struct
+{
+ ISP_IRQ_TYPE_ENUM Type;
+ unsigned int Status;
+ int UserKey; /* user key for doing interrupt operation */
+}ISP_IRQ_USER_STRUCT;
+
+typedef enum //special user for specific operation
+{
+ ISP_IRQ_WAITIRQ_SPEUSER_NONE = 0,
+ ISP_IRQ_WAITIRQ_SPEUSER_EIS = 1,
+ ISP_IRQ_WAITIRQ_SPEUSER_NUM
+}ISP_IRQ_WAITIRQ_SPEUSER_ENUM;
+
+typedef struct
+{
+ unsigned int tLastSig_sec; /* time stamp of the latest occuring signal*/
+ unsigned int tLastSig_usec; /* time stamp of the latest occuring signal*/
+ unsigned int tMark2WaitSig_sec; /* time period from marking a signal to user try to wait and get the signal*/
+ unsigned int tMark2WaitSig_usec; /* time period from marking a signal to user try to wait and get the signal*/
+ unsigned int tLastSig2GetSig_sec; /* time period from latest occuring signal to user try to wait and get the signal*/
+ unsigned int tLastSig2GetSig_usec; /* time period from latest occuring signal to user try to wait and get the signal*/
+ int passedbySigcnt; /* the count for the signal passed by */
+}ISP_IRQ_TIME_STRUCT;
+
+typedef struct
+{
+ unsigned int tLastSOF2P1done_sec; /* time stamp of the last closest occuring sof signal for pass1 done*/
+ unsigned int tLastSOF2P1done_usec; /* time stamp of the last closest occuring sof signal for pass1 done*/
+}ISP_EIS_META_STRUCT;
+
+
+typedef struct
+{
+ ISP_IRQ_CLEAR_ENUM Clear; //v1 & v3
+ ISP_IRQ_TYPE_ENUM Type; //v1 only
+ unsigned int Status; //v1 only
+ int UserNumber; //v1 only
+ unsigned int Timeout; //v1 & v3
+ char* UserName; //no use
+ unsigned int irq_TStamp; //v1 & v3
+ unsigned int bDumpReg; //v1 & v3
+ ISP_IRQ_USER_STRUCT UserInfo; //v3 only
+ ISP_IRQ_TIME_STRUCT TimeInfo; //v3 only
+ ISP_EIS_META_STRUCT EisMeta; //v1&v3
+ ISP_IRQ_WAITIRQ_SPEUSER_ENUM SpecUser;
+}ISP_WAIT_IRQ_STRUCT;
+
+typedef struct
+{
+ int userKey;
+ char* userName;
+}ISP_REGISTER_USERKEY_STRUCT;
+
+typedef struct
+{
+ ISP_IRQ_TYPE_ENUM Type;
+ ISP_IRQ_USER_ENUM UserNumber;
+ unsigned int Status;
+}ISP_READ_IRQ_STRUCT;
+
+typedef struct
+{
+ ISP_IRQ_TYPE_ENUM Type;
+ ISP_IRQ_USER_ENUM UserNumber;
+ unsigned int Status;
+}ISP_CLEAR_IRQ_STRUCT;
+
+typedef enum
+{
+ ISP_HOLD_TIME_VD,
+ ISP_HOLD_TIME_EXPDONE
+}ISP_HOLD_TIME_ENUM;
+
+typedef struct
+{
+ unsigned int Addr; // register's addr
+ unsigned int Val; // register's value
+}ISP_REG_STRUCT;
+
+typedef struct
+{
+ //unsigned int Data; // pointer to ISP_REG_STRUCT
+ ISP_REG_STRUCT* pData; // pointer to ISP_REG_STRUCT
+ unsigned int Count; // count
+}ISP_REG_IO_STRUCT;
+
+typedef void (*pIspCallback)(void);
+
+typedef enum
+{
+ //Work queue. It is interruptible, so there can be "Sleep" in work queue function.
+ ISP_CALLBACK_WORKQUEUE_VD,
+ ISP_CALLBACK_WORKQUEUE_EXPDONE,
+ //Tasklet. It is uninterrupted, so there can NOT be "Sleep" in tasklet function.
+ ISP_CALLBACK_TASKLET_VD,
+ ISP_CALLBACK_TASKLET_EXPDONE,
+ ISP_CALLBACK_AMOUNT
+}ISP_CALLBACK_ENUM;
+
+typedef struct
+{
+ ISP_CALLBACK_ENUM Type;
+ pIspCallback Func;
+}ISP_CALLBACK_STRUCT;
+
+//
+// length of the two memory areas
+#define P1_DEQUE_CNT 1
+#define RT_BUF_TBL_NPAGES 16
+#define ISP_RT_BUF_SIZE 16
+#define ISP_RT_CQ0C_BUF_SIZE (ISP_RT_BUF_SIZE)//(ISP_RT_BUF_SIZE>>1)
+//pass1 setting sync index
+#define ISP_REG_P1_CFG_IDX 0x4090
+//
+typedef enum
+{
+ _cam_tg_ = 0,
+ _cam_tg2_ , // 1
+ _camsv_tg_, // 2
+ _camsv2_tg_, // 3
+ _cam_tg_max_
+}_isp_tg_enum_;
+
+//
+typedef enum
+{
+ _imgi_ = 0,
+ _vipi_ , // 1
+ _vip2i_, // 2
+ _vip3i_, // 3
+ _imgo_, // 4
+ _ufdi_, // 5
+ _lcei_, // 6
+ _ufeo_, // 7
+ _rrzo_, // 8
+ _imgo_d_, // 9
+ _rrzo_d_, // 10
+ _img2o_, // 11
+ _img3o_, // 12
+ _img3bo_, // 13
+ _img3co_, // 14
+ _camsv_imgo_, // 15
+ _camsv2_imgo_,// 16
+ _mfbo_, // 17
+ _feo_, //18
+ _wrot_, // 19
+ _wdma_, // 20
+ _jpeg_, // 21
+ _venc_stream_, // 21
+ _rt_dma_max_
+}_isp_dma_enum_;
+//
+typedef struct {
+ unsigned int w; //tg size
+ unsigned int h;
+ unsigned int xsize; //dmao xsize
+ unsigned int stride;
+ unsigned int fmt;
+ unsigned int pxl_id;
+ unsigned int wbn;
+ unsigned int ob;
+ unsigned int lsc;
+ unsigned int rpg;
+ unsigned int m_num_0;
+ unsigned int frm_cnt;
+ unsigned int bus_size;
+}ISP_RT_IMAGE_INFO_STRUCT;
+
+typedef struct {
+ unsigned int srcX; //crop window start point
+ unsigned int srcY;
+ unsigned int srcW; //crop window size
+ unsigned int srcH;
+ unsigned int dstW; //rrz out size
+ unsigned int dstH;
+}ISP_RT_RRZ_INFO_STRUCT;
+
+typedef struct{
+ unsigned int x; //in pix
+ unsigned int y; //in pix
+ unsigned int w; //in byte
+ unsigned int h; //in byte
+}ISP_RT_DMAO_CROPPING_STRUCT;
+
+typedef struct {
+ unsigned int memID;
+ unsigned int size;
+ long long base_vAddr;
+ unsigned int base_pAddr;
+ unsigned int timeStampS;
+ unsigned int timeStampUs;
+ unsigned int bFilled;
+ unsigned int bProcessRaw;
+ ISP_RT_IMAGE_INFO_STRUCT image;
+ ISP_RT_RRZ_INFO_STRUCT rrzInfo;
+ ISP_RT_DMAO_CROPPING_STRUCT dmaoCrop; //imgo
+ unsigned int bDequeued;
+ signed int bufIdx;//used for replace buffer
+}ISP_RT_BUF_INFO_STRUCT;
+//
+typedef struct {
+ unsigned int count;
+ unsigned int sof_cnt; //cnt for current sof
+ unsigned int img_cnt; //cnt for mapping to which sof
+ //rome support only deque 1 image at a time
+ //ISP_RT_BUF_INFO_STRUCT data[ISP_RT_BUF_SIZE];
+ ISP_RT_BUF_INFO_STRUCT data[P1_DEQUE_CNT];
+}ISP_DEQUE_BUF_INFO_STRUCT;
+//
+typedef struct {
+ unsigned int start; //current DMA accessing buffer
+ unsigned int total_count; //total buffer number.Include Filled and empty
+ unsigned int empty_count; //total empty buffer number include current DMA accessing buffer
+ unsigned int pre_empty_count;//previous total empty buffer number include current DMA accessing buffer
+ unsigned int active;
+ unsigned int read_idx;
+ unsigned int img_cnt; //cnt for mapping to which sof
+ ISP_RT_BUF_INFO_STRUCT data[ISP_RT_BUF_SIZE];
+}ISP_RT_RING_BUF_INFO_STRUCT;
+//
+typedef enum
+{
+ ISP_RT_BUF_CTRL_ENQUE, // 0
+#ifdef _rtbc_buf_que_2_0_
+ ISP_RT_BUF_CTRL_ENQUE_IMD, // for directly enque
+#else
+ ISP_RT_BUF_CTRL_ENQUE_IMD = ISP_RT_BUF_CTRL_ENQUE,
+#endif
+ ISP_RT_BUF_CTRL_EXCHANGE_ENQUE, // 1
+ ISP_RT_BUF_CTRL_DEQUE, // 2
+ ISP_RT_BUF_CTRL_IS_RDY, // 3
+#ifdef _rtbc_buf_que_2_0_
+ ISP_RT_BUF_CTRL_DMA_EN, // 4
+#endif
+ ISP_RT_BUF_CTRL_GET_SIZE, // 5
+ ISP_RT_BUF_CTRL_CLEAR, // 6
+ ISP_RT_BUF_CTRL_CUR_STATUS, //7
+ ISP_RT_BUF_CTRL_MAX
+}ISP_RT_BUF_CTRL_ENUM;
+//
+typedef enum
+{
+ ISP_RTBC_STATE_INIT, // 0
+ ISP_RTBC_STATE_SOF,
+ ISP_RTBC_STATE_DONE,
+ ISP_RTBC_STATE_MAX
+}ISP_RTBC_STATE_ENUM;
+//
+typedef enum
+{
+ ISP_RTBC_BUF_EMPTY, // 0
+ ISP_RTBC_BUF_FILLED,// 1
+ ISP_RTBC_BUF_LOCKED,// 2
+}ISP_RTBC_BUF_STATE_ENUM;
+//
+typedef enum
+{
+ ISP_RROCESSED_RAW,// 0
+ ISP_PURE_RAW, // 1
+}ISP_RAW_TYPE_ENUM;
+//
+typedef struct {
+ ISP_RTBC_STATE_ENUM state;
+ unsigned long dropCnt;
+ ISP_RT_RING_BUF_INFO_STRUCT ring_buf[_rt_dma_max_];
+}ISP_RT_BUF_STRUCT;
+//
+typedef struct {
+ ISP_RT_BUF_CTRL_ENUM ctrl;
+ _isp_dma_enum_ buf_id;
+ //unsigned int data_ptr;
+ //unsigned int ex_data_ptr; //exchanged buffer
+ ISP_RT_BUF_INFO_STRUCT* data_ptr;
+ ISP_RT_BUF_INFO_STRUCT* ex_data_ptr; //exchanged buffer
+ unsigned char* pExtend;
+}ISP_BUFFER_CTRL_STRUCT;
+//
+//reference count
+#define _use_kernel_ref_cnt_
+//
+typedef enum
+{
+ ISP_REF_CNT_GET, // 0
+ ISP_REF_CNT_INC, // 1
+ ISP_REF_CNT_DEC, // 2
+ ISP_REF_CNT_DEC_AND_RESET_P1_P2_IF_LAST_ONE, // 3
+ ISP_REF_CNT_DEC_AND_RESET_P1_IF_LAST_ONE, // 4
+ ISP_REF_CNT_DEC_AND_RESET_P2_IF_LAST_ONE, // 5
+ ISP_REF_CNT_MAX
+}ISP_REF_CNT_CTRL_ENUM;
+//
+typedef enum
+{
+ ISP_REF_CNT_ID_IMEM, // 0
+ ISP_REF_CNT_ID_ISP_FUNC,// 1
+ ISP_REF_CNT_ID_GLOBAL_PIPE, // 2
+ ISP_REF_CNT_ID_P1_PIPE, // 3
+ ISP_REF_CNT_ID_P2_PIPE, // 4
+ ISP_REF_CNT_ID_MAX,
+}ISP_REF_CNT_ID_ENUM;
+//
+typedef struct {
+ ISP_REF_CNT_CTRL_ENUM ctrl;
+ ISP_REF_CNT_ID_ENUM id;
+ signed int* data_ptr;
+}ISP_REF_CNT_CTRL_STRUCT;
+
+//struct for enqueue/dequeue control in ihalpipe wrapper
+typedef enum
+{
+ ISP_ED_BUFQUE_CTRL_ENQUE_FRAME=0, // 0,signal that a specific buffer is enqueued
+ ISP_ED_BUFQUE_CTRL_WAIT_DEQUE, // 1,a dequeue thread is waiting to do dequeue
+ ISP_ED_BUFQUE_CTRL_DEQUE_SUCCESS, // 2,signal that a buffer is dequeued (success)
+ ISP_ED_BUFQUE_CTRL_DEQUE_FAIL, // 3,signal that a buffer is dequeued (fail)
+ ISP_ED_BUFQUE_CTRL_WAIT_FRAME, // 4,wait for a specific buffer
+ ISP_ED_BUFQUE_CTRL_WAKE_WAITFRAME, // 5,wake all sleeped users to check buffer is dequeued or not
+ ISP_ED_BUFQUE_CTRL_CLAER_ALL, // 6,free all recored dequeued buffer
+ ISP_ED_BUFQUE_CTRL_MAX
+}ISP_ED_BUFQUE_CTRL_ENUM;
+
+typedef struct
+{
+ ISP_ED_BUFQUE_CTRL_ENUM ctrl;
+ unsigned int processID;
+ unsigned int callerID;
+ int p2burstQIdx;
+ int p2dupCQIdx;
+ unsigned int timeoutUs;
+}ISP_ED_BUFQUE_STRUCT;
+
+typedef enum
+{
+ ISP_ED_BUF_STATE_NONE =-1,
+ ISP_ED_BUF_STATE_ENQUE=0,
+ ISP_ED_BUF_STATE_RUNNING,
+ ISP_ED_BUF_STATE_WAIT_DEQUE_FAIL,
+ ISP_ED_BUF_STATE_DEQUE_SUCCESS,
+ ISP_ED_BUF_STATE_DEQUE_FAIL
+}ISP_ED_BUF_STATE_ENUM;
+/********************************************************************************************
+ pass1 real time buffer control use cq0c
+********************************************************************************************/
+//
+#define _rtbc_use_cq0c_
+
+#define _MAGIC_NUM_ERR_HANDLING_
+
+
+#if defined(_rtbc_use_cq0c_)
+//
+typedef struct _cq_cmd_st_
+{
+ unsigned int inst;
+ unsigned int data_ptr_pa;
+}CQ_CMD_ST;
+/*
+typedef struct _cq_cmd_rtbc_st_
+{
+ CQ_CMD_ST imgo;
+ CQ_CMD_ST img2o;
+ CQ_CMD_ST cq0ci;
+ CQ_CMD_ST end;
+}CQ_CMD_RTBC_ST;
+*/
+typedef struct _cq_info_rtbc_st_
+{
+ CQ_CMD_ST imgo;
+ CQ_CMD_ST rrzo;
+ CQ_CMD_ST next_cq0ci;
+ CQ_CMD_ST end;
+ unsigned int imgo_base_pAddr;
+ unsigned int rrzo_base_pAddr;
+ signed int imgo_buf_idx; //used for replace buffer
+ signed int rrzo_buf_idx; //used for replace buffer
+}CQ_INFO_RTBC_ST;
+typedef struct _cq_ring_cmd_st_
+{
+ CQ_INFO_RTBC_ST cq_rtbc;
+ unsigned long next_pa;
+ struct _cq_ring_cmd_st_ *pNext;
+}CQ_RING_CMD_ST;
+typedef struct _cq_rtbc_ring_st_
+{
+ CQ_RING_CMD_ST rtbc_ring[ISP_RT_CQ0C_BUF_SIZE];
+ unsigned int imgo_ring_size;
+ unsigned int rrzo_ring_size;
+}CQ_RTBC_RING_ST;
+#endif
+
+//CQ0B for AE smoothing, set obc_gain0~3
+typedef struct _cq0b_info_rtbc_st_
+{
+ CQ_CMD_ST ob;
+ CQ_CMD_ST end;
+}CQ0B_INFO_RTBC_ST;
+
+typedef struct _cq0b_ring_cmd_st_
+{
+ CQ0B_INFO_RTBC_ST cq0b_rtbc;
+ unsigned long next_pa;
+ struct _cq0b_ring_cmd_st_ *pNext;
+}CQ0B_RING_CMD_ST;
+
+typedef struct _cq0b_rtbc_ring_st_
+{
+ CQ0B_RING_CMD_ST rtbc_ring;
+}CQ0B_RTBC_RING_ST;
+//
+typedef volatile union _CQ_RTBC_FBC_
+{
+ volatile struct
+ {
+ unsigned int FBC_CNT : 4;
+ unsigned int rsv_4 : 7;
+ unsigned int RCNT_INC : 1;
+ unsigned int rsv_12 : 2;
+ unsigned int FBC_EN : 1;
+ unsigned int LOCK_EN : 1;
+ unsigned int FB_NUM : 4;
+ unsigned int RCNT : 4;
+ unsigned int WCNT : 4;
+ unsigned int DROP_CNT : 4;
+ } Bits;
+ unsigned int Reg_val;
+}CQ_RTBC_FBC;
+
+//
+/********************************************************************************************
+
+********************************************************************************************/
+
+
+/*******************************************************************************
+*
+********************************************************************************/
+typedef enum
+{
+ ISP_CMD_RESET_CAM_P1, //Reset
+ ISP_CMD_RESET_CAM_P2,
+ ISP_CMD_RESET_CAMSV,
+ ISP_CMD_RESET_CAMSV2,
+ ISP_CMD_RESET_BUF,
+ ISP_CMD_READ_REG, //Read register from driver
+ ISP_CMD_WRITE_REG, //Write register to driver
+ ISP_CMD_HOLD_TIME,
+ ISP_CMD_HOLD_REG, //Hold reg write to hw, on/off
+ ISP_CMD_WAIT_IRQ, //Wait IRQ
+ ISP_CMD_READ_IRQ, //Read IRQ
+ ISP_CMD_CLEAR_IRQ, //Clear IRQ
+ ISP_CMD_DUMP_REG, //Dump ISP registers , for debug usage
+ ISP_CMD_SET_USER_PID, //for signal
+ ISP_CMD_RT_BUF_CTRL, //for pass buffer control
+ ISP_CMD_REF_CNT, //get imem reference count
+ ISP_CMD_DEBUG_FLAG, //Dump message level
+ ISP_CMD_REGISTER_IRQ, //register for a specific irq
+ ISP_CMD_UNREGISTER_IRQ, //unregister for a specific irq
+ ISP_CMD_ED_QUEBUF_CTRL,
+ ISP_CMD_UPDATE_REGSCEN,
+ ISP_CMD_QUERY_REGSCEN,
+ ISP_CMD_UPDATE_BURSTQNUM,
+ ISP_CMD_QUERY_BURSTQNUM,
+ ISP_CMD_DUMP_ISR_LOG, //dump isr log
+ ISP_CMD_GET_CUR_SOF,
+ ISP_CMD_GET_DMA_ERR,
+ ISP_CMD_GET_INT_ERR,
+ ISP_CMD_GET_DROP_FRAME, //dump current frame informaiton, 1 for drop frmae, 2 for last working frame
+#ifdef T_STAMP_2_0
+ ISP_CMD_SET_FPS,
+#endif
+ ISP_CMD_WAKELOCK_CTRL,
+ ISP_CMD_REGISTER_IRQ_USER_KEY, /* register for a user key to do irq operation */
+ ISP_CMD_MARK_IRQ_REQUEST, /* mark for a specific register befor wait for the interrupt if needed */
+ ISP_CMD_GET_MARK2QUERY_TIME, /* query time information between read and mark */
+ ISP_CMD_FLUSH_IRQ_REQUEST, /* flush signal */
+}ISP_CMD_ENUM;
+//
+#define ISP_RESET_CAM_P1 _IO (ISP_MAGIC, ISP_CMD_RESET_CAM_P1)
+#define ISP_RESET_CAM_P2 _IO (ISP_MAGIC, ISP_CMD_RESET_CAM_P2)
+#define ISP_RESET_CAMSV _IO (ISP_MAGIC, ISP_CMD_RESET_CAMSV)
+#define ISP_RESET_CAMSV2 _IO (ISP_MAGIC, ISP_CMD_RESET_CAMSV2)
+#define ISP_RESET_BUF _IO (ISP_MAGIC, ISP_CMD_RESET_BUF)
+#define ISP_READ_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_READ_REG, ISP_REG_IO_STRUCT)
+#define ISP_WRITE_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_WRITE_REG, ISP_REG_IO_STRUCT)
+#define ISP_HOLD_REG_TIME _IOW (ISP_MAGIC, ISP_CMD_HOLD_TIME, ISP_HOLD_TIME_ENUM)
+#define ISP_HOLD_REG _IOW (ISP_MAGIC, ISP_CMD_HOLD_REG, bool)
+#define ISP_WAIT_IRQ _IOW (ISP_MAGIC, ISP_CMD_WAIT_IRQ, ISP_WAIT_IRQ_STRUCT)
+#define ISP_READ_IRQ _IOR (ISP_MAGIC, ISP_CMD_READ_IRQ, ISP_READ_IRQ_STRUCT)
+#define ISP_CLEAR_IRQ _IOW (ISP_MAGIC, ISP_CMD_CLEAR_IRQ, ISP_CLEAR_IRQ_STRUCT)
+#define ISP_DUMP_REG _IO (ISP_MAGIC, ISP_CMD_DUMP_REG)
+#define ISP_SET_USER_PID _IOW (ISP_MAGIC, ISP_CMD_SET_USER_PID, unsigned int)
+#define ISP_BUFFER_CTRL _IOWR(ISP_MAGIC, ISP_CMD_RT_BUF_CTRL, ISP_BUFFER_CTRL_STRUCT)
+#define ISP_REF_CNT_CTRL _IOWR(ISP_MAGIC, ISP_CMD_REF_CNT, ISP_REF_CNT_CTRL_STRUCT)
+#define ISP_DEBUG_FLAG _IOW (ISP_MAGIC, ISP_CMD_DEBUG_FLAG, unsigned char*)
+#define ISP_REGISTER_IRQ _IOW (ISP_MAGIC, ISP_CMD_REGISTER_IRQ, ISP_WAIT_IRQ_STRUCT)
+#define ISP_UNREGISTER_IRQ _IOW (ISP_MAGIC, ISP_CMD_UNREGISTER_IRQ, ISP_WAIT_IRQ_STRUCT)
+#define ISP_ED_QUEBUF_CTRL _IOWR (ISP_MAGIC, ISP_CMD_ED_QUEBUF_CTRL, ISP_ED_BUFQUE_STRUCT)
+#define ISP_UPDATE_REGSCEN _IOWR (ISP_MAGIC, ISP_CMD_UPDATE_REGSCEN, unsigned int)
+#define ISP_QUERY_REGSCEN _IOR (ISP_MAGIC, ISP_CMD_QUERY_REGSCEN, unsigned int)
+#define ISP_UPDATE_BURSTQNUM _IOW(ISP_MAGIC,ISP_CMD_UPDATE_BURSTQNUM, int)
+#define ISP_QUERY_BURSTQNUM _IOR (ISP_MAGIC,ISP_CMD_QUERY_BURSTQNUM, int)
+#define ISP_DUMP_ISR_LOG _IO (ISP_MAGIC, ISP_CMD_DUMP_ISR_LOG)
+#define ISP_GET_CUR_SOF _IOR (ISP_MAGIC, ISP_CMD_GET_CUR_SOF, unsigned int)
+#define ISP_GET_DMA_ERR _IOWR (ISP_MAGIC, ISP_CMD_GET_DMA_ERR, unsigned char*)
+#define ISP_GET_INT_ERR _IOR (ISP_MAGIC, ISP_CMD_GET_INT_ERR, unsigned char*)
+#define ISP_GET_DROP_FRAME _IOWR (ISP_MAGIC, ISP_CMD_GET_DROP_FRAME, unsigned int)
+#ifdef T_STAMP_2_0
+ #define ISP_SET_FPS _IOW (ISP_MAGIC, ISP_CMD_SET_FPS, unsigned int)
+#endif
+#define ISP_REGISTER_IRQ_USER_KEY _IOR(ISP_MAGIC,ISP_CMD_REGISTER_IRQ_USER_KEY,ISP_REGISTER_USERKEY_STRUCT)
+#define ISP_MARK_IRQ_REQUEST _IOWR(ISP_MAGIC,ISP_CMD_MARK_IRQ_REQUEST,ISP_WAIT_IRQ_STRUCT)
+#define ISP_GET_MARK2QUERY_TIME _IOWR(ISP_MAGIC,ISP_CMD_GET_MARK2QUERY_TIME,ISP_WAIT_IRQ_STRUCT)
+#define ISP_FLUSH_IRQ_REQUEST _IOW(ISP_MAGIC,ISP_CMD_FLUSH_IRQ_REQUEST,ISP_WAIT_IRQ_STRUCT)
+
+#define ISP_WAKELOCK_CTRL _IOWR (ISP_MAGIC, ISP_CMD_WAKELOCK_CTRL, unsigned int)
+
+//
+bool ISP_RegCallback(ISP_CALLBACK_STRUCT* pCallback);
+bool ISP_UnregCallback(ISP_CALLBACK_ENUM Type);
+int32_t ISP_MDPClockOnCallback(uint64_t engineFlag);
+int32_t ISP_MDPDumpCallback(uint64_t engineFlag,
+ int level);
+int32_t ISP_MDPResetCallback(uint64_t engineFlag);
+
+int32_t ISP_MDPClockOffCallback(uint64_t engineFlag);
+
+int32_t ISP_BeginGCECallback(uint32_t taskID, uint32_t *regCount, uint32_t **regAddress);
+int32_t ISP_EndGCECallback(uint32_t taskID, uint32_t regCount, uint32_t *regValues);
+
+//
+#endif
+
diff --git a/kernel-headers/camera_isp_D2.h b/kernel-headers/camera_isp_D2.h
new file mode 100755
index 0000000..c2d3cc7
--- /dev/null
+++ b/kernel-headers/camera_isp_D2.h
@@ -0,0 +1,537 @@
+/*
+* Copyright (C) 2011-2014 MediaTek Inc.
+*
+* 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.
+*
+* You should have received a copy of the GNU General Public License along with this program.
+* If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _MT_ISP_H
+#define _MT_ISP_H
+
+#include <linux/ioctl.h>
+
+#ifdef CONFIG_COMPAT
+//64 bit
+#include <linux/fs.h>
+#include <linux/compat.h>
+#endif
+
+//89serial IC , for HW FBC
+#define _89SERIAL_
+
+/*******************************************************************************
+*
+********************************************************************************/
+#define ISP_DEV_MAJOR_NUMBER 251
+#define ISP_MAGIC 'k'
+/*******************************************************************************
+*
+********************************************************************************/
+//CAM_CTL_INT_STATUS
+#define ISP_IRQ_INT_STATUS_VS1_ST ((unsigned int)1 << 0)
+#define ISP_IRQ_INT_STATUS_TG1_ST1 ((unsigned int)1 << 1)
+#define ISP_IRQ_INT_STATUS_TG1_ST2 ((unsigned int)1 << 2)
+#define ISP_IRQ_INT_STATUS_EXPDON1_ST ((unsigned int)1 << 3)
+#define ISP_IRQ_INT_STATUS_TG1_ERR_ST ((unsigned int)1 << 4)
+#define ISP_IRQ_INT_STATUS_PASS1_TG1_DON_ST ((unsigned int)1 << 10)
+#define ISP_IRQ_INT_STATUS_SOF1_INT_ST ((unsigned int)1 << 12)
+#define ISP_IRQ_INT_STATUS_CQ_ERR_ST ((unsigned int)1 << 13)
+#define ISP_IRQ_INT_STATUS_PASS2_DON_ST ((unsigned int)1 << 14)
+#define ISP_IRQ_INT_STATUS_TPIPE_DON_ST ((unsigned int)1 << 15)
+#define ISP_IRQ_INT_STATUS_AF_DON_ST ((unsigned int)1 << 16)
+#define ISP_IRQ_INT_STATUS_FLK_DON_ST ((unsigned int)1 << 17)
+#define ISP_IRQ_INT_STATUS_CQ_DON_ST ((unsigned int)1 << 19)
+#define ISP_IRQ_INT_STATUS_IMGO_ERR_ST ((unsigned int)1 << 20)
+#define ISP_IRQ_INT_STATUS_AAO_ERR_ST ((unsigned int)1 << 21)
+#define ISP_IRQ_INT_STATUS_IMG2O_ERR_ST ((unsigned int)1 << 23)
+#define ISP_IRQ_INT_STATUS_ESFKO_ERR_ST ((unsigned int)1 << 24)
+#define ISP_IRQ_INT_STATUS_FLK_ERR_ST ((unsigned int)1 << 25)
+#define ISP_IRQ_INT_STATUS_LSC_ERR_ST ((unsigned int)1 << 26)
+#define ISP_IRQ_INT_STATUS_FBC_IMGO_DONE_ST ((unsigned int)1 << 28)
+#define ISP_IRQ_INT_STATUS_DMA_ERR_ST ((unsigned int)1 << 30)
+//CAM_CTL_DMA_INT
+#define ISP_IRQ_DMA_INT_IMGO_DONE_ST ((unsigned int)1 << 0)
+#define ISP_IRQ_DMA_INT_IMG2O_DONE_ST ((unsigned int)1 << 1)
+#define ISP_IRQ_DMA_INT_AAO_DONE_ST ((unsigned int)1 << 2)
+//#define ISP_IRQ_DMA_INT_LCSO_DONE_ST ((unsigned int)1 << 3)
+#define ISP_IRQ_DMA_INT_ESFKO_DONE_ST ((unsigned int)1 << 4)
+//#define ISP_IRQ_DMA_INT_DISPO_DONE_ST ((unsigned int)1 << 5)
+//#define ISP_IRQ_DMA_INT_VIDO_DONE_ST ((unsigned int)1 << 6)
+//#define ISP_IRQ_DMA_INT_VRZO_DONE_ST ((unsigned int)1 << 7)
+#define ISP_IRQ_DMA_INT_CQ0_ERR_ST ((unsigned int)1 << 8)
+#define ISP_IRQ_DMA_INT_CQ0_DONE_ST ((unsigned int)1 << 9)
+//#define ISP_IRQ_DMA_INT_SOF2_INT_ST ((unsigned int)1 << 10)
+//#define ISP_IRQ_DMA_INT_BUF_OVL_ST ((unsigned int)1 << 11)
+#define ISP_IRQ_DMA_INT_TG1_GBERR_ST ((unsigned int)1 << 12)
+//#define ISP_IRQ_DMA_INT_TG2_GBERR_ST ((unsigned int)1 << 13)
+#define ISP_IRQ_DMA_INT_CQ0C_DONE_ST ((unsigned int)1 << 14)
+#define ISP_IRQ_DMA_INT_CQ0B_DONE_ST ((unsigned int)1 << 15)
+//CAM_CTL_INTB_STATUS
+#define ISP_IRQ_INTB_STATUS_CQ_ERR_ST ((unsigned int)1 << 13)
+#define ISP_IRQ_INTB_STATUS_PASS2_DON_ST ((unsigned int)1 << 14)
+#define ISP_IRQ_INTB_STATUS_TPIPE_DON_ST ((unsigned int)1 << 15)
+#define ISP_IRQ_INTB_STATUS_CQ_DON_ST ((unsigned int)1 << 19)
+#define ISP_IRQ_INTB_STATUS_IMGO_ERR_ST ((unsigned int)1 << 20)
+#define ISP_IRQ_INTB_STATUS_LCSO_ERR_ST ((unsigned int)1 << 22)
+#define ISP_IRQ_INTB_STATUS_IMG2O_ERR_ST ((unsigned int)1 << 23)
+#define ISP_IRQ_INTB_STATUS_LSC_ERR_ST ((unsigned int)1 << 26)
+#define ISP_IRQ_INTB_STATUS_BPC_ERR_ST ((unsigned int)1 << 28)
+#define ISP_IRQ_INTB_STATUS_LCE_ERR_ST ((unsigned int)1 << 29)
+#define ISP_IRQ_INTB_STATUS_DMA_ERR_ST ((unsigned int)1 << 30)
+#define ISP_IRQ_INTB_STATUS_INT_WCLR_ST ((unsigned int)1 << 31)
+
+//CAM_CTL_DMAB_INT
+#define ISP_IRQ_DMAB_INT_IMGO_DONE_ST ((unsigned int)1 << 0)
+#define ISP_IRQ_DMAB_INT_IMG2O_DONE_ST ((unsigned int)1 << 1)
+#define ISP_IRQ_DMAB_INT_AAO_DONE_ST ((unsigned int)1 << 2)
+#define ISP_IRQ_DMAB_INT_LCSO_DONE_ST ((unsigned int)1 << 3)
+#define ISP_IRQ_DMAB_INT_ESFKO_DONE_ST ((unsigned int)1 << 4)
+#define ISP_IRQ_DMAB_INT_DISPO_DONE_ST ((unsigned int)1 << 5)
+#define ISP_IRQ_DMAB_INT_VIDO_DONE_ST ((unsigned int)1 << 6)
+//#define ISP_IRQ_DMAB_INT_VRZO_DONE_ST ((unsigned int)1 << 7)
+//#define ISP_IRQ_DMAB_INT_NR3O_DONE_ST ((unsigned int)1 << 8)
+//#define ISP_IRQ_DMAB_INT_NR3O_ERR_ST ((unsigned int)1 << 9)
+//CAM_CTL_INTC_STATUS
+#define ISP_IRQ_INTC_STATUS_CQ_ERR_ST ((unsigned int)1 << 13)
+#define ISP_IRQ_INTC_STATUS_PASS2_DON_ST ((unsigned int)1 << 14)
+#define ISP_IRQ_INTC_STATUS_TPIPE_DON_ST ((unsigned int)1 << 15)
+#define ISP_IRQ_INTC_STATUS_CQ_DON_ST ((unsigned int)1 << 19)
+#define ISP_IRQ_INTC_STATUS_IMGO_ERR_ST ((unsigned int)1 << 20)
+#define ISP_IRQ_INTC_STATUS_LCSO_ERR_ST ((unsigned int)1 << 22)
+#define ISP_IRQ_INTC_STATUS_IMG2O_ERR_ST ((unsigned int)1 << 23)
+#define ISP_IRQ_INTC_STATUS_LSC_ERR_ST ((unsigned int)1 << 26)
+#define ISP_IRQ_INTC_STATUS_BPC_ERR_ST ((unsigned int)1 << 28)
+#define ISP_IRQ_INTC_STATUS_LCE_ERR_ST ((unsigned int)1 << 29)
+#define ISP_IRQ_INTC_STATUS_DMA_ERR_ST ((unsigned int)1 << 30)
+//CAM_CTL_DMAC_INT
+#define ISP_IRQ_DMAC_INT_IMGO_DONE_ST ((unsigned int)1 << 0)
+#define ISP_IRQ_DMAC_INT_IMG2O_DONE_ST ((unsigned int)1 << 1)
+#define ISP_IRQ_DMAC_INT_AAO_DONE_ST ((unsigned int)1 << 2)
+#define ISP_IRQ_DMAC_INT_LCSO_DONE_ST ((unsigned int)1 << 3)
+#define ISP_IRQ_DMAC_INT_ESFKO_DONE_ST ((unsigned int)1 << 4)
+#define ISP_IRQ_DMAC_INT_DISPO_DONE_ST ((unsigned int)1 << 5)
+#define ISP_IRQ_DMAC_INT_VIDO_DONE_ST ((unsigned int)1 << 6)
+//#define ISP_IRQ_DMAC_INT_VRZO_DONE_ST ((unsigned int)1 << 7)
+//#define ISP_IRQ_DMAC_INT_NR3O_DONE_ST ((unsigned int)1 << 8)
+//#define ISP_IRQ_DMAC_INT_NR3O_ERR_ST ((unsigned int)1 << 9)
+//CAM_CTL_INT_STATUSX
+#define ISP_IRQ_INTX_STATUS_VS1_ST ((unsigned int)1 << 0)
+#define ISP_IRQ_INTX_STATUS_TG1_ST1 ((unsigned int)1 << 1)
+#define ISP_IRQ_INTX_STATUS_TG1_ST2 ((unsigned int)1 << 2)
+#define ISP_IRQ_INTX_STATUS_EXPDON1_ST ((unsigned int)1 << 3)
+#define ISP_IRQ_INTX_STATUS_TG1_ERR_ST ((unsigned int)1 << 4)
+#define ISP_IRQ_INTX_STATUS_VS2_ST ((unsigned int)1 << 5)
+#define ISP_IRQ_INTX_STATUS_TG2_ST1 ((unsigned int)1 << 6)
+#define ISP_IRQ_INTX_STATUS_TG2_ST2 ((unsigned int)1 << 7)
+#define ISP_IRQ_INTX_STATUS_EXPDON2_ST ((unsigned int)1 << 8)
+#define ISP_IRQ_INTX_STATUS_TG2_ERR_ST ((unsigned int)1 << 9)
+#define ISP_IRQ_INTX_STATUS_PASS1_TG1_DON_ST ((unsigned int)1 << 10)
+#define ISP_IRQ_INTX_STATUS_PASS1_TG2_DON_ST ((unsigned int)1 << 11)
+//#define ISP_IRQ_INTX_STATUS_VEC_DON_ST ((unsigned int)1 << 12)
+#define ISP_IRQ_INTX_STATUS_CQ_ERR_ST ((unsigned int)1 << 13)
+#define ISP_IRQ_INTX_STATUS_PASS2_DON_ST ((unsigned int)1 << 14)
+#define ISP_IRQ_INTX_STATUS_TPIPE_DON_ST ((unsigned int)1 << 15)
+#define ISP_IRQ_INTX_STATUS_AF_DON_ST ((unsigned int)1 << 16)
+#define ISP_IRQ_INTX_STATUS_FLK_DON_ST ((unsigned int)1 << 17)
+#define ISP_IRQ_INTX_STATUS_FMT_DON_ST ((unsigned int)1 << 18)
+#define ISP_IRQ_INTX_STATUS_CQ_DON_ST ((unsigned int)1 << 19)
+#define ISP_IRQ_INTX_STATUS_IMGO_ERR_ST ((unsigned int)1 << 20)
+#define ISP_IRQ_INTX_STATUS_AAO_ERR_ST ((unsigned int)1 << 21)
+#define ISP_IRQ_INTX_STATUS_LCSO_ERR_ST ((unsigned int)1 << 22)
+#define ISP_IRQ_INTX_STATUS_IMG2O_ERR_ST ((unsigned int)1 << 23)
+#define ISP_IRQ_INTX_STATUS_ESFKO_ERR_ST ((unsigned int)1 << 24)
+#define ISP_IRQ_INTX_STATUS_FLK_ERR_ST ((unsigned int)1 << 25)
+#define ISP_IRQ_INTX_STATUS_LSC_ERR_ST ((unsigned int)1 << 26)
+//#define ISP_IRQ_INTX_STATUS_LSC2_ERR_ST ((unsigned int)1 << 27)
+#define ISP_IRQ_INTX_STATUS_BPC_ERR_ST ((unsigned int)1 << 28)
+#define ISP_IRQ_INTX_STATUS_LCE_ERR_ST ((unsigned int)1 << 29)
+#define ISP_IRQ_INTX_STATUS_DMA_ERR_ST ((unsigned int)1 << 30)
+//CAM_CTL_DMA_INTX
+#define ISP_IRQ_DMAX_INT_IMGO_DONE_ST ((unsigned int)1 << 0)
+#define ISP_IRQ_DMAX_INT_IMG2O_DONE_ST ((unsigned int)1 << 1)
+#define ISP_IRQ_DMAX_INT_AAO_DONE_ST ((unsigned int)1 << 2)
+#define ISP_IRQ_DMAX_INT_LCSO_DONE_ST ((unsigned int)1 << 3)
+#define ISP_IRQ_DMAX_INT_ESFKO_DONE_ST ((unsigned int)1 << 4)
+#define ISP_IRQ_DMAX_INT_DISPO_DONE_ST ((unsigned int)1 << 5)
+#define ISP_IRQ_DMAX_INT_VIDO_DONE_ST ((unsigned int)1 << 6)
+#define ISP_IRQ_DMAX_INT_VRZO_DONE_ST ((unsigned int)1 << 7)
+#define ISP_IRQ_DMAX_INT_NR3O_DONE_ST ((unsigned int)1 << 8)
+#define ISP_IRQ_DMAX_INT_NR3O_ERR_ST ((unsigned int)1 << 9)
+#define ISP_IRQ_DMAX_INT_CQ_ERR_ST ((unsigned int)1 << 10)
+#define ISP_IRQ_DMAX_INT_BUF_OVL_ST ((unsigned int)1 << 11)
+#define ISP_IRQ_DMAX_INT_TG1_GBERR_ST ((unsigned int)1 << 12)
+#define ISP_IRQ_DMAX_INT_TG2_GBERR_ST ((unsigned int)1 << 13)
+
+/*******************************************************************************
+*
+********************************************************************************/
+typedef enum
+{
+ ISP_IRQ_CLEAR_NONE,
+ ISP_IRQ_CLEAR_WAIT,
+ ISP_IRQ_CLEAR_ALL
+}ISP_IRQ_CLEAR_ENUM;
+
+typedef enum
+{
+ ISP_IRQ_TYPE_INT,
+ ISP_IRQ_TYPE_DMA,
+ ISP_IRQ_TYPE_INTB,
+ ISP_IRQ_TYPE_DMAB,
+ ISP_IRQ_TYPE_INTC,
+ ISP_IRQ_TYPE_DMAC,
+ ISP_IRQ_TYPE_INTX,
+ ISP_IRQ_TYPE_DMAX,
+ ISP_IRQ_TYPE_AMOUNT
+}ISP_IRQ_TYPE_ENUM;
+
+typedef struct
+{
+ ISP_IRQ_CLEAR_ENUM Clear;
+ ISP_IRQ_TYPE_ENUM Type;
+ unsigned int Status;
+ unsigned int Timeout;
+}ISP_WAIT_IRQ_STRUCT;
+
+typedef struct
+{
+ ISP_IRQ_TYPE_ENUM Type;
+ unsigned int Status;
+}ISP_READ_IRQ_STRUCT;
+
+typedef struct
+{
+ ISP_IRQ_TYPE_ENUM Type;
+ unsigned int Status;
+}ISP_CLEAR_IRQ_STRUCT;
+
+typedef enum
+{
+ ISP_HOLD_TIME_VD,
+ ISP_HOLD_TIME_EXPDONE
+}ISP_HOLD_TIME_ENUM;
+
+typedef struct
+{
+ unsigned int Addr; // register's addr
+ unsigned int Val; // register's value
+}ISP_REG_STRUCT;
+
+typedef struct
+{
+ //unsigned int Data; // pointer to ISP_REG_STRUCT
+ ISP_REG_STRUCT *pData; // pointer to ISP_REG_STRUCT
+ unsigned int Count; // count
+}ISP_REG_IO_STRUCT;
+
+typedef void (*pIspCallback)(void);
+
+typedef enum
+{
+ //Work queue. It is interruptible, so there can be "Sleep" in work queue function.
+ ISP_CALLBACK_WORKQUEUE_VD,
+ ISP_CALLBACK_WORKQUEUE_EXPDONE,
+ ISP_CALLBACK_WORKQUEUE_SENINF,
+ //Tasklet. It is uninterrupted, so there can NOT be "Sleep" in tasklet function.
+ ISP_CALLBACK_TASKLET_VD,
+ ISP_CALLBACK_TASKLET_EXPDONE,
+ ISP_CALLBACK_TASKLET_SENINF,
+ ISP_CALLBACK_AMOUNT
+}ISP_CALLBACK_ENUM;
+
+typedef struct
+{
+ ISP_CALLBACK_ENUM Type;
+ pIspCallback Func;
+}ISP_CALLBACK_STRUCT;
+
+//
+// length of the two memory areas
+#define RT_BUF_TBL_NPAGES 16
+#define ISP_RT_BUF_SIZE 16
+//#define ISP_RT_CQ0C_BUF_SIZE (ISP_RT_BUF_SIZE>>2)
+#define ISP_RT_CQ0C_BUF_SIZE (6) //special for 6582
+
+
+//
+typedef enum
+{
+ _imgi_ = 0,
+ _imgci_, // 1
+ _vipi_ , // 2
+ _vip2i_, // 3
+ _imgo_, // 4
+ _img2o_, // 5
+ _dispo_, // 6
+ _vido_, // 7
+ _fdo_, // 8
+ _lsci_, // 9
+ _lcei_, // 10
+ _rt_dma_max_
+}_isp_dma_enum_;
+//
+typedef struct {
+ unsigned int memID;
+ unsigned int size;
+ long long base_vAddr;
+ unsigned int base_pAddr;
+ unsigned int timeStampS;
+ unsigned int timeStampUs;
+ unsigned int bFilled;
+}ISP_RT_BUF_INFO_STRUCT;
+//
+typedef struct {
+ unsigned int count;
+ ISP_RT_BUF_INFO_STRUCT data[ISP_RT_BUF_SIZE];
+}ISP_DEQUE_BUF_INFO_STRUCT;
+//
+typedef struct {
+ unsigned int start; //current DMA accessing buffer
+ unsigned int total_count; //total buffer number.Include Filled and empty
+ unsigned int empty_count; //total empty buffer number include current DMA accessing buffer
+ unsigned int pre_empty_count;//previous total empty buffer number include current DMA accessing buffer
+ unsigned int active;
+ ISP_RT_BUF_INFO_STRUCT data[ISP_RT_BUF_SIZE];
+}ISP_RT_RING_BUF_INFO_STRUCT;
+//
+typedef enum
+{
+ ISP_RT_BUF_CTRL_ENQUE, // 0
+ ISP_RT_BUF_CTRL_EXCHANGE_ENQUE, // 1
+ ISP_RT_BUF_CTRL_DEQUE, // 2
+ ISP_RT_BUF_CTRL_IS_RDY, // 3
+ ISP_RT_BUF_CTRL_GET_SIZE, // 4
+ ISP_RT_BUF_CTRL_CLEAR, // 5
+ ISP_RT_BUF_CTRL_MAX
+}ISP_RT_BUF_CTRL_ENUM;
+//
+typedef enum
+{
+ ISP_RTBC_STATE_INIT, // 0
+ ISP_RTBC_STATE_SOF,
+ ISP_RTBC_STATE_DONE,
+ ISP_RTBC_STATE_MAX
+}ISP_RTBC_STATE_ENUM;
+//
+typedef enum
+{
+ ISP_RTBC_BUF_EMPTY, // 0
+ ISP_RTBC_BUF_FILLED,// 1
+ ISP_RTBC_BUF_LOCKED,// 2
+}ISP_RTBC_BUF_STATE_ENUM;
+//
+typedef struct {
+ ISP_RTBC_STATE_ENUM state;
+ unsigned long dropCnt;
+ ISP_RT_RING_BUF_INFO_STRUCT ring_buf[_rt_dma_max_];
+}ISP_RT_BUF_STRUCT;
+//
+typedef struct {
+ ISP_RT_BUF_CTRL_ENUM ctrl;
+ _isp_dma_enum_ buf_id;
+ //unsigned int data_ptr;
+ //unsigned int ex_data_ptr; //exchanged buffer
+ ISP_RT_BUF_INFO_STRUCT *data_ptr;
+ ISP_RT_BUF_INFO_STRUCT *ex_data_ptr; //exchanged buffer
+ unsigned char *pExtend;
+}ISP_BUFFER_CTRL_STRUCT;
+//
+//reference count
+#define _use_kernel_ref_cnt_
+//
+typedef enum
+{
+ ISP_REF_CNT_GET, // 0
+ ISP_REF_CNT_INC, // 1
+ ISP_REF_CNT_DEC, // 2
+ ISP_REF_CNT_DEC_AND_RESET_IF_LAST_ONE, // 3
+ ISP_REF_CNT_DEC_AND_RESET_P1_IF_LAST_ONE, // 4
+ ISP_REF_CNT_DEC_AND_RESET_P2_IF_LAST_ONE, // 5
+ ISP_REF_CNT_MAX
+}ISP_REF_CNT_CTRL_ENUM;
+//
+typedef enum
+{
+ ISP_REF_CNT_ID_IMEM, // 0
+ ISP_REF_CNT_ID_ISP_FUNC, // 1
+ ISP_REF_CNT_ID_GLOBAL_PIPE, // 2
+ ISP_REF_CNT_ID_P1_PIPE, // 3
+ ISP_REF_CNT_ID_P2_PIPE, // 4
+ ISP_REF_CNT_ID_MAX,
+}ISP_REF_CNT_ID_ENUM;
+//
+typedef struct {
+ ISP_REF_CNT_CTRL_ENUM ctrl;
+ ISP_REF_CNT_ID_ENUM id;
+ signed int* data_ptr;
+}ISP_REF_CNT_CTRL_STRUCT;
+
+
+/********************************************************************************************
+ pass1 real time buffer control use cq0c
+********************************************************************************************/
+//
+#define _rtbc_use_cq0c_
+
+#if defined(_rtbc_use_cq0c_)
+//
+typedef volatile union _CQ_RTBC_FBC_
+{
+ volatile struct
+ {
+ unsigned long FBC_CNT : 4;
+ unsigned long DROP_INT_EN : 1;
+ unsigned long rsv_5 : 6;
+ unsigned long RCNT_INC : 1;
+ unsigned long rsv_12 : 2;
+ unsigned long FBC_EN : 1;
+ unsigned long LOCK_EN : 1;
+ unsigned long FB_NUM : 4;
+ unsigned long RCNT : 4;
+ unsigned long WCNT : 4;
+ unsigned long DROP_CNT : 4;
+ } Bits;
+ unsigned long Reg_val;
+}CQ_RTBC_FBC;
+
+typedef struct _cq_cmd_st_
+{
+ unsigned int inst;
+ unsigned int data_ptr_pa;
+}CQ_CMD_ST;
+/*
+typedef struct _cq_cmd_rtbc_st_
+{
+ CQ_CMD_ST imgo;
+ CQ_CMD_ST img2o;
+ CQ_CMD_ST cq0ci;
+ CQ_CMD_ST end;
+}CQ_CMD_RTBC_ST;
+*/
+typedef struct _cq_info_rtbc_st_
+{
+ CQ_CMD_ST imgo;
+ CQ_CMD_ST img2o;
+ CQ_CMD_ST next_cq0ci;
+ CQ_CMD_ST end;
+ unsigned int imgo_base_pAddr;
+ unsigned int img2o_base_pAddr;
+}CQ_INFO_RTBC_ST;
+typedef struct _cq_ring_cmd_st_
+{
+ CQ_INFO_RTBC_ST cq_rtbc;
+ unsigned long next_pa;
+ struct _cq_ring_cmd_st_ *pNext;
+}CQ_RING_CMD_ST;
+typedef struct _cq_rtbc_ring_st_
+{
+ CQ_RING_CMD_ST rtbc_ring[ISP_RT_CQ0C_BUF_SIZE];
+ unsigned int imgo_ring_size;
+ unsigned int img2o_ring_size;
+}CQ_RTBC_RING_ST;
+#endif
+
+
+#ifdef CONFIG_COMPAT
+
+typedef struct
+{
+ compat_uptr_t pData;
+ unsigned int Count; // count
+} compat_ISP_REG_IO_STRUCT;
+
+typedef struct {
+ ISP_RT_BUF_CTRL_ENUM ctrl;
+ _isp_dma_enum_ buf_id;
+ compat_uptr_t data_ptr;
+ compat_uptr_t ex_data_ptr; //exchanged buffer
+ compat_uptr_t pExtend;
+} compat_ISP_BUFFER_CTRL_STRUCT;
+
+typedef struct {
+ ISP_REF_CNT_CTRL_ENUM ctrl;
+ ISP_REF_CNT_ID_ENUM id;
+ compat_uptr_t data_ptr;
+} compat_ISP_REF_CNT_CTRL_STRUCT;
+
+
+#endif
+//
+/********************************************************************************************
+
+********************************************************************************************/
+
+
+/*******************************************************************************
+*
+********************************************************************************/
+typedef enum
+{
+ ISP_CMD_RESET, //Reset
+ ISP_CMD_RESET_BUF,
+ ISP_CMD_READ_REG, //Read register from driver
+ ISP_CMD_WRITE_REG, //Write register to driver
+ ISP_CMD_HOLD_TIME,
+ ISP_CMD_HOLD_REG, //Hold reg write to hw, on/off
+ ISP_CMD_WAIT_IRQ, //Wait IRQ
+ ISP_CMD_READ_IRQ, //Read IRQ
+ ISP_CMD_CLEAR_IRQ, //Clear IRQ
+ ISP_CMD_DUMP_REG, //Dump ISP registers , for debug usage
+ ISP_CMD_SET_USER_PID, //for signal
+ ISP_CMD_RT_BUF_CTRL, //for pass buffer control
+ ISP_CMD_REF_CNT, //get imem reference count
+ ISP_CMD_DEBUG_FLAG, //Dump message level
+ ISP_CMD_WAKELOCK_CTRL, //isp wakelock control
+ ISP_CMD_SENSOR_FREQ_CTRL // sensor frequence control
+}ISP_CMD_ENUM;
+//
+#define ISP_RESET _IO (ISP_MAGIC, ISP_CMD_RESET)
+#define ISP_RESET_BUF _IO (ISP_MAGIC, ISP_CMD_RESET_BUF)
+#define ISP_READ_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_READ_REG, ISP_REG_IO_STRUCT)
+#define ISP_WRITE_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_WRITE_REG, ISP_REG_IO_STRUCT)
+#define ISP_HOLD_REG_TIME _IOW (ISP_MAGIC, ISP_CMD_HOLD_TIME, ISP_HOLD_TIME_ENUM)
+#define ISP_HOLD_REG _IOW (ISP_MAGIC, ISP_CMD_HOLD_REG, bool)
+#define ISP_WAIT_IRQ _IOW (ISP_MAGIC, ISP_CMD_WAIT_IRQ, ISP_WAIT_IRQ_STRUCT)
+#define ISP_READ_IRQ _IOR (ISP_MAGIC, ISP_CMD_READ_IRQ, ISP_READ_IRQ_STRUCT)
+#define ISP_CLEAR_IRQ _IOW (ISP_MAGIC, ISP_CMD_CLEAR_IRQ, ISP_CLEAR_IRQ_STRUCT)
+#define ISP_DUMP_REG _IO (ISP_MAGIC, ISP_CMD_DUMP_REG)
+#define ISP_SET_USER_PID _IOW (ISP_MAGIC, ISP_CMD_SET_USER_PID, unsigned long)
+#define ISP_BUFFER_CTRL _IOWR(ISP_MAGIC, ISP_CMD_RT_BUF_CTRL, ISP_BUFFER_CTRL_STRUCT)
+#define ISP_REF_CNT_CTRL _IOWR(ISP_MAGIC, ISP_CMD_REF_CNT, ISP_REF_CNT_CTRL_STRUCT)
+#define ISP_DEBUG_FLAG _IOW (ISP_MAGIC, ISP_CMD_DEBUG_FLAG, unsigned long)
+#define ISP_WAKELOCK_CTRL _IOWR (ISP_MAGIC, ISP_CMD_WAKELOCK_CTRL,unsigned long)
+#define ISP_SENSOR_FREQ_CTRL _IOW (ISP_MAGIC, ISP_CMD_SENSOR_FREQ_CTRL, unsigned long)
+
+#ifdef CONFIG_COMPAT
+#define COMPAT_ISP_READ_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_READ_REG, compat_ISP_REG_IO_STRUCT)
+#define COMPAT_ISP_WRITE_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_WRITE_REG, compat_ISP_REG_IO_STRUCT)
+#define COMPAT_ISP_BUFFER_CTRL _IOWR(ISP_MAGIC, ISP_CMD_RT_BUF_CTRL, compat_ISP_BUFFER_CTRL_STRUCT)
+#define COMPAT_ISP_REF_CNT_CTRL _IOWR(ISP_MAGIC, ISP_CMD_REF_CNT, compat_ISP_REF_CNT_CTRL_STRUCT)
+#define COMPAT_ISP_SET_USER_PID _IOW (ISP_MAGIC, ISP_CMD_SET_USER_PID, compat_uptr_t)
+#define COMPAT_ISP_DEBUG_FLAG _IOW (ISP_MAGIC, ISP_CMD_DEBUG_FLAG, compat_uptr_t)
+#define COMPAT_ISP_WAKELOCK_CTRL _IOWR(ISP_MAGIC, ISP_CMD_WAKELOCK_CTRL, compat_uptr_t)
+#define COMPAT_ISP_SENSOR_FREQ_CTRL _IOW(ISP_MAGIC, ISP_CMD_SENSOR_FREQ_CTRL, compat_uptr_t)
+#endif
+
+//
+bool ISP_RegCallback(ISP_CALLBACK_STRUCT* pCallback);
+bool ISP_UnregCallback(ISP_CALLBACK_ENUM Type);
+
+bool ISP_ControlMdpClock(bool en);
+int32_t ISP_MDPClockOnCallback(uint64_t engineFlag);
+int32_t ISP_MDPDumpCallback(uint64_t engineFlag,
+ int level);
+int32_t ISP_MDPResetCallback(uint64_t engineFlag);
+
+int32_t ISP_MDPClockOffCallback(uint64_t engineFlag);
+
+//
+#endif
+
diff --git a/kernel-headers/camera_isp_FrmB_D2.h b/kernel-headers/camera_isp_FrmB_D2.h
new file mode 100644
index 0000000..e0a6c3d
--- /dev/null
+++ b/kernel-headers/camera_isp_FrmB_D2.h
@@ -0,0 +1,573 @@
+/*
+* Copyright (C) 2014 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#ifndef _MT_ISP_FRMB_H
+#define _MT_ISP_FRMB_H
+
+#include "camera_isp_D2.h"
+
+//#define KERNEL_LOG //enable debug log flag if defined
+#define ISR_LOG_ON //turn on log print at isr if defined
+#define T_STAMP_2_0 //time stamp workaround method. (increase timestamp baseon fix fps, not read at each isr)
+
+#define _rtbc_buf_que_2_0_
+
+/*******************************************************************************
+*
+********************************************************************************/
+typedef enum
+{
+ ISP_IRQ_CLEAR_NONE_FRMB,
+ ISP_IRQ_CLEAR_WAIT_FRMB,
+ ISP_IRQ_CLEAR_STATUS_FRMB,
+ ISP_IRQ_CLEAR_ALL_FRMB
+}ISP_IRQ_CLEAR_ENUM_FRMB;
+
+
+typedef enum
+{
+ ISP_IRQ_TYPE_INT_FRMB,
+ ISP_IRQ_TYPE_DMA_FRMB,
+ ISP_IRQ_TYPE_INTB_FRMB,
+ ISP_IRQ_TYPE_DMAB_FRMB,
+ ISP_IRQ_TYPE_INTC_FRMB,
+ ISP_IRQ_TYPE_DMAC_FRMB,
+ ISP_IRQ_TYPE_INTX_FRMB,
+ ISP_IRQ_TYPE_DMAX_FRMB,
+ ISP_IRQ_TYPE_AMOUNT_FRMB
+}ISP_IRQ_TYPE_ENUM_FRMB;
+
+
+typedef enum //special user for specific operation
+{
+ ISP_IRQ_WAITIRQ_SPEUSER_NONE = 0,
+ ISP_IRQ_WAITIRQ_SPEUSER_EIS = 1,
+ ISP_IRQ_WAITIRQ_SPEUSER_NUM
+}ISP_IRQ_WAITIRQ_SPEUSER_ENUM;
+typedef struct
+{
+ ISP_IRQ_TYPE_ENUM_FRMB Type;
+ unsigned int Status;
+ int UserKey; /* user key for doing interrupt operation */
+}ISP_IRQ_USER_STRUCT_FRMB;
+
+typedef struct
+{
+ unsigned int tLastSig_sec; /* time stamp of the latest occuring signal*/
+ unsigned int tLastSig_usec; /* time stamp of the latest occuring signal*/
+ unsigned int tMark2WaitSig_sec; /* time period from marking a signal to user try to wait and get the signal*/
+ unsigned int tMark2WaitSig_usec; /* time period from marking a signal to user try to wait and get the signal*/
+ unsigned int tLastSig2GetSig_sec; /* time period from latest occuring signal to user try to wait and get the signal*/
+ unsigned int tLastSig2GetSig_usec; /* time period from latest occuring signal to user try to wait and get the signal*/
+ int passedbySigcnt; /* the count for the signal passed by */
+}ISP_IRQ_TIME_STRUCT_FRMB;
+
+typedef struct
+{
+ unsigned int tLastSOF2P1done_sec; /* time stamp of the last closest occuring sof signal for pass1 done*/
+ unsigned int tLastSOF2P1done_usec; /* time stamp of the last closest occuring sof signal for pass1 done*/
+}ISP_EIS_META_STRUCT;
+
+typedef struct
+{
+ ISP_IRQ_CLEAR_ENUM_FRMB Clear;
+ ISP_IRQ_USER_STRUCT_FRMB UserInfo;
+ ISP_IRQ_TIME_STRUCT_FRMB TimeInfo;
+ ISP_EIS_META_STRUCT EisMeta;
+ ISP_IRQ_WAITIRQ_SPEUSER_ENUM SpecUser;
+ unsigned int Timeout; /* time out for waiting for a specific interrupt */
+ unsigned int bDumpReg;
+}ISP_WAIT_IRQ_STRUCT_FRMB;
+
+typedef struct
+{
+ int userKey;
+ char* userName;
+}ISP_REGISTER_USERKEY_STRUCT_FRMB;
+
+
+typedef struct
+{
+ ISP_IRQ_TYPE_ENUM Type;
+ unsigned int Status;
+}ISP_READ_IRQ_STRUCT_FRMB;
+
+typedef struct
+{
+ ISP_IRQ_TYPE_ENUM Type;
+ unsigned int Status;
+}ISP_CLEAR_IRQ_STRUCT_FRMB;
+
+typedef enum
+{
+ ISP_HOLD_TIME_VD_FRMB,
+ ISP_HOLD_TIME_EXPDONE_FRMB
+}ISP_HOLD_TIME_ENUM_FRMB;
+
+typedef struct
+{
+ unsigned int Addr_FrmB; // register's addr
+ unsigned int Val_FrmB; // register's value
+}ISP_REG_STRUCT_FRMB;
+
+typedef struct
+{
+ //unsigned int Data_FrmB; // pointer to ISP_REG_STRUCT
+ ISP_REG_STRUCT_FRMB *pData_FrmB;
+ unsigned int Count_FrmB; // count
+}ISP_REG_IO_STRUCT_FRMB;
+
+//typedef void (*pIspCallback)(void);
+
+typedef enum
+{
+ //Work queue. It is interruptible, so there can be "Sleep" in work queue function.
+ ISP_CALLBACK_WORKQUEUE_VD_FRMB,
+ ISP_CALLBACK_WORKQUEUE_EXPDONE_FRMB,
+ //Tasklet. It is uninterrupted, so there can NOT be "Sleep" in tasklet function.
+ ISP_CALLBACK_TASKLET_VD_FRMB,
+ ISP_CALLBACK_TASKLET_EXPDONE_FRMB,
+ ISP_CALLBACK_AMOUNT_FRMB
+}ISP_CALLBACK_ENUM_FRMB;
+
+typedef struct
+{
+ ISP_CALLBACK_ENUM Type_FrmB;
+ pIspCallback Func_FrmB;
+}ISP_CALLBACK_STRUCT_FRMB;
+
+//
+// length of the two memory areas
+#define P1_DEQUE_CNT 1
+////////////////////////////////////////
+//DEFINED IN CAMREA_ISP.H
+//#define RT_BUF_TBL_NPAGES 16
+//#define ISP_RT_BUF_SIZE 16
+//#define ISP_RT_CQ0C_BUF_SIZE (ISP_RT_BUF_SIZE)//(ISP_RT_BUF_SIZE>>1)
+///////////////////////////////////////
+//pass1 setting sync index
+#define ISP_REG_P1_CFG_IDX 0x4090
+
+
+//
+typedef enum
+{
+ _cam_tg_ = 0,
+ _cam_tg2_ , // 1
+ _camsv_tg_, // 2
+ _camsv2_tg_, // 3
+ _cam_tg_max_
+}_isp_tg_enum_;
+
+//
+typedef struct {
+ unsigned int w;
+ unsigned int h;
+ unsigned int xsize;
+ unsigned int stride;
+ unsigned int fmt;
+ unsigned int pxl_id;
+ unsigned int wbn;
+ unsigned int ob;
+ unsigned int lsc;
+ unsigned int rpg;
+ unsigned int m_num_0;
+ unsigned int frm_cnt;
+}ISP_RT_IMAGE_INFO_STRUCT;
+
+typedef struct {
+ unsigned int srcX; //crop window start point
+ unsigned int srcY;
+ unsigned int srcW; //crop window size
+ unsigned int srcH;
+ unsigned int dstW; //rrz out size
+ unsigned int dstH;
+}ISP_RT_HRZ_INFO_STRUCT;
+
+typedef struct{
+ unsigned int x; //in pix
+ unsigned int y; //in pix
+ unsigned int w; //in byte
+ unsigned int h; //in byte
+}ISP_RT_DMAO_CROPPING_STRUCT;
+
+
+typedef struct {
+ unsigned int memID;
+ unsigned int size;
+ long long base_vAddr;
+ unsigned int base_pAddr;
+ unsigned int timeStampS;
+ unsigned int timeStampUs;
+ unsigned int bFilled;
+ ISP_RT_IMAGE_INFO_STRUCT image;
+ ISP_RT_HRZ_INFO_STRUCT HrzInfo;
+ ISP_RT_DMAO_CROPPING_STRUCT dmaoCrop; //imgo
+ unsigned int bDequeued;
+ signed int bufIdx;//used for replace buffer
+}ISP_RT_BUF_INFO_STRUCT_FRMB;
+
+//
+typedef struct {
+ unsigned int count;
+ unsigned int sof_cnt; //cnt for current sof
+ unsigned int img_cnt; //cnt for mapping to which sof
+ //rome support only deque 1 image at a time
+ //ISP_RT_BUF_INFO_STRUCT data[ISP_RT_BUF_SIZE];
+ ISP_RT_BUF_INFO_STRUCT_FRMB data[P1_DEQUE_CNT];
+}ISP_DEQUE_BUF_INFO_STRUCT_FRMB;
+
+//
+typedef struct {
+ unsigned int start; //current DMA accessing buffer
+ unsigned int total_count; //total buffer number.Include Filled and empty
+ unsigned int empty_count; //total empty buffer number include current DMA accessing buffer
+ unsigned int pre_empty_count;//previous total empty buffer number include current DMA accessing buffer
+ unsigned int active;
+ unsigned int read_idx;
+ unsigned int img_cnt; //cnt for mapping to which sof
+ ISP_RT_BUF_INFO_STRUCT_FRMB data[ISP_RT_BUF_SIZE];
+}ISP_RT_RING_BUF_INFO_STRUCT_FRMB;
+
+//
+typedef enum
+{
+ ISP_RT_BUF_CTRL_ENQUE_FRMB, // 0
+#ifdef _rtbc_buf_que_2_0_
+ ISP_RT_BUF_CTRL_ENQUE_IMD_FRMB,
+#else
+ ISP_RT_BUF_CTRL_ENQUE_IMD_FRMB = ISP_RT_BUF_CTRL_ENQUE_FRMB,
+#endif
+ ISP_RT_BUF_CTRL_EXCHANGE_ENQUE_FRMB, // 1
+ ISP_RT_BUF_CTRL_DEQUE_FRMB, // 2
+ ISP_RT_BUF_CTRL_IS_RDY_FRMB, // 3
+#ifdef _rtbc_buf_que_2_0_
+ ISP_RT_BUF_CTRL_DMA_EN_FRMB, // 4
+#endif
+ ISP_RT_BUF_CTRL_GET_SIZE_FRMB, // 5
+ ISP_RT_BUF_CTRL_CLEAR_FRMB, // 6
+ ISP_RT_BUF_CTRL_CUR_STATUS_FRMB, //7
+ ISP_RT_BUF_CTRL_MAX_FRMB
+}ISP_RT_BUF_CTRL_ENUM_FRMB;
+
+typedef struct {
+ ISP_RTBC_STATE_ENUM state;
+ unsigned long dropCnt;
+ ISP_RT_RING_BUF_INFO_STRUCT_FRMB ring_buf[_rt_dma_max_];
+}ISP_RT_BUF_STRUCT_FRMB;
+//
+typedef struct {
+ ISP_RT_BUF_CTRL_ENUM_FRMB ctrl;
+ _isp_dma_enum_ buf_id;
+ //unsigned int data_ptr;
+ //unsigned int ex_data_ptr; //exchanged buffer
+ ISP_RT_BUF_INFO_STRUCT_FRMB *data_ptr;
+ ISP_RT_BUF_INFO_STRUCT_FRMB *ex_data_ptr;
+ unsigned char *pExtend;
+}ISP_BUFFER_CTRL_STRUCT_FRMB;
+
+
+//
+//reference count
+#define _use_kernel_ref_cnt_
+
+//
+typedef enum
+{
+ ISP_REF_CNT_GET_FRMB, // 0
+ ISP_REF_CNT_INC_FRMB, // 1
+ ISP_REF_CNT_DEC_FRMB, // 2
+ ISP_REF_CNT_DEC_AND_RESET_P1_P2_IF_LAST_ONE_FRMB, // 3
+ ISP_REF_CNT_DEC_AND_RESET_P1_IF_LAST_ONE_FRMB, // 4
+ ISP_REF_CNT_DEC_AND_RESET_P2_IF_LAST_ONE_FRMB, // 5
+ ISP_REF_CNT_MAX_FRMB
+}ISP_REF_CNT_CTRL_ENUM_FRMB;
+
+//
+typedef enum
+{
+ ISP_REF_CNT_ID_IMEM_FRMB, // 0
+ ISP_REF_CNT_ID_ISP_FUNC_FRMB,// 1
+ ISP_REF_CNT_ID_GLOBAL_PIPE_FRMB, // 2
+ ISP_REF_CNT_ID_P1_PIPE_FRMB, // 3
+ ISP_REF_CNT_ID_P2_PIPE_FRMB, // 4
+ ISP_REF_CNT_ID_MAX_FRMB,
+}ISP_REF_CNT_ID_ENUM_FRMB;
+
+typedef struct {
+ ISP_REF_CNT_CTRL_ENUM_FRMB ctrl;
+ ISP_REF_CNT_ID_ENUM_FRMB id;
+ signed int* data_ptr;
+}ISP_REF_CNT_CTRL_STRUCT_FRMB;
+
+
+//struct for enqueue/dequeue control in ihalpipe wrapper
+typedef enum
+{
+ ISP_ED_BUFQUE_CTRL_ENQUE_FRAME=0, // 0,signal that a specific buffer is enqueued
+ ISP_ED_BUFQUE_CTRL_WAIT_DEQUE, // 1,a dequeue thread is waiting to do dequeue
+ ISP_ED_BUFQUE_CTRL_DEQUE_SUCCESS, // 2,signal that a buffer is dequeued (success)
+ ISP_ED_BUFQUE_CTRL_DEQUE_FAIL, // 3,signal that a buffer is dequeued (fail)
+ ISP_ED_BUFQUE_CTRL_WAIT_FRAME, // 4,wait for a specific buffer
+ ISP_ED_BUFQUE_CTRL_WAKE_WAITFRAME, // 5,wake all sleeped users to check buffer is dequeued or not
+ ISP_ED_BUFQUE_CTRL_CLAER_ALL, // 6,free all recored dequeued buffer
+ ISP_ED_BUFQUE_CTRL_MAX
+}ISP_ED_BUFQUE_CTRL_ENUM;
+
+typedef struct
+{
+ ISP_ED_BUFQUE_CTRL_ENUM ctrl;
+ unsigned int processID;
+ unsigned int callerID;
+ int p2burstQIdx;
+ int p2dupCQIdx;
+ unsigned int timeoutUs;
+}ISP_ED_BUFQUE_STRUCT_FRMB;
+
+typedef enum
+{
+ ISP_ED_BUF_STATE_NONE =-1,
+ ISP_ED_BUF_STATE_ENQUE=0,
+ ISP_ED_BUF_STATE_RUNNING,
+ ISP_ED_BUF_STATE_WAIT_DEQUE_FAIL,
+ ISP_ED_BUF_STATE_DEQUE_SUCCESS,
+ ISP_ED_BUF_STATE_DEQUE_FAIL
+}ISP_ED_BUF_STATE_ENUM;
+
+
+/********************************************************************************************
+ pass1 real time buffer control use cq0c
+********************************************************************************************/
+//
+//#define _rtbc_use_cq0c_ //defined in camera_isp.h
+
+#define _MAGIC_NUM_ERR_HANDLING_
+
+#if defined(_rtbc_use_cq0c_)
+//
+typedef struct _cq_info_rtbc_st_frmb_
+{
+ CQ_CMD_ST imgo_frmb;
+ CQ_CMD_ST img2o_frmb;//rrzo
+ CQ_CMD_ST next_cq0ci_frmb;
+ CQ_CMD_ST end_frmb;
+ unsigned long imgo_base_pAddr_frmb;
+ unsigned long img2o_base_pAddr_frmb;//rrzo
+ signed int imgo_buf_idx_frmb; //used for replace buffer
+ signed int img2o_buf_idx_frmb; //used for replace buffer//rrzo
+}CQ_INFO_RTBC_ST_FRMB;
+
+typedef struct _cq_ring_cmd_st_frmb_
+{
+ CQ_INFO_RTBC_ST_FRMB cq_rtbc_frmb;
+ unsigned long next_pa_frmb;
+ struct _cq_ring_cmd_st_frmb_ *pNext_frmb;
+}CQ_RING_CMD_ST_FRMB;
+
+typedef struct _cq_rtbc_ring_st_frmb_
+{
+ CQ_RING_CMD_ST_FRMB rtbc_ring_frmb[ISP_RT_CQ0C_BUF_SIZE];
+ unsigned long imgo_ring_size_frmb;
+ unsigned long img2o_ring_size_frmb;//rrzo
+}CQ_RTBC_RING_ST_FRMB;
+
+#endif
+
+//CQ0B for AE smoothing, set obc_gain0~3
+typedef struct _cq0b_info_rtbc_st_frmb_
+{
+ CQ_CMD_ST ob_frmb;
+ CQ_CMD_ST end_frmb;
+}CQ0B_INFO_RTBC_ST_FRMB;
+
+typedef struct _cq0b_ring_cmd_st_frmb_
+{
+ CQ0B_INFO_RTBC_ST_FRMB cq0b_rtbc_frmb;
+ unsigned long next_pa_frmb;
+ struct _cq0b_ring_cmd_st_frmb_ *pNext_frmb;
+}CQ0B_RING_CMD_ST_FRMB;
+
+typedef struct _cq0b_rtbc_ring_st_frmb_
+{
+ CQ0B_RING_CMD_ST_FRMB rtbc_ring_frmb;
+}CQ0B_RTBC_RING_ST_FRMB;
+
+
+#ifdef CONFIG_COMPAT
+typedef struct
+{
+ int userKey;
+ compat_uptr_t userName;
+}compat_ISP_REGISTER_USERKEY_STRUCT_FRMB;
+
+typedef struct
+{
+ compat_uptr_t pData;
+ unsigned int Count; // count
+} compat_ISP_REG_IO_STRUCT_FRMB;
+
+typedef struct {
+ ISP_RT_BUF_CTRL_ENUM ctrl;
+ _isp_dma_enum_ buf_id;
+ compat_uptr_t data_ptr;
+ compat_uptr_t ex_data_ptr; //exchanged buffer
+ compat_uptr_t pExtend;
+} compat_ISP_BUFFER_CTRL_STRUCT_FRMB;
+
+typedef struct {
+ ISP_REF_CNT_CTRL_ENUM ctrl;
+ ISP_REF_CNT_ID_ENUM id;
+ compat_uptr_t data_ptr;
+} compat_ISP_REF_CNT_CTRL_STRUCT_FRMB;
+#endif
+
+//
+/********************************************************************************************
+
+********************************************************************************************/
+
+
+/*******************************************************************************
+*
+********************************************************************************/
+
+typedef enum
+{
+ //ISP_CMD_RESET, //Reset
+ //ISP_CMD_RESET_BUF,
+ //ISP_CMD_READ_REG, //Read register from driver
+ //ISP_CMD_WRITE_REG, //Write register to driver
+ //ISP_CMD_HOLD_TIME,
+ //ISP_CMD_HOLD_REG, //Hold reg write to hw, on/off
+ //ISP_CMD_WAIT_IRQ, //Wait IRQ
+ ///ISP_CMD_READ_IRQ, //Read IRQ
+ //ISP_CMD_CLEAR_IRQ, //Clear IRQ
+ //ISP_CMD_DUMP_REG, //Dump ISP registers , for debug usage
+ //ISP_CMD_SET_USER_PID, //for signal
+ //ISP_CMD_RT_BUF_CTRL, //for pass buffer control
+ //ISP_CMD_REF_CNT, //get imem reference count
+ //ISP_CMD_DEBUG_FLAG, //Dump message level
+ //ISP_CMD_SENSOR_FREQ_CTRL // sensor frequence control
+
+ ISP_CMD_REGISTER_IRQ_FRMB = ISP_CMD_SENSOR_FREQ_CTRL+1 , //register for a specific irq
+ ISP_CMD_DEBUG_FLAG_FRMB,
+ ISP_CMD_UNREGISTER_IRQ_FRMB, //unregister for a specific irq
+ ISP_CMD_WAIT_IRQ_FRMB, //Wait IRQ
+ ISP_CMD_ED_QUEBUF_CTRL_FRMB,
+ ISP_CMD_UPDATE_REGSCEN_FRMB,
+ ISP_CMD_QUERY_REGSCEN_FRMB,
+ ISP_CMD_UPDATE_BURSTQNUM_FRMB,
+ ISP_CMD_QUERY_BURSTQNUM_FRMB,
+ ISP_CMD_DUMP_ISR_LOG_FRMB, //dump isr log
+ ISP_CMD_GET_CUR_SOF_FRMB,
+ ISP_CMD_GET_DMA_ERR_FRMB,
+ ISP_CMD_GET_INT_ERR_FRMB,
+#ifdef T_STAMP_2_0
+ ISP_CMD_SET_FPS_FRMB,
+#endif
+ ISP_CMD_REGISTER_IRQ_USER_KEY, /* register for a user key to do irq operation */
+ ISP_CMD_MARK_IRQ_REQUEST, /* mark for a specific register befor wait for the interrupt if needed */
+ ISP_CMD_GET_MARK2QUERY_TIME, /* query time information between read and mark */
+ ISP_CMD_FLUSH_IRQ_REQUEST, /* flush signal */
+ ISP_CMD_SET_CAM_VERSION, /* set camera version */
+ ISP_CMD_GET_DROP_FRAME_FRMB, //dump current frame informaiton, 1 for drop frmae, 2 for last working frame
+}ISP_CMD_ENUM_FRMB;
+//
+//#define ISP_RESET _IO (ISP_MAGIC, ISP_CMD_RESET)
+//#define ISP_RESET_BUF _IO (ISP_MAGIC, ISP_CMD_RESET_BUF)
+//#define ISP_READ_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_READ_REG, ISP_REG_IO_STRUCT)
+//#define ISP_WRITE_REGISTER _IOWR(ISP_MAGIC, ISP_CMD_WRITE_REG, ISP_REG_IO_STRUCT)
+//#define ISP_HOLD_REG_TIME _IOW (ISP_MAGIC, ISP_CMD_HOLD_TIME, ISP_HOLD_TIME_ENUM)
+//#define ISP_HOLD_REG _IOW (ISP_MAGIC, ISP_CMD_HOLD_REG, bool)
+//#define ISP_WAIT_IRQ _IOW (ISP_MAGIC, ISP_CMD_WAIT_IRQ, ISP_WAIT_IRQ_STRUCT)
+//#define ISP_READ_IRQ _IOR (ISP_MAGIC, ISP_CMD_READ_IRQ, ISP_READ_IRQ_STRUCT)
+//#define ISP_CLEAR_IRQ _IOW (ISP_MAGIC, ISP_CMD_CLEAR_IRQ, ISP_CLEAR_IRQ_STRUCT)
+//#define ISP_DUMP_REG _IO (ISP_MAGIC, ISP_CMD_DUMP_REG)
+//#define ISP_SET_USER_PID _IOW (ISP_MAGIC, ISP_CMD_SET_USER_PID, unsigned long)
+//#define ISP_BUFFER_CTRL _IOWR(ISP_MAGIC, ISP_CMD_RT_BUF_CTRL, ISP_BUFFER_CTRL_STRUCT)
+//#define ISP_REF_CNT_CTRL _IOWR(ISP_MAGIC, ISP_CMD_REF_CNT, ISP_REF_CNT_CTRL_STRUCT)
+#define ISP_DEBUG_FLAG_FRMB _IOW (ISP_MAGIC, ISP_CMD_DEBUG_FLAG_FRMB, unsigned long)
+//#define ISP_SENSOR_FREQ_CTRL _IOW (ISP_MAGIC, ISP_CMD_SENSOR_FREQ_CTRL, unsigned long)
+#define ISP_REGISTER_IRQ_FRMB _IOW (ISP_MAGIC, ISP_CMD_REGISTER_IRQ_FRMB, ISP_WAIT_IRQ_STRUCT_FRMB)
+#define ISP_UNREGISTER_IRQ_FRMB _IOW (ISP_MAGIC, ISP_CMD_UNREGISTER_IRQ_FRMB, ISP_WAIT_IRQ_STRUCT_FRMB)
+#define ISP_WAIT_IRQ_FRMB _IOW (ISP_MAGIC, ISP_CMD_WAIT_IRQ_FRMB, ISP_WAIT_IRQ_STRUCT_FRMB)
+#define ISP_ED_QUEBUF_CTRL_FRMB _IOWR (ISP_MAGIC, ISP_CMD_ED_QUEBUF_CTRL_FRMB, ISP_ED_BUFQUE_STRUCT_FRMB)
+#define ISP_UPDATE_REGSCEN_FRMB _IOWR (ISP_MAGIC, ISP_CMD_UPDATE_REGSCEN_FRMB, unsigned int)
+#define ISP_QUERY_REGSCEN_FRMB _IOR (ISP_MAGIC, ISP_CMD_QUERY_REGSCEN_FRMB, unsigned int)
+#define ISP_UPDATE_BURSTQNUM_FRMB _IOW(ISP_MAGIC,ISP_CMD_UPDATE_BURSTQNUM_FRMB, int)
+#define ISP_QUERY_BURSTQNUM_FRMB _IOR (ISP_MAGIC,ISP_CMD_QUERY_BURSTQNUM_FRMB, int)
+#define ISP_DUMP_ISR_LOG_FRMB _IO (ISP_MAGIC, ISP_CMD_DUMP_ISR_LOG_FRMB)
+#define ISP_GET_CUR_SOF_FRMB _IOWR(ISP_MAGIC, ISP_CMD_GET_CUR_SOF_FRMB, unsigned long)
+#define ISP_GET_DMA_ERR_FRMB _IOWR (ISP_MAGIC, ISP_CMD_GET_DMA_ERR_FRMB, unsigned int)
+#define ISP_GET_INT_ERR_FRMB _IOR (ISP_MAGIC, ISP_CMD_GET_INT_ERR_FRMB, unsigned long)
+#ifdef T_STAMP_2_0
+ #define ISP_SET_FPS_FRMB _IOW (ISP_MAGIC, ISP_CMD_SET_FPS_FRMB, unsigned int)
+#endif
+#define ISP_GET_DROP_FRAME_FRMB _IOWR(ISP_MAGIC, ISP_CMD_GET_DROP_FRAME_FRMB, unsigned int)
+#define ISP_REGISTER_IRQ_USER_KEY _IOWR(ISP_MAGIC,ISP_CMD_REGISTER_IRQ_USER_KEY, ISP_REGISTER_USERKEY_STRUCT_FRMB)
+#define ISP_MARK_IRQ_REQUEST _IOWR(ISP_MAGIC,ISP_CMD_MARK_IRQ_REQUEST,ISP_WAIT_IRQ_STRUCT_FRMB)
+#define ISP_GET_MARK2QUERY_TIME _IOWR(ISP_MAGIC,ISP_CMD_GET_MARK2QUERY_TIME,ISP_WAIT_IRQ_STRUCT_FRMB)
+#define ISP_FLUSH_IRQ_REQUEST _IOW(ISP_MAGIC,ISP_CMD_FLUSH_IRQ_REQUEST,ISP_WAIT_IRQ_STRUCT_FRMB)
+#define ISP_SET_CAM_VERSION _IOW(ISP_MAGIC,ISP_CMD_SET_CAM_VERSION, bool)
+
+#ifdef CONFIG_COMPAT
+#define COMPAT_ISP_DEBUG_FLAG_FRMB _IOW(ISP_MAGIC, ISP_CMD_DEBUG_FLAG_FRMB, compat_uptr_t)
+#define COMPAT_ISP_REGISTER_IRQ_USER_KEY _IOWR(ISP_MAGIC, ISP_CMD_REGISTER_IRQ_USER_KEY, compat_ISP_REGISTER_USERKEY_STRUCT_FRMB)
+#define COMPAT_ISP_GET_DMA_ERR_FRMB _IOWR(ISP_MAGIC, ISP_CMD_GET_DMA_ERR_FRMB, compat_uptr_t)
+#define COMPAT_ISP_GET_INT_ERR_FRMB _IOR(ISP_MAGIC, ISP_CMD_GET_INT_ERR_FRMB, compat_uptr_t)
+#define COMPAT_ISP_WAIT_IRQ _IOW (ISP_MAGIC, ISP_CMD_WAIT_IRQ_FRMB, compat_ISP_WAIT_IRQ_STRUCT_FRMB)
+#define COMPAT_ISP_MARK_IRQ_REQUEST _IOWR(ISP_MAGIC,ISP_CMD_MARK_IRQ_REQUEST,compat_ISP_WAIT_IRQ_STRUCT_FRMB)
+#define COMPAT_ISP_GET_MARK2QUERY_TIME _IOWR(ISP_MAGIC,ISP_CMD_GET_MARK2QUERY_TIME,compat_ISP_WAIT_IRQ_STRUCT_FRMB)
+#define COMPAT_ISP_FLUSH_IRQ_REQUEST _IOW(ISP_MAGIC,ISP_CMD_FLUSH_IRQ_REQUEST,compat_ISP_WAIT_IRQ_STRUCT_FRMB)
+#define COMPAT_ISP_GET_CUR_SOF_FRMB _IOWR(ISP_MAGIC, ISP_CMD_GET_CUR_SOF_FRMB, compat_uptr_t)
+#endif
+
+//
+
+
+//
+//int32_t ISP_MDPClockOnCallback(uint64_t engineFlag);
+//int32_t ISP_MDPDumpCallback(uint64_t engineFlag, int level);
+//int32_t ISP_MDPResetCallback(uint64_t engineFlag);
+//int32_t ISP_MDPClockOffCallback(uint64_t engineFlag);
+//int32_t ISP_BeginGCECallback(uint32_t taskID, uint32_t *regCount, uint32_t **regAddress);
+//int32_t ISP_EndGCECallback(uint32_t taskID, uint32_t regCount, uint32_t *regValues);
+//
+
+//basically , should separate into p1/p1_d/p2/camsv/camsv_d,
+//currently, only use camsv/camsv_d/others
+typedef enum _eISPIrq
+{
+ _IRQ = 0,
+ _IRQ_D = 1,
+ _CAMSV_IRQ = 2,
+ _CAMSV_D_IRQ = 3,
+ _IRQ_MAX = 4,
+}eISPIrq;
+//
+
+//static int ISP_ED_BufQue_CTRL_FUNC(ISP_ED_BUFQUE_STRUCT param);
+//static int ISP_RTBC_ENQUE_FRMB(int dma,ISP_RT_BUF_INFO_STRUCT* prt_buf_info);
+//static int ISP_RTBC_DEQUE_FRMB(int dma,ISP_DEQUE_BUF_INFO_STRUCT* pdeque_buf);
+//static long ISP_Buf_CTRL_FUNC_FRMB(unsigned int Param);
+//static int ISP_SOF_Buf_Get_FRMB(eISPIrq irqT,unsigned long long sec,unsigned long usec,bool bDrop);
+//static int ISP_DONE_Buf_Time_FrmB(eISPIrq irqT,unsigned long long sec,unsigned long usec);
+//static int ISP_WaitIrq_FrmB(ISP_WAIT_IRQ_STRUCT_FRMB* WaitIrq);
+//
+
+#endif
+
diff --git a/kernel-headers/camera_pipe_mgr_D2.h b/kernel-headers/camera_pipe_mgr_D2.h
new file mode 100644
index 0000000..67adb9d
--- /dev/null
+++ b/kernel-headers/camera_pipe_mgr_D2.h
@@ -0,0 +1,114 @@
+/*
+* Copyright (C) 2011-2014 MediaTek Inc.
+*
+* 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.
+*
+* You should have received a copy of the GNU General Public License along with this program.
+* If not, see <http://www.gnu.org/licenses/>.
+*/
+
+//-----------------------------------------------------------------------------
+#ifndef CAMERA_PIPE_MGR_H
+#define CAMERA_PIPE_MGR_H
+//-----------------------------------------------------------------------------
+#define CAM_PIPE_MGR_DEV_NAME "camera-pipemgr"
+#define CAM_PIPE_MGR_MAGIC_NO 'p'
+//-----------------------------------------------------------------------------
+#define CAM_PIPE_MGR_PIPE_MASK_CAM_IO ((unsigned long)1 << 0)
+#define CAM_PIPE_MGR_PIPE_MASK_POST_PROC ((unsigned long)1 << 1)
+#define CAM_PIPE_MGR_PIPE_MASK_XDP_CAM ((unsigned long)1 << 2)
+//-----------------------------------------------------------------------------
+typedef enum
+{
+ CAM_PIPE_MGR_SCEN_SW_NONE,
+ CAM_PIPE_MGR_SCEN_SW_CAM_IDLE,
+ CAM_PIPE_MGR_SCEN_SW_CAM_PRV,
+ CAM_PIPE_MGR_SCEN_SW_CAM_CAP,
+ CAM_PIPE_MGR_SCEN_SW_VIDEO_PRV,
+ CAM_PIPE_MGR_SCEN_SW_VIDEO_REC,
+ CAM_PIPE_MGR_SCEN_SW_VIDEO_VSS,
+ CAM_PIPE_MGR_SCEN_SW_ZSD,
+ CAM_PIPE_MGR_SCEN_SW_N3D,
+}CAM_PIPE_MGR_SCEN_SW_ENUM;
+//
+typedef enum
+{
+ CAM_PIPE_MGR_SCEN_HW_NONE,
+ CAM_PIPE_MGR_SCEN_HW_IC,
+ CAM_PIPE_MGR_SCEN_HW_VR,
+ CAM_PIPE_MGR_SCEN_HW_ZSD,
+ CAM_PIPE_MGR_SCEN_HW_IP,
+ CAM_PIPE_MGR_SCEN_HW_N3D,
+ CAM_PIPE_MGR_SCEN_HW_VSS
+}CAM_PIPE_MGR_SCEN_HW_ENUM;
+//
+typedef enum
+{
+ CAM_PIPE_MGR_DEV_CAM,
+ CAM_PIPE_MGR_DEV_ATV,
+ CAM_PIPE_MGR_DEV_VT
+}CAM_PIPE_MGR_DEV_ENUM;
+//
+typedef struct
+{
+ unsigned int PipeMask;
+ unsigned int Timeout;
+}CAM_PIPE_MGR_LOCK_STRUCT;
+//
+typedef struct
+{
+ unsigned int PipeMask;
+}CAM_PIPE_MGR_UNLOCK_STRUCT;
+//
+typedef struct
+{
+ CAM_PIPE_MGR_SCEN_SW_ENUM ScenSw;
+ CAM_PIPE_MGR_SCEN_HW_ENUM ScenHw;
+ CAM_PIPE_MGR_DEV_ENUM Dev;
+}CAM_PIPE_MGR_MODE_STRUCT;
+//
+typedef struct
+{
+ unsigned int PipeMask;
+}CAM_PIPE_MGR_ENABLE_STRUCT;
+//
+typedef struct
+{
+ unsigned int PipeMask;
+}CAM_PIPE_MGR_DISABLE_STRUCT;
+//-----------------------------------------------------------------------------
+typedef enum
+{
+ CAM_PIPE_MGR_CMD_VECNPLL_CTRL_SET_HIGH,
+ CAM_PIPE_MGR_CMD_VECNPLL_CTRL_SET_LOW
+}CAM_PIPE_MGR_CMD_VECNPLL_CTRL_ENUM;
+//-----------------------------------------------------------------------------
+typedef enum
+{
+ CAM_PIPE_MGR_CMD_LOCK,
+ CAM_PIPE_MGR_CMD_UNLOCK,
+ CAM_PIPE_MGR_CMD_DUMP,
+ CAM_PIPE_MGR_CMD_SET_MODE,
+ CAM_PIPE_MGR_CMD_GET_MODE,
+ CAM_PIPE_MGR_CMD_ENABLE_PIPE,
+ CAM_PIPE_MGR_CMD_DISABLE_PIPE,
+ CAM_PIPE_MGR_CMD_VENC_PLL_CTRL
+}CAM_PIPE_MGR_CMD_ENUM;
+//-----------------------------------------------------------------------------
+#define CAM_PIPE_MGR_LOCK _IOW( CAM_PIPE_MGR_MAGIC_NO, CAM_PIPE_MGR_CMD_LOCK, CAM_PIPE_MGR_LOCK_STRUCT)
+#define CAM_PIPE_MGR_UNLOCK _IOW( CAM_PIPE_MGR_MAGIC_NO, CAM_PIPE_MGR_CMD_UNLOCK, CAM_PIPE_MGR_UNLOCK_STRUCT)
+#define CAM_PIPE_MGR_DUMP _IO( CAM_PIPE_MGR_MAGIC_NO, CAM_PIPE_MGR_CMD_DUMP)
+#define CAM_PIPE_MGR_SET_MODE _IOW( CAM_PIPE_MGR_MAGIC_NO, CAM_PIPE_MGR_CMD_SET_MODE, CAM_PIPE_MGR_MODE_STRUCT)
+#define CAM_PIPE_MGR_GET_MODE _IOW( CAM_PIPE_MGR_MAGIC_NO, CAM_PIPE_MGR_CMD_GET_MODE, CAM_PIPE_MGR_MODE_STRUCT)
+#define CAM_PIPE_MGR_ENABLE_PIPE _IOW( CAM_PIPE_MGR_MAGIC_NO, CAM_PIPE_MGR_CMD_ENABLE_PIPE, CAM_PIPE_MGR_ENABLE_STRUCT)
+#define CAM_PIPE_MGR_DISABLE_PIPE _IOW( CAM_PIPE_MGR_MAGIC_NO, CAM_PIPE_MGR_CMD_DISABLE_PIPE, CAM_PIPE_MGR_DISABLE_STRUCT)
+#define CAM_PIPE_MGR_VENCPLL_CTRL _IOW( CAM_PIPE_MGR_MAGIC_NO, CAM_PIPE_MGR_CMD_VENC_PLL_CTRL, CAM_PIPE_MGR_CMD_VECNPLL_CTRL_ENUM)
+//-----------------------------------------------------------------------------
+#endif
+//-----------------------------------------------------------------------------
+
diff --git a/kernel-headers/camera_pipe_mgr_imp_D2.h b/kernel-headers/camera_pipe_mgr_imp_D2.h
new file mode 100644
index 0000000..4694b3b
--- /dev/null
+++ b/kernel-headers/camera_pipe_mgr_imp_D2.h
@@ -0,0 +1,113 @@
+/*
+* Copyright (C) 2011-2014 MediaTek Inc.
+*
+* 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.
+*
+* You should have received a copy of the GNU General Public License along with this program.
+* If not, see <http://www.gnu.org/licenses/>.
+*/
+
+//-----------------------------------------------------------------------------
+#ifndef CAMERA_PIPE_MGR_IMP_H
+#define CAMERA_PIPE_MGR_IMP_H
+//-----------------------------------------------------------------------------
+typedef unsigned long long MUINT64;
+typedef long long MINT64;
+typedef unsigned long MUINT32;
+typedef long MINT32;
+typedef unsigned char MUINT8;
+typedef char MINT8;
+typedef bool MBOOL;
+#define MTRUE true
+#define MFALSE false
+//-----------------------------------------------------------------------------
+#define LOG_TAG "CamPipeMgr"
+#define LOG_MSG(fmt, arg...) pr_debug(LOG_TAG "[%s]" fmt "\r\n", __FUNCTION__, ##arg)
+#define LOG_WRN(fmt, arg...) pr_warn (LOG_TAG "[%s]WRN(%5d):" fmt "\r\n", __FUNCTION__, __LINE__, ##arg)
+#define LOG_ERR(fmt, arg...) pr_err (LOG_TAG "[%s]ERR(%5d):" fmt "\r\n", __FUNCTION__, __LINE__, ##arg)
+#define LOG_DMP(fmt, arg...) pr_err (LOG_TAG "" fmt, ##arg)
+//-----------------------------------------------------------------------------
+#define CAM_PIPE_MGR_DEV_NUM (1)
+#define CAM_PIPE_MGR_DEV_MINOR_NUM (1)
+#define CAM_PIPE_MGR_DEV_NO_MINOR (0)
+#define CAM_PIPE_MGR_JIFFIES_MAX (0xFFFFFFFF)
+#define CAM_PIPE_MGR_PROC_NAME "Default"
+#define CAM_PIPE_MGR_SCEN_HW_AMOUNT (7)
+#define CAM_PIPE_MGR_TIMEOUT_MAX (10*1000)
+//-----------------------------------------------------------------------------
+#define CAM_PIPE_MGR_PIPE_NAME_LEN (10)
+#define CAM_PIPE_MGR_PIPE_NAME_CAM_IO "CamIO"
+#define CAM_PIPE_MGR_PIPE_NAME_POST_PROC "PostProc"
+#define CAM_PIPE_MGR_PIPE_NAME_XDP_CAM "CamXDP"
+//-----------------------------------------------------------------------------
+typedef enum
+{
+ CAM_PIPE_MGR_PIPE_CAM_IO,
+ CAM_PIPE_MGR_PIPE_POST_PROC,
+ CAM_PIPE_MGR_PIPE_XDP_CAM,
+ CAM_PIPE_MGR_PIPE_AMOUNT
+}CAM_PIPE_MGR_PIPE_ENUM;
+//
+typedef enum
+{
+ CAM_PIPE_MGR_STATUS_OK,
+ CAM_PIPE_MGR_STATUS_FAIL,
+ CAM_PIPE_MGR_STATUS_TIMEOUT,
+ CAM_PIPE_MGR_STATUS_UNKNOW
+}CAM_PIPE_MGR_STATUS_ENUM;
+//
+#define CAM_PIPE_MGR_LOCK_TABLE_NONE ( 0)
+#define CAM_PIPE_MGR_LOCK_TABLE_IC ( (1<<CAM_PIPE_MGR_PIPE_CAM_IO)| \
+ (1<<CAM_PIPE_MGR_PIPE_POST_PROC))
+#define CAM_PIPE_MGR_LOCK_TABLE_VR ( (1<<CAM_PIPE_MGR_PIPE_CAM_IO)| \
+ (1<<CAM_PIPE_MGR_PIPE_XDP_CAM))
+#define CAM_PIPE_MGR_LOCK_TABLE_ZSD ( (1<<CAM_PIPE_MGR_PIPE_CAM_IO)| \
+ (1<<CAM_PIPE_MGR_PIPE_XDP_CAM))
+#define CAM_PIPE_MGR_LOCK_TABLE_IP ( (1<<CAM_PIPE_MGR_PIPE_POST_PROC))
+#define CAM_PIPE_MGR_LOCK_TABLE_N3D ( (1<<CAM_PIPE_MGR_PIPE_CAM_IO)| \
+ (1<<CAM_PIPE_MGR_PIPE_POST_PROC))
+#define CAM_PIPE_MGR_LOCK_TABLE_VSS ( (1<<CAM_PIPE_MGR_PIPE_CAM_IO)| \
+ (1<<CAM_PIPE_MGR_PIPE_POST_PROC))
+//-----------------------------------------------------------------------------
+typedef struct
+{
+ pid_t Pid;
+ pid_t Tgid;
+ char ProcName[TASK_COMM_LEN];
+ MUINT32 PipeMask;
+ MUINT32 TimeS;
+ MUINT32 TimeUS;
+}CAM_PIPE_MGR_PROC_STRUCT;
+//
+typedef struct
+{
+ pid_t Pid;
+ pid_t Tgid;
+ char ProcName[TASK_COMM_LEN];
+ MUINT32 TimeS;
+ MUINT32 TimeUS;
+}CAM_PIPE_MGR_PIPE_STRUCT;
+//
+typedef struct
+{
+ MUINT32 PipeMask;
+ spinlock_t SpinLock;
+ dev_t DevNo;
+ struct cdev* pCharDrv;
+ struct class* pClass;
+ wait_queue_head_t WaitQueueHead;
+ CAM_PIPE_MGR_MODE_STRUCT Mode;
+ CAM_PIPE_MGR_PIPE_STRUCT PipeInfo[CAM_PIPE_MGR_PIPE_AMOUNT];
+ char PipeName[CAM_PIPE_MGR_PIPE_AMOUNT][CAM_PIPE_MGR_PIPE_NAME_LEN];
+ MUINT32 PipeLockTable[CAM_PIPE_MGR_SCEN_HW_AMOUNT];
+ MUINT32 LogMask;
+}CAM_PIPE_MGR_STRUCT;
+//-----------------------------------------------------------------------------
+#endif
+//-----------------------------------------------------------------------------
+
diff --git a/kernel-headers/camera_sysram.h b/kernel-headers/camera_sysram.h
new file mode 100644
index 0000000..fca705d
--- /dev/null
+++ b/kernel-headers/camera_sysram.h
@@ -0,0 +1,37 @@
+#ifndef CAMERA_SYSRAM_H
+#define CAMERA_SYSRAM_H
+//-----------------------------------------------------------------------------
+#define SYSRAM_DEV_NAME "camera-sysram"
+#define SYSRAM_MAGIC_NO 'p'
+//-----------------------------------------------------------------------------
+typedef enum
+{
+ SYSRAM_USER_VIDO,
+ SYSRAM_USER_GDMA,
+ SYSRAM_USER_SW_FD,
+ SYSRAM_USER_AMOUNT,
+ SYSRAM_USER_NONE
+}SYSRAM_USER_ENUM;
+//
+typedef struct
+{
+ unsigned long Alignment;
+ unsigned long Size;
+ SYSRAM_USER_ENUM User;
+ unsigned long Addr; // In/Out : address
+ unsigned long TimeoutMS; // In : millisecond
+}SYSRAM_ALLOC_STRUCT;
+//
+typedef enum
+{
+ SYSRAM_CMD_ALLOC,
+ SYSRAM_CMD_FREE,
+ SYSRAM_CMD_DUMP
+}SYSRAM_CMD_ENUM;
+//-----------------------------------------------------------------------------
+#define SYSRAM_ALLOC _IOWR( SYSRAM_MAGIC_NO, SYSRAM_CMD_ALLOC, SYSRAM_ALLOC_STRUCT)
+#define SYSRAM_FREE _IOWR( SYSRAM_MAGIC_NO, SYSRAM_CMD_FREE, SYSRAM_USER_ENUM)
+#define SYSRAM_DUMP _IO( SYSRAM_MAGIC_NO, SYSRAM_CMD_DUMP)
+//-----------------------------------------------------------------------------
+#endif
+
diff --git a/kernel-headers/camera_sysram_D2.h b/kernel-headers/camera_sysram_D2.h
new file mode 100644
index 0000000..9bec42a
--- /dev/null
+++ b/kernel-headers/camera_sysram_D2.h
@@ -0,0 +1,56 @@
+/*
+* Copyright (C) 2011-2014 MediaTek Inc.
+*
+* 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.
+*
+* You should have received a copy of the GNU General Public License along with this program.
+* If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CAMERA_SYSRAM_H
+#define CAMERA_SYSRAM_H
+//-----------------------------------------------------------------------------
+#define SYSRAM_DEV_NAME "camera-sysram"
+#define SYSRAM_MAGIC_NO 'p'
+//-----------------------------------------------------------------------------
+#ifdef CONFIG_COMPAT
+//64 bit
+#include <linux/fs.h>
+#include <linux/compat.h>
+#endif
+typedef enum
+{
+ SYSRAM_USER_VIDO,
+ SYSRAM_USER_GDMA,
+ SYSRAM_USER_SW_FD,
+ SYSRAM_USER_AMOUNT,
+ SYSRAM_USER_NONE
+}SYSRAM_USER_ENUM;
+//
+typedef struct
+{
+ unsigned int Alignment;
+ unsigned int Size;
+ SYSRAM_USER_ENUM User;
+ unsigned int Addr; // In/Out : address
+ unsigned int TimeoutMS; // In : millisecond
+}SYSRAM_ALLOC_STRUCT;
+//
+typedef enum
+{
+ SYSRAM_CMD_ALLOC,
+ SYSRAM_CMD_FREE,
+ SYSRAM_CMD_DUMP
+}SYSRAM_CMD_ENUM;
+//-----------------------------------------------------------------------------
+#define SYSRAM_ALLOC _IOWR( SYSRAM_MAGIC_NO, SYSRAM_CMD_ALLOC, SYSRAM_ALLOC_STRUCT)
+#define SYSRAM_FREE _IOWR( SYSRAM_MAGIC_NO, SYSRAM_CMD_FREE, SYSRAM_USER_ENUM)
+#define SYSRAM_DUMP _IO( SYSRAM_MAGIC_NO, SYSRAM_CMD_DUMP)
+//-----------------------------------------------------------------------------
+#endif
+
diff --git a/kernel-headers/camera_sysram_imp_D2.h b/kernel-headers/camera_sysram_imp_D2.h
new file mode 100644
index 0000000..73732f9
--- /dev/null
+++ b/kernel-headers/camera_sysram_imp_D2.h
@@ -0,0 +1,176 @@
+/*
+* Copyright (C) 2011-2014 MediaTek Inc.
+*
+* 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.
+*
+* You should have received a copy of the GNU General Public License along with this program.
+* If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CAMERA_SYSRAM_IMP_H
+#define CAMERA_SYSRAM_IMP_H
+//-----------------------------------------------------------------------------
+typedef unsigned long long MUINT64;
+typedef long long MINT64;
+typedef unsigned long MUINT32;
+typedef long MINT32;
+typedef unsigned char MUINT8;
+typedef char MINT8;
+typedef bool MBOOL;
+#define MTRUE true
+#define MFALSE false
+//-----------------------------------------------------------------------------
+#define LOG_TAG "SYSRAM"
+#define LOG_MSG(fmt, arg...) pr_debug(LOG_TAG "[%s]" fmt "\r\n", __FUNCTION__, ##arg)
+#define LOG_WRN(fmt, arg...) pr_warn (LOG_TAG "[%s]WRN(%5d):" fmt "\r\n", __FUNCTION__, __LINE__, ##arg)
+#define LOG_ERR(fmt, arg...) pr_err (LOG_TAG "[%s]ERR(%5d):" fmt "\r\n", __FUNCTION__, __LINE__, ##arg)
+#define LOG_DMP(fmt, arg...) pr_err (LOG_TAG "" fmt, ##arg)
+//-----------------------------------------------------------------------------
+#define SYSRAM_DEBUG_DEFAULT (0xFFFFFFFF)
+#define SYSRAM_JIFFIES_MAX (0xFFFFFFFF)
+#define SYSRAM_PROC_NAME "Default"
+//-----------------------------------------------------------------------------
+#define SYSRAM_BASE_PHY_ADDR ((SYSRAM_BASE&0x0FFFFFFF)|0x10000000)
+#define SYSRAM_BASE_SIZE (81920) //32K+48K
+#define SYSRAM_BASE_ADDR_BANK_0 (SYSRAM_BASE_PHY_ADDR)
+#define SYSRAM_BASE_SIZE_BANK_0 (SYSRAM_BASE_SIZE)
+//
+#define SYSRAM_USER_SIZE_VIDO (SYSRAM_BASE_SIZE)//(78408)//(74496) // Always allocate max SYSRAM size because there is no other user. //78408: Max size used when format is RGB565.
+#define SYSRAM_USER_SIZE_GDMA (46080)
+#define SYSRAM_USER_SIZE_SW_FD (0) //TBD
+//
+#define SYSRAM_MEM_NODE_AMOUNT_PER_POOL (SYSRAM_USER_AMOUNT*2 + 2)
+//-----------------------------------------------------------------------------
+typedef struct
+{
+ pid_t pid; // thread id
+ pid_t tgid; // process id
+ char ProcName[TASK_COMM_LEN]; // executable name
+ MUINT64 Time64;
+ MUINT32 TimeS;
+ MUINT32 TimeUS;
+}SYSRAM_USER_STRUCT;
+//
+typedef struct
+{
+ spinlock_t SpinLock;
+ MUINT32 TotalUserCount;
+ MUINT32 AllocatedTbl;
+ MUINT32 AllocatedSize[SYSRAM_USER_AMOUNT];
+ SYSRAM_USER_STRUCT UserInfo[SYSRAM_USER_AMOUNT];
+ wait_queue_head_t WaitQueueHead;
+ MBOOL EnableClk;
+ MUINT32 DebugFlag;
+ dev_t DevNo;
+ struct cdev* pCharDrv;
+ struct class* pClass;
+}SYSRAM_STRUCT;
+//
+typedef struct
+{
+ pid_t Pid;
+ pid_t Tgid;
+ char ProcName[TASK_COMM_LEN];
+ MUINT32 Table;
+ MUINT64 Time64;
+ MUINT32 TimeS;
+ MUINT32 TimeUS;
+}SYSRAM_PROC_STRUCT;
+
+//
+typedef enum
+{
+ SYSRAM_MEM_BANK_0,
+ SYSRAM_MEM_BANK_AMOUNT,
+ SYSRAM_MEM_BANK_BAD
+}SYSRAM_MEM_BANK_ENUM;
+//
+typedef struct SYSRAM_MEM_NODE
+{
+ SYSRAM_USER_ENUM User;
+ MUINT32 Offset;
+ MUINT32 Length;
+ MUINT32 Index;
+ struct SYSRAM_MEM_NODE* pNext;
+ struct SYSRAM_MEM_NODE* pPrev;
+}SYSRAM_MEM_NODE_STRUCT;
+//
+typedef struct
+{
+ SYSRAM_MEM_NODE_STRUCT* const pMemNode;
+ MUINT32 const UserAmount;
+ MUINT32 const Addr;
+ MUINT32 const Size;
+ MUINT32 IndexTbl;
+ MUINT32 UserCount;
+}SYSRAM_MEM_POOL_STRUCT;
+//------------------------------------------------------------------------------
+static SYSRAM_MEM_NODE_STRUCT SysramMemNodeBank0Tbl[SYSRAM_MEM_NODE_AMOUNT_PER_POOL];
+static SYSRAM_MEM_POOL_STRUCT SysramMemPoolInfo[SYSRAM_MEM_BANK_AMOUNT] =
+{
+ [SYSRAM_MEM_BANK_0] =
+ {
+ .pMemNode = &SysramMemNodeBank0Tbl[0],
+ .UserAmount = SYSRAM_MEM_NODE_AMOUNT_PER_POOL,
+ .Addr = SYSRAM_BASE_ADDR_BANK_0,
+ .Size = SYSRAM_BASE_SIZE_BANK_0,
+ .IndexTbl = (~0x1),
+ .UserCount = 0,
+ }
+};
+//
+static inline SYSRAM_MEM_POOL_STRUCT* SYSRAM_GetMemPoolInfo(SYSRAM_MEM_BANK_ENUM const MemBankNo)
+{
+ if(SYSRAM_MEM_BANK_AMOUNT > MemBankNo)
+ {
+ return &SysramMemPoolInfo[MemBankNo];
+ }
+ return NULL;
+}
+//
+enum
+{
+ SysramMemBank0UserMask =
+ (1<<SYSRAM_USER_VIDO)
+ |(1<<SYSRAM_USER_GDMA)
+ |(1<<SYSRAM_USER_SW_FD)
+ ,
+ SysramLogUserMask =
+ (1<<SYSRAM_USER_VIDO)
+ |(1<<SYSRAM_USER_GDMA)
+ |(1<<SYSRAM_USER_SW_FD)
+};
+//
+static SYSRAM_MEM_BANK_ENUM SYSRAM_GetMemBankNo(SYSRAM_USER_ENUM const User)
+{
+ MUINT32 const UserMask = (1<<User);
+ //
+ if(UserMask & SysramMemBank0UserMask)
+ {
+ return SYSRAM_MEM_BANK_0;
+ }
+ //
+ return SYSRAM_MEM_BANK_BAD;
+}
+//
+static char const*const SysramUserName[SYSRAM_USER_AMOUNT] =
+{
+ [SYSRAM_USER_VIDO] = "VIDO",
+ [SYSRAM_USER_GDMA] = "GDMA",
+ [SYSRAM_USER_SW_FD] = "SW FD"
+};
+//
+static MUINT32 const SysramUserSize[SYSRAM_USER_AMOUNT] =
+{
+ [SYSRAM_USER_VIDO] = (3 + SYSRAM_USER_SIZE_VIDO) / 4 * 4,
+ [SYSRAM_USER_GDMA] = (3 + SYSRAM_USER_SIZE_GDMA) / 4 * 4,
+ [SYSRAM_USER_SW_FD] = (3 + SYSRAM_USER_SIZE_SW_FD) / 4 * 4
+};
+//------------------------------------------------------------------------------
+#endif
+
diff --git a/kernel-headers/cmdq_engine.h b/kernel-headers/cmdq_engine.h
new file mode 100644
index 0000000..29b2ad1
--- /dev/null
+++ b/kernel-headers/cmdq_engine.h
@@ -0,0 +1,73 @@
+#ifndef __CMDQ_ENGINE_H__
+#define __CMDQ_ENGINE_H__
+
+typedef enum CMDQ_ENG_ENUM {
+ /* ISP */
+ CMDQ_ENG_ISP_IMGI = 0,
+ CMDQ_ENG_ISP_IMGO, /* 1 */
+ CMDQ_ENG_ISP_IMG2O, /* 2 */
+
+ /* MDP */
+ CMDQ_ENG_MDP_CAMIN, /* 3 */
+ CMDQ_ENG_MDP_RDMA0, /* 4 */
+ CMDQ_ENG_MDP_RSZ0, /* 5 */
+ CMDQ_ENG_MDP_RSZ1, /* 6 */
+ CMDQ_ENG_MDP_TDSHP0, /* 7 */
+ CMDQ_ENG_MDP_WROT0, /* 8 */
+ CMDQ_ENG_MDP_WDMA, /* 9 */
+
+ /* JPEG & VENC */
+ CMDQ_ENG_JPEG_ENC, /* 10 */
+ CMDQ_ENG_VIDEO_ENC, /* 11 */
+ CMDQ_ENG_JPEG_DEC, /* 12 */
+ CMDQ_ENG_JPEG_REMDC, /* 13 */
+
+ /* DISP */
+ CMDQ_ENG_DISP_UFOE, /* 14 */
+ CMDQ_ENG_DISP_AAL, /* 15 */
+ CMDQ_ENG_DISP_COLOR0, /* 16 */
+ CMDQ_ENG_DISP_RDMA0, /* 17 */
+ CMDQ_ENG_DISP_RDMA1, /* 18 */
+ CMDQ_ENG_DISP_WDMA0, /* 19 */
+ CMDQ_ENG_DISP_WDMA1, /* 20 */
+ CMDQ_ENG_DISP_OVL0, /* 21 */
+ CMDQ_ENG_DISP_OVL1, /* 22 */
+ CMDQ_ENG_DISP_GAMMA, /* 23 */
+ CMDQ_ENG_DISP_DSI0_VDO, /* 24 */
+ CMDQ_ENG_DISP_DSI0_CMD, /* 25 */
+ CMDQ_ENG_DISP_DSI0, /* 26 */
+ CMDQ_ENG_DISP_DPI, /* 27 */
+
+ /* temp: CMDQ internal usage */
+ CMDQ_ENG_CMDQ,
+ CMDQ_ENG_DISP_MUTEX,
+ CMDQ_ENG_MMSYS_CONFIG,
+
+ /* Dummy Engine */
+ CMDQ_ENG_MDP_RDMA1,
+ CMDQ_ENG_MDP_RSZ2,
+ CMDQ_ENG_MDP_TDSHP1,
+ CMDQ_ENG_MDP_COLOR0,
+ CMDQ_ENG_MDP_MOUT0,
+ CMDQ_ENG_MDP_MOUT1,
+ CMDQ_ENG_MDP_WROT1,
+
+ CMDQ_ENG_DISP_COLOR1,
+ CMDQ_ENG_DISP_RDMA2,
+ CMDQ_ENG_DISP_OVL2,
+ CMDQ_ENG_DISP_2L_OVL0,
+ CMDQ_ENG_DISP_2L_OVL1,
+ CMDQ_ENG_DISP_2L_OVL2,
+ CMDQ_ENG_DISP_MERGE,
+ CMDQ_ENG_DISP_SPLIT0,
+ CMDQ_ENG_DISP_SPLIT1,
+ CMDQ_ENG_DISP_DSI1_VDO,
+ CMDQ_ENG_DISP_DSI1_CMD,
+ CMDQ_ENG_DISP_DSI1,
+
+ CMDQ_ENG_DPE,
+
+ CMDQ_MAX_ENGINE_COUNT /* ALWAYS keep at the end */
+} CMDQ_ENG_ENUM;
+
+#endif /* __CMDQ_ENGINE_H__ */
diff --git a/kernel-headers/cmdq_event.h b/kernel-headers/cmdq_event.h
new file mode 100644
index 0000000..442e096
--- /dev/null
+++ b/kernel-headers/cmdq_event.h
@@ -0,0 +1,145 @@
+/* MDP start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_SOF, 0)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_SOF, 1)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_SOF, 2)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DSI_TE, 3)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_SOF, 4)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_SOF, 5)
+
+/* Display start frame */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_SOF, 6)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_SOF, 7)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_SOF, 8)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_SOF, 9)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_SOF, 10)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_SOF, 11)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_SOF, 12)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_SOF, 13)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_SOF, 14)
+
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_PWM0_SOF, 16)
+
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_SOF, (-2))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_SOF, (-3))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_SOF, (-4))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_SOF, (-5))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_SOF, (-6))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_SOF, (-7))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_SOF, (-8))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_SOF, (-9))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_SOF, (-10))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_SOF, (-11))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_SOF, (-12))
+
+/* MDP frame done */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_EOF, 17)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_EOF, 18)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_EOF, 19)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_EOF, 20)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_EOF, 21)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_WRITE_EOF, 22)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_READ_EOF, 23)
+
+/* Display frame done */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_EOF, 24)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_EOF, 25)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_EOF, 26)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_EOF, 27)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_EOF, 28)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_EOF, 29)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_EOF, 30)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_EOF, 31)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_EOF, 32)
+
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DPI0_EOF, 34)
+
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_EOF, (-13))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_EOF, (-14))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_EOF, (-15))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_EOF, (-16))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_EOF, (-17))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_EOF, (-18))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_EOF, (-19))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_EOF, (-20))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_EOF, (-21))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_EOF, (-22))
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_EOF, (-23))
+
+/* Mutex frame done */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX0_STREAM_EOF, 35)/* DISPSYS */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX1_STREAM_EOF, 36)/* DISPSYS */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX2_STREAM_EOF, 37)/* DISPSYS */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX3_STREAM_EOF, 38)/* DISPSYS */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX4_STREAM_EOF, 39)/* DISPSYS, please refer to disp_hal.h */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX5_STREAM_EOF, 40)/* DpFramework */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX6_STREAM_EOF, 41)/* DpFramework */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX7_STREAM_EOF, 42)/* DpFramework */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX8_STREAM_EOF, 43)/* DpFramework */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX9_STREAM_EOF, 44)/* DpFramework via CMDQ_IOCTL_LOCK_MUTEX */
+
+/* Display underrun */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_UNDERRUN, 45)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_UNDERRUN, 46)
+
+/* Display TE */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_SOF, 47)
+
+/* ISP frame done */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_2_EOF, 65)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_1_EOF, 66)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_0_EOF, 67)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_1_EOF, 68)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_0_EOF, 69)
+
+/* ISP engine events */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_2_PASS1_DONE, 70)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_1_PASS1_DONE, 71)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM1_2_3_FULL, 72)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM0_FULL, 73)
+
+/* VENC frame done */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_EOF, 129)
+
+/* JPEG frame done */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_ENC_EOF, 130)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_DEC_EOF, 131)
+
+/* VENC engine events */
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_MB_DONE, 132)
+ DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_128BYTE_CNT_DONE, 133)
+
+/* Keep this at the end of HW events */
+ DECLARE_CMDQ_EVENT(CMDQ_MAX_HW_EVENT_COUNT, 270)
+
+/* SW Sync Tokens (Pre-defined) */
+ /* Config thread notify trigger thread */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CONFIG_DIRTY, 271)
+ /* Trigger thread notify config thread */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_STREAM_EOF, 272)
+ /* Block Trigger thread until the ESD check finishes. */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_ESD_EOF, 273)
+ /* check CABC setup finish */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CABC_EOF, 274)
+ /* Pass-2 notifies VENC frame is ready to be encoded */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_INPUT_READY, 280)
+ /* VENC notifies Pass-2 encode done so next frame may start */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_EOF, 281)
+
+/* SW Sync Tokens (User-defined) */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_0, 300)
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_1, 301)
+
+/* GPR access tokens (for HW register backup) */
+/* There are 15 32-bit GPR, 3 GPR form a set (64-bit for address, 32-bit for value) */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_0, 400)
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_1, 401)
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_2, 402)
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_3, 403)
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_4, 404)
+
+/* Resource lock event to control resource in GCE thread */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_RESOURCE_WROT0, 460)
+
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_MAX, (0x1FF)) /* event id is 9 bit */
+ DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_INVALID, (-1))
+
diff --git a/kernel-headers/cmdq_event_D1.h b/kernel-headers/cmdq_event_D1.h
new file mode 100644
index 0000000..3906077
--- /dev/null
+++ b/kernel-headers/cmdq_event_D1.h
@@ -0,0 +1,181 @@
+/* MDP start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_SOF, 0)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_SOF, 1)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_SOF, 2)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DSI_TE, 3)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_SOF, 4)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_SOF, 5)
+
+/* Display start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_SOF, 6)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_SOF, 7)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_SOF, 8)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_SOF, 9)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_SOF, 10)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_SOF, 11)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_SOF, 12)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_SOF, 13)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_SOF, 14)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_PWM0_SOF, 16)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_SOF, (-2))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_SOF, (-3))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_SOF, (-4))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_SOF, (-5))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_SOF, (-6))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_SOF, (-7))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_SOF, (-8))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_SOF, (-9))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_SOF, (-10))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_SOF, (-11))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_SOF, (-12))
+
+
+/* MDP frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_EOF, 17)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_EOF, 18)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_EOF, 19)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_EOF, 20)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_EOF, 21)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_WRITE_EOF, 22)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_READ_EOF, 23)
+
+/* Display frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_EOF, 24)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_EOF, 25)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_EOF, 26)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_EOF, 27)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_EOF, 28)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_EOF, 29)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_EOF, 30)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_EOF, 31)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_EOF, 32)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DPI0_EOF, 34)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_EOF, (-13))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_EOF, (-14))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_EOF, (-15))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_EOF, (-16))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_EOF, (-17))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_EOF, (-18))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_EOF, (-19))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_EOF, (-20))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_EOF, (-21))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_EOF, (-22))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_EOF, (-23))
+
+/* Mutex frame done */
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX0_STREAM_EOF, 35)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX1_STREAM_EOF, 36)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX2_STREAM_EOF, 37)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX3_STREAM_EOF, 38)
+/* DISPSYS, please refer to disp_hal.h */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX4_STREAM_EOF, 39)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX5_STREAM_EOF, 40)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX6_STREAM_EOF, 41)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX7_STREAM_EOF, 42)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX8_STREAM_EOF, 43)
+/* DpFramework via CMDQ_IOCTL_LOCK_MUTEX */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX9_STREAM_EOF, 44)
+
+/* Display underrun */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_UNDERRUN, 45)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_UNDERRUN, 46)
+
+/* Display TE */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_SOF, 47)
+
+/* ISP frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_2_EOF, 65)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_1_EOF, 66)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_0_EOF, 67)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_1_EOF, 68)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_0_EOF, 69)
+
+/* ISP engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_2_PASS1_DONE, 70)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_1_PASS1_DONE, 71)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM1_2_3_FULL, 72)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM0_FULL, 73)
+
+/* VENC frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_EOF, 129)
+
+/* JPEG frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_ENC_EOF, 130)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_DEC_EOF, 131)
+
+/* VENC engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_MB_DONE, 132)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_128BYTE_CNT_DONE, 133)
+
+/* Keep this at the end of HW events */
+DECLARE_CMDQ_EVENT(CMDQ_MAX_HW_EVENT_COUNT, 400)
+
+/* SW Sync Tokens (Pre-defined) */
+/* Config thread notify trigger thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CONFIG_DIRTY, 401)
+/* Trigger thread notify config thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_STREAM_EOF, 402)
+/* Block Trigger thread until the ESD check finishes. */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_ESD_EOF, 403)
+/* check CABC setup finish */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CABC_EOF, 404)
+/* Block Trigger thread until the path freeze finishes */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_FREEZE_EOF, 405)
+/* Pass-2 notifies VENC frame is ready to be encoded */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_INPUT_READY, 406)
+/* VENC notifies Pass-2 encode done so next frame may start */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_EOF, 407)
+
+/* Notify normal CMDQ there are some secure task done */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_SECURE_THR_EOF, 408)
+
+/* SW Sync Tokens (User-defined) */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_0, 410)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_1, 411)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_POLL_MONITOR, 412)
+
+/* Event for CMDQ to block executing command when append command
+* Plz sync CMDQ_SYNC_TOKEN_APPEND_THR(id) in cmdq_core source file. */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR0, 422)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR1, 423)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR2, 424)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR3, 425)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR4, 426)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR5, 427)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR6, 428)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR7, 429)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR8, 430)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR9, 431)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR10, 432)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR11, 433)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR12, 434)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR13, 435)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR14, 436)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR15, 437)
+
+/* GPR access tokens (for HW register backup) */
+/* There are 15 32-bit GPR, 3 GPR form a set (64-bit for address, 32-bit for value) */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_0, 450)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_1, 451)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_2, 452)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_3, 453)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_4, 454)
+
+/* Resource lock event to control resource in GCE thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_RESOURCE_WROT0, 460)
+
+/* event id is 9 bit */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_MAX, (0x1FF))
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_INVALID, (-1))
diff --git a/kernel-headers/cmdq_event_D2.h b/kernel-headers/cmdq_event_D2.h
new file mode 100644
index 0000000..18d2d13
--- /dev/null
+++ b/kernel-headers/cmdq_event_D2.h
@@ -0,0 +1,182 @@
+/* MDP start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_SOF, 0)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_SOF, 1)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_SOF, 2)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_SOF, 3)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_SOF, 4)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_SOF, 5)
+
+/* Display start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_SOF, 6)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_SOF, 8)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_SOF, 9)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_SOF, 10)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_SOF, 11)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_SOF, 12)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_SOF, 13)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_SOF, 14)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_SOF, 15)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_PWM0_SOF, 17)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_SOF, (-2))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_SOF, (-3))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_SOF, (-4))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_SOF, (-5))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_SOF, (-6))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_SOF, (-7))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_SOF, (-8))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_SOF, (-9))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_SOF, (-10))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_SOF, (-11))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_SOF, (-12))
+
+
+/* MDP frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_EOF, 18)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_EOF, 19)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_EOF, 20)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_EOF, 21)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_EOF, 22)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_WRITE_EOF, 23)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_READ_EOF, 24)
+
+/* Display frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_EOF, 25)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_EOF, 27)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_EOF, 28)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_EOF, 29)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_EOF, 30)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_EOF, 31)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_EOF, 32)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_EOF, 33)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_EOF, 34)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DPI0_EOF, 36)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DSI0_EOF, 37)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_EOF, (-13))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_EOF, (-14))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_EOF, (-15))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_EOF, (-16))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_EOF, (-17))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_EOF, (-18))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_EOF, (-19))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_EOF, (-20))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_EOF, (-21))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_EOF, (-22))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_EOF, (-23))
+
+/* Mutex frame done */
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX0_STREAM_EOF, 38)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX1_STREAM_EOF, 39)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX2_STREAM_EOF, 40)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX3_STREAM_EOF, 41)
+/* DISPSYS, please refer to disp_hal.h */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX4_STREAM_EOF, 42)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX5_STREAM_EOF, 43)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX6_STREAM_EOF, 44)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX7_STREAM_EOF, 45)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX8_STREAM_EOF, 46)
+/* DpFramework via CMDQ_IOCTL_LOCK_MUTEX */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX9_STREAM_EOF, 47)
+
+/* Display underrun */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_UNDERRUN, 48)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_UNDERRUN, 49)
+
+/* Display TE */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DSI_TE, 50)
+
+/* ISP frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_2_EOF, -24)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_1_EOF, 66)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_0_EOF, 67)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_1_EOF, -25)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_0_EOF, -26)
+
+/* ISP engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_2_PASS1_DONE, -27)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_1_PASS1_DONE, -28)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM1_2_3_FULL, -29)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM0_FULL, 73)
+
+/* VENC frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_EOF, -30)
+
+/* JPEG frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_ENC_EOF, -31)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_DEC_EOF, -32)
+
+/* VENC engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_MB_DONE, -33)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_128BYTE_CNT_DONE, -34)
+
+/* Keep this at the end of HW events */
+DECLARE_CMDQ_EVENT(CMDQ_MAX_HW_EVENT_COUNT, 400)
+
+/* SW Sync Tokens (Pre-defined) */
+/* Config thread notify trigger thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CONFIG_DIRTY, 401)
+/* Trigger thread notify config thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_STREAM_EOF, 402)
+/* Block Trigger thread until the ESD check finishes. */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_ESD_EOF, 403)
+/* check CABC setup finish */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CABC_EOF, 404)
+/* Block Trigger thread until the path freeze finishes */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_FREEZE_EOF, 405)
+/* Pass-2 notifies VENC frame is ready to be encoded */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_INPUT_READY, 406)
+/* VENC notifies Pass-2 encode done so next frame may start */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_EOF, 407)
+
+/* Notify normal CMDQ there are some secure task done */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_SECURE_THR_EOF, 408)
+
+/* SW Sync Tokens (User-defined) */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_0, 410)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_1, 411)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_POLL_MONITOR, 412)
+
+/* Event for CMDQ to block executing command when append command
+* Plz sync CMDQ_SYNC_TOKEN_APPEND_THR(id) in cmdq_core source file. */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR0, 422)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR1, 423)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR2, 424)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR3, 425)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR4, 426)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR5, 427)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR6, 428)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR7, 429)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR8, 430)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR9, 431)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR10, 432)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR11, 433)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR12, 434)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR13, 435)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR14, 436)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR15, 437)
+
+/* GPR access tokens (for HW register backup) */
+/* There are 15 32-bit GPR, 3 GPR form a set (64-bit for address, 32-bit for value) */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_0, 450)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_1, 451)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_2, 452)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_3, 453)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_4, 454)
+
+/* Resource lock event to control resource in GCE thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_RESOURCE_WROT0, 460)
+
+/* event id is 9 bit */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_MAX, (0x1FF))
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_INVALID, (-1))
diff --git a/kernel-headers/cmdq_event_D3.h b/kernel-headers/cmdq_event_D3.h
new file mode 100644
index 0000000..fdbbd87
--- /dev/null
+++ b/kernel-headers/cmdq_event_D3.h
@@ -0,0 +1,182 @@
+/* MDP start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_SOF, 0)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_SOF, 1)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_SOF, 2)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_SOF, 3)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_SOF, 4)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_SOF, 5)
+
+/* Display start frame */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_SOF, 6)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_SOF, 7)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_SOF, 8)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_SOF, 9)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_SOF, 10)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_SOF, 11)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_SOF, 12)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_SOF, 13)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_SOF, 14)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_SOF, 15)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_PWM0_SOF, 17)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OD_SOF, 18)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_SOF, (-3))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_SOF, (-4))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_SOF, (-5))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_SOF, (-6))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_SOF, (-7))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_SOF, (-8))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_SOF, (-9))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_SOF, (-10))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_SOF, (-11))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_SOF, (-12))
+
+
+/* MDP frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RDMA0_EOF, 19)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ0_EOF, 20)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_RSZ1_EOF, 21)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_TDSHP_EOF, 22)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WDMA_EOF, 23)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_WRITE_EOF, 24)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MDP_WROT_READ_EOF, 25)
+
+/* Display frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL0_EOF, 26)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OVL1_EOF, 27)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_EOF, 28)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_EOF, 29)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA0_EOF, 30)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_CCORR_EOF, 31)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_COLOR_EOF, 32)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_AAL_EOF, 33)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_GAMMA_EOF, 34)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DITHER_EOF, 35)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_OD_EOF, 37)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DPI0_EOF, 38)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_DSI0_EOF, 39)
+
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_UFOE_EOF, (-14))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_WDMA1_EOF, (-15))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L0_EOF, (-16))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L1_EOF, (-17))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L2_EOF, (-18))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA0_L3_EOF, (-19))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L0_EOF, (-20))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L1_EOF, (-21))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L2_EOF, (-22))
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_UFOD_RAMA1_L3_EOF, (-23))
+
+/* Mutex frame done */
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX0_STREAM_EOF, 40)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX1_STREAM_EOF, 41)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX2_STREAM_EOF, 42)
+/* DISPSYS */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX3_STREAM_EOF, 43)
+/* DISPSYS, please refer to disp_hal.h */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX4_STREAM_EOF, 44)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX5_STREAM_EOF, 45)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX6_STREAM_EOF, 46)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX7_STREAM_EOF, 47)
+/* DpFramework */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX8_STREAM_EOF, 48)
+/* DpFramework via CMDQ_IOCTL_LOCK_MUTEX */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_MUTEX9_STREAM_EOF, 49)
+
+/* Display underrun */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA0_UNDERRUN, 50)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DISP_RDMA1_UNDERRUN, 51)
+
+/* Display TE */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_DSI_TE, 52)
+
+/* ISP frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_2_EOF, 65)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_1_EOF, 66)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS2_0_EOF, 67)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_1_EOF, 68)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_PASS1_0_EOF, 69)
+
+/* ISP engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_2_PASS1_DONE, 70)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_CAMSV_1_PASS1_DONE, 71)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM1_2_3_FULL, 72)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_ISP_SENINF_CAM0_FULL, 73)
+
+/* VENC frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_EOF, 129)
+
+/* JPEG frame done */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_ENC_EOF, 130)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_JPEG_DEC_EOF, 131)
+
+/* VENC engine events */
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_MB_DONE, 132)
+DECLARE_CMDQ_EVENT(CMDQ_EVENT_VENC_128BYTE_CNT_DONE, 133)
+
+/* Keep this at the end of HW events */
+DECLARE_CMDQ_EVENT(CMDQ_MAX_HW_EVENT_COUNT, 400)
+
+/* SW Sync Tokens (Pre-defined) */
+/* Config thread notify trigger thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CONFIG_DIRTY, 401)
+/* Trigger thread notify config thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_STREAM_EOF, 402)
+/* Block Trigger thread until the ESD check finishes. */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_ESD_EOF, 403)
+/* check CABC setup finish */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_CABC_EOF, 404)
+/* Block Trigger thread until the path freeze finishes */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_FREEZE_EOF, 405)
+/* Pass-2 notifies VENC frame is ready to be encoded */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_INPUT_READY, 406)
+/* VENC notifies Pass-2 encode done so next frame may start */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_VENC_EOF, 407)
+
+/* Notify normal CMDQ there are some secure task done */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_SECURE_THR_EOF, 408)
+
+/* SW Sync Tokens (User-defined) */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_0, 410)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_USER_1, 411)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_POLL_MONITOR, 412)
+
+/* Event for CMDQ to block executing command when append command
+* Plz sync CMDQ_SYNC_TOKEN_APPEND_THR(id) in cmdq_core source file. */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR0, 422)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR1, 423)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR2, 424)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR3, 425)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR4, 426)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR5, 427)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR6, 428)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR7, 429)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR8, 430)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR9, 431)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR10, 432)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR11, 433)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR12, 434)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR13, 435)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR14, 436)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_APPEND_THR15, 437)
+
+/* GPR access tokens (for HW register backup) */
+/* There are 15 32-bit GPR, 3 GPR form a set (64-bit for address, 32-bit for value) */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_0, 450)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_1, 451)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_2, 452)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_3, 453)
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_GPR_SET_4, 454)
+
+/* Resource lock event to control resource in GCE thread */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_RESOURCE_WROT0, 460)
+
+/* event id is 9 bit */
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_MAX, (0x1FF))
+DECLARE_CMDQ_EVENT(CMDQ_SYNC_TOKEN_INVALID, (-1))
diff --git a/kernel-headers/cmdq_subsys.h b/kernel-headers/cmdq_subsys.h
new file mode 100644
index 0000000..f7b3bf4
--- /dev/null
+++ b/kernel-headers/cmdq_subsys.h
@@ -0,0 +1,28 @@
+/* msb id group reg-base-name */
+DECLARE_CMDQ_SUBSYS(0x1300, 0, MFG, G3D_CONFIG_BASE)
+DECLARE_CMDQ_SUBSYS(0x1400, 1, MMSYS, MMSYS_CONFIG_BASE)
+DECLARE_CMDQ_SUBSYS(0x1401, 2, MMSYS, DISP_DITHER_BASE)
+DECLARE_CMDQ_SUBSYS(0x1402, 3, MMSYS, NA)
+DECLARE_CMDQ_SUBSYS(0x1500, 4, CAM, IMGSYS_BASE)
+DECLARE_CMDQ_SUBSYS(0x1600, 5, VDEC, VDEC_GCON_BASE)
+DECLARE_CMDQ_SUBSYS(0x1700, 6, VENC, VENC_GCON_BASE)
+DECLARE_CMDQ_SUBSYS(0x1800, 7, PERISYS, CONN_PERIPHERALS)
+
+DECLARE_CMDQ_SUBSYS(0x1000, 8, TOP_AO_3, TOPCKGEN_BASE)
+DECLARE_CMDQ_SUBSYS(0x1001, 9, INFRA_AO, KP_BASE)
+DECLARE_CMDQ_SUBSYS(0x1002, 10, INFRA_AO, SCP_SRAM_BASE)
+DECLARE_CMDQ_SUBSYS(0x1003, 11, NA, NA)
+DECLARE_CMDQ_SUBSYS(0x1004, 12, NA, NA)
+DECLARE_CMDQ_SUBSYS(0x1005, 13, SCP, SCP)
+
+DECLARE_CMDQ_SUBSYS(0x1020, 14, INFRASYS, MCUCFG_BASE)
+DECLARE_CMDQ_SUBSYS(0x1021, 15, INFRASYS, GCPU_BASE)
+DECLARE_CMDQ_SUBSYS(0x1120, 16, PERISYS, USB0_BASE)
+DECLARE_CMDQ_SUBSYS(0x1121, 17, PERISYS, USB_SIF_BASE)
+DECLARE_CMDQ_SUBSYS(0x1122, 18, PERISYS, AUDIO_BASE)
+DECLARE_CMDQ_SUBSYS(0x1123, 19, PERISYS, MSDC0_BASE)
+DECLARE_CMDQ_SUBSYS(0x1124, 20, PERISYS, MSDC1_BASE)
+DECLARE_CMDQ_SUBSYS(0x1125, 21, PERISYS, MSDC2_BASE)
+DECLARE_CMDQ_SUBSYS(0x1126, 22, PERISYS, MSDC3_BASE)
+
+/*if id is over 99 check cmdq_platform.h: #define CMDQ_SPECIAL_SUBSYS_ADDR 99 */
diff --git a/kernel-headers/cmdq_subsys_common.h b/kernel-headers/cmdq_subsys_common.h
index 1872b80..1872b80 100644..100755
--- a/kernel-headers/cmdq_subsys_common.h
+++ b/kernel-headers/cmdq_subsys_common.h
diff --git a/kernel-headers/ddp_aal.h b/kernel-headers/ddp_aal.h
new file mode 100644
index 0000000..287bcbe
--- /dev/null
+++ b/kernel-headers/ddp_aal.h
@@ -0,0 +1,29 @@
+#ifndef __DDP_AAL_H__
+#define __DDP_AAL_H__
+
+#define AAL_HIST_BIN 33 /* [0..32] */
+#define AAL_DRE_POINT_NUM 29
+
+#define AAL_SERVICE_FORCE_UPDATE 0x1
+
+typedef struct {
+ /* DRE */
+ int dre_map_bypass;
+ /* CABC */
+ int cabc_gainlmt[33];
+} DISP_AAL_INITREG;
+
+typedef struct {
+ unsigned int serviceFlags;
+ int backlight;
+ unsigned int maxHist[AAL_HIST_BIN];
+} DISP_AAL_HIST;
+
+typedef struct {
+ int DREGainFltStatus[AAL_DRE_POINT_NUM];
+ int cabc_fltgain_force; /* 10-bit ; [0,1023] */
+ int cabc_gainlmt[33];
+ int FinalBacklight; /* 10-bit ; [0,1023] */
+} DISP_AAL_PARAM;
+
+#endif
diff --git a/kernel-headers/ddp_data_type.h b/kernel-headers/ddp_data_type.h
new file mode 100644
index 0000000..60486d1
--- /dev/null
+++ b/kernel-headers/ddp_data_type.h
@@ -0,0 +1,165 @@
+#ifndef __DP_DATA_TYPE_H__
+#define __DP_DATA_TYPE_H__
+
+#ifndef MAX
+ #define MAX(x, y) ((x) >= (y))? (x): (y)
+#endif // MAX
+
+#ifndef MIN
+ #define MIN(x, y) ((x) <= (y))? (x): (y)
+#endif // MIN
+
+//FMT GROUP , 0-RGB , 1-YUV , 2-Bayer raw , 3-compressed format
+#define DP_COLORFMT_PACK(VIDEO, PLANE, COPLANE, HFACTOR, VFACTOR, BITS, GROUP ,SWAP_ENABLE, UNIQUEID) \
+ ((VIDEO << 27) | \
+ (PLANE << 24) | \
+ (COPLANE << 22) | \
+ (HFACTOR << 20) | \
+ (VFACTOR << 18) | \
+ (BITS << 8) | \
+ (GROUP << 6) | \
+ (SWAP_ENABLE << 5) | \
+ (UNIQUEID << 0))
+
+#define DP_COLOR_GET_INTERLACED_MODE(color) ((0x10000000 & color) >> 28)
+#define DP_COLOR_GET_BLOCK_MODE(color) ((0x18000000 & color) >> 27)
+#define DP_COLOR_GET_PLANE_COUNT(color) ((0x07000000 & color) >> 24)
+#define DP_COLOR_IS_UV_COPLANE(color) ((0x00C00000 & color) >> 22)
+#define DP_COLOR_GET_H_SUBSAMPLE(color) ((0x00300000 & color) >> 20)
+#define DP_COLOR_GET_V_SUBSAMPLE(color) ((0x000C0000 & color) >> 18)
+#define DP_COLOR_BITS_PER_PIXEL(color) ((0x0003FF00 & color) >> 8)
+#define DP_COLOR_GET_COLOR_GROUP(color) ((0x000000C0 & color) >> 6)
+#define DP_COLOR_GET_SWAP_ENABLE(color) ((0x00000020 & color) >> 5)
+#define DP_COLOR_GET_UNIQUE_ID(color) ((0x0000001F & color) >> 0)
+#define DP_COLOR_GET_HW_FORMAT(color) ((0x0000001F & color) >> 0)
+
+typedef enum DP_COLOR_ENUM
+{
+ DP_COLOR_BAYER8 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 8, 2, 0, 20),
+ DP_COLOR_BAYER10 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 10, 2, 0, 21),
+ DP_COLOR_BAYER12 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 12, 2, 0, 22),
+ DP_COLOR_RGB565 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 16, 0, 0, 0),
+ DP_COLOR_BGR565 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 16, 0, 1, 0),
+ DP_COLOR_RGB888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 24, 0, 1, 1),
+ DP_COLOR_BGR888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 24, 0, 0, 1),
+ DP_COLOR_RGBX8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 0, 23),
+ DP_COLOR_BGRX8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 1, 23),
+ DP_COLOR_RGBA8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 1, 2),
+ DP_COLOR_BGRA8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 0, 2),
+ DP_COLOR_XRGB8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 0, 24),
+ DP_COLOR_XBGR8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 1, 24),
+ DP_COLOR_ARGB8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 1, 3),
+ DP_COLOR_ABGR8888 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 32, 0, 0, 3),
+ DP_COLOR_I420 = DP_COLORFMT_PACK(0, 3, 0, 1, 1, 8, 1, 0, 8),
+ DP_COLOR_YV12 = DP_COLORFMT_PACK(0, 3, 0, 1, 1, 8, 1, 1, 8),
+ DP_COLOR_NV12 = DP_COLORFMT_PACK(0, 2, 1, 1, 1, 8, 1, 0, 12),
+ DP_COLOR_NV21 = DP_COLORFMT_PACK(0, 2, 1, 1, 1, 8, 1, 1, 12),
+ DP_COLOR_I422 = DP_COLORFMT_PACK(0, 3, 0, 1, 0, 8, 1, 0, 9),
+ DP_COLOR_YV16 = DP_COLORFMT_PACK(0, 3, 0, 1, 0, 8, 1, 1, 9),
+ DP_COLOR_NV16 = DP_COLORFMT_PACK(0, 2, 1, 1, 0, 8, 1, 0, 13),
+ DP_COLOR_NV61 = DP_COLORFMT_PACK(0, 2, 1, 1, 0, 8, 1, 1, 13),
+ DP_COLOR_YUYV = DP_COLORFMT_PACK(0, 1, 0, 1, 0, 16, 1, 0, 5),
+ DP_COLOR_YVYU = DP_COLORFMT_PACK(0, 1, 0, 1, 0, 16, 1, 1, 5),
+ DP_COLOR_UYVY = DP_COLORFMT_PACK(0, 1, 0, 1, 0, 16, 1, 0, 4),
+ DP_COLOR_VYUY = DP_COLORFMT_PACK(0, 1, 0, 1, 0, 16, 1, 1, 4),
+ DP_COLOR_I444 = DP_COLORFMT_PACK(0, 3, 0, 0, 0, 8, 1, 0, 10),
+ DP_COLOR_YV24 = DP_COLORFMT_PACK(0, 3, 0, 0, 0, 8, 1, 1, 10),
+ DP_COLOR_IYU2 = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 24, 1, 0, 25),
+ DP_COLOR_NV24 = DP_COLORFMT_PACK(0, 2, 1, 0, 0, 8, 1, 0, 14),
+ DP_COLOR_NV42 = DP_COLORFMT_PACK(0, 2, 1, 0, 0, 8, 1, 1, 14),
+ DP_COLOR_GREY = DP_COLORFMT_PACK(0, 1, 0, 0, 0, 8, 1, 0, 7),
+
+
+ // Mediatek proprietary format
+ DP_COLOR_420_BLKP = DP_COLORFMT_PACK(1, 2, 1, 1, 1, 256, 1, 0 , 12),//Field mode
+ DP_COLOR_420_BLKI = DP_COLORFMT_PACK(3, 2, 1, 1, 1, 256, 1, 0 , 12),//Field mode + Video mode
+ DP_COLOR_422_BLKP = DP_COLORFMT_PACK(1, 1, 0, 1, 0, 512, 1, 0 , 4), //Field mode
+} DP_COLOR_ENUM;
+
+
+// Legacy for 6589 compatible
+typedef DP_COLOR_ENUM DpColorFormat;
+
+#define eYUV_420_3P DP_COLOR_I420
+#define eYUV_420_2P_YUYV DP_COLOR_YUYV
+#define eYUV_420_2P_UYVY DP_COLOR_UYVY
+#define eYUV_420_2P_YVYU DP_COLOR_YVYU
+#define eYUV_420_2P_VYUY DP_COLOR_VYUY
+#define eYUV_420_2P_ISP_BLK DP_COLOR_420_BLKP
+#define eYUV_420_2P_VDO_BLK DP_COLOR_420_BLKI
+#define eYUV_422_3P DP_COLOR_I422
+#define eYUV_422_2P DP_COLOR_NV16
+#define eYUV_422_I DP_COLOR_YUYV
+#define eYUV_422_I_BLK DP_COLOR_422_BLKP
+#define eYUV_444_3P DP_COLOR_I444
+#define eYUV_444_2P DP_COLOR_NV24
+#define eYUV_444_1P DP_COLOR_YUV444
+#define eBAYER8 DP_COLOR_BAYER8
+#define eBAYER10 DP_COLOR_BAYER10
+#define eBAYER12 DP_COLOR_BAYER12
+#define eRGB565 DP_COLOR_RGB565
+#define eBGR565 DP_COLOR_BGR565
+#define eRGB888 DP_COLOR_RGB888
+#define eBGR888 DP_COLOR_BGR888
+#define eARGB8888 DP_COLOR_ARGB8888
+#define eABGR8888 DP_COLOR_ABGR8888
+#define eRGBA8888 DP_COLOR_RGBA8888
+#define eBGRA8888 DP_COLOR_BGRA8888
+#define eXRGB8888 DP_COLOR_XRGB8888
+#define eXBGR8888 DP_COLOR_XBGR8888
+#define eRGBX8888 DP_COLOR_RGBX8888
+#define eBGRX8888 DP_COLOR_BGRX8888
+#define ePARGB8888 DP_COLOR_PARGB8888
+#define eXARGB8888 DP_COLOR_XARGB8888
+#define ePABGR8888 DP_COLOR_PABGR8888
+#define eXABGR8888 DP_COLOR_XABGR8888
+#define eGREY DP_COLOR_GREY
+#define eI420 DP_COLOR_I420
+#define eYV12 DP_COLOR_YV12
+#define eIYU2 DP_COLOR_IYU2
+
+
+#define eYV21 DP_COLOR_I420
+#define eNV12_BLK DP_COLOR_420_BLKP
+#define eNV12_BLK_FCM DP_COLOR_420_BLKI
+#define eYUV_420_3P_YVU DP_COLOR_YV12
+
+#define eNV12_BP DP_COLOR_420_BLKP
+#define eNV12_BI DP_COLOR_420_BLKI
+#define eNV12 DP_COLOR_NV12
+#define eNV21 DP_COLOR_NV21
+#define eI422 DP_COLOR_I422
+#define eYV16 DP_COLOR_YV16
+#define eNV16 DP_COLOR_NV16
+#define eNV61 DP_COLOR_NV61
+#define eUYVY DP_COLOR_UYVY
+#define eVYUY DP_COLOR_VYUY
+#define eYUYV DP_COLOR_YUYV
+#define eYVYU DP_COLOR_YVYU
+#define eUYVY_BP DP_COLOR_422_BLKP
+#define eI444 DP_COLOR_I444
+#define eNV24 DP_COLOR_NV24
+#define eNV42 DP_COLOR_NV42
+#define eYUY2 DP_COLOR_YUYV
+#define eY800 DP_COLOR_GREY
+//#define eIYU2
+#define eMTKYUV DP_COLOR_422_BLKP
+
+#define eCompactRaw1 DP_COLOR_BAYER10
+
+
+enum DpInterlaceFormat
+{
+ eInterlace_None,
+ eTop_Field,
+ eBottom_Field
+};
+
+enum DpSecure
+{
+ DP_SECURE_NONE = 0,
+ DP_SECURE = 1
+};
+
+
+#endif // __DP_DATA_TYPE_H__
diff --git a/kernel-headers/ddp_drv.h b/kernel-headers/ddp_drv.h
new file mode 100644
index 0000000..284658e
--- /dev/null
+++ b/kernel-headers/ddp_drv.h
@@ -0,0 +1,332 @@
+
+#ifndef __DDP_DRV_H__
+#define __DDP_DRV_H__
+#include <linux/ioctl.h>
+#include <sys/types.h>
+#include "ddp_hal.h"
+#include "ddp_aal.h"
+#include "ddp_gamma.h"
+#include "disp_event.h"
+
+typedef struct
+{
+ unsigned int reg;
+ unsigned int val;
+ unsigned int mask;
+} DISP_WRITE_REG;
+
+typedef struct
+{
+ unsigned int reg;
+ unsigned int val;
+ unsigned int mask;
+} DISP_READ_REG;
+
+#if 0
+typedef struct
+{
+ DISP_MODULE_ENUM module;
+ unsigned int timeout_ms; //timeout, unit is ms
+} disp_wait_irq_struct;
+#endif
+
+typedef struct DISP_EXEC_COMMAND
+{
+ int taskID;
+ uint32_t scenario;
+ uint32_t priority;
+ uint32_t engineFlag;
+ uint32_t *pFrameBaseSW;
+ uint32_t *pTileBaseSW;
+ uint32_t blockSize;
+} DISP_EXEC_COMMAND;
+
+typedef struct
+{
+ int layer;
+
+ unsigned long addr;
+ unsigned int fmt;
+
+ int x;
+ int y;
+ int w;
+ int h; // clip region
+ int pitch;
+} DISP_OVL_INFO;
+
+//PQ
+#define COLOR_TUNING_INDEX 19
+#define THSHP_TUNING_INDEX 12
+#define THSHP_PARAM_MAX 83
+#define PARTIAL_Y_INDEX 10
+
+#define GLOBAL_SAT_SIZE 10
+#define CONTRAST_SIZE 10
+#define BRIGHTNESS_SIZE 10
+#define PARTIAL_Y_SIZE 28
+#define PQ_HUE_ADJ_PHASE_CNT 4
+#define PQ_SAT_ADJ_PHASE_CNT 4
+#define PQ_PARTIALS_CONTROL 5
+#define PURP_TONE_SIZE 3
+#define SKIN_TONE_SIZE 8 //(-6)
+#define GRASS_TONE_SIZE 6 //(-2)
+#define SKY_TONE_SIZE 3
+#define CCORR_COEF_CNT 4 /* ccorr feature */
+
+typedef struct {
+ unsigned int u4SHPGain; // 0 : min , 9 : max.
+ unsigned int u4SatGain; // 0 : min , 9 : max.
+ unsigned int u4PartialY; /* 0 : min , 9 : max. */
+ unsigned int u4HueAdj[PQ_HUE_ADJ_PHASE_CNT];
+ unsigned int u4SatAdj[PQ_SAT_ADJ_PHASE_CNT];
+ unsigned int u4Contrast; // 0 : min , 9 : max.
+ unsigned int u4Brightness; // 0 : min , 9 : max.
+ unsigned int u4Ccorr; /* 0 : min , 3 : max. ccorr feature */
+} DISP_PQ_PARAM;
+
+typedef struct {
+ int split_en;
+ int start_x;
+ int start_y;
+ int end_x;
+ int end_y;
+} DISP_PQ_WIN_PARAM;
+
+typedef struct {
+ int image;
+ int video;
+ int camera;
+} DISP_PQ_MAPPING_PARAM;
+
+typedef struct {
+ unsigned int en;
+ unsigned int pos_x;
+ unsigned int pos_y;
+} MDP_COLOR_CAP;
+
+typedef struct {
+ unsigned int TDS_GAIN_MID;
+ unsigned int TDS_GAIN_HIGH;
+ unsigned int TDS_COR_GAIN;
+ unsigned int TDS_COR_THR;
+ unsigned int TDS_COR_ZERO;
+ unsigned int TDS_GAIN;
+ unsigned int TDS_COR_VALUE;
+} MDP_TDSHP_REG;
+
+typedef struct{
+
+ unsigned short GLOBAL_SAT [GLOBAL_SAT_SIZE];
+ unsigned short CONTRAST [CONTRAST_SIZE];
+ unsigned short BRIGHTNESS [BRIGHTNESS_SIZE];
+ unsigned char PARTIAL_Y [PARTIAL_Y_INDEX][PARTIAL_Y_SIZE];
+ unsigned char PURP_TONE_S [COLOR_TUNING_INDEX][PQ_PARTIALS_CONTROL][PURP_TONE_SIZE];
+ unsigned char SKIN_TONE_S [COLOR_TUNING_INDEX][PQ_PARTIALS_CONTROL][SKIN_TONE_SIZE];
+ unsigned char GRASS_TONE_S [COLOR_TUNING_INDEX][PQ_PARTIALS_CONTROL][GRASS_TONE_SIZE];
+ unsigned char SKY_TONE_S [COLOR_TUNING_INDEX][PQ_PARTIALS_CONTROL][SKY_TONE_SIZE];
+ unsigned char PURP_TONE_H [COLOR_TUNING_INDEX][PURP_TONE_SIZE];
+ unsigned char SKIN_TONE_H [COLOR_TUNING_INDEX][SKIN_TONE_SIZE];
+ unsigned char GRASS_TONE_H [COLOR_TUNING_INDEX][GRASS_TONE_SIZE];
+ unsigned char SKY_TONE_H [COLOR_TUNING_INDEX][SKY_TONE_SIZE];
+ unsigned int CCORR_COEF [CCORR_COEF_CNT][3][3];
+
+} DISPLAY_PQ_T;
+
+typedef struct{
+
+ unsigned int entry[THSHP_TUNING_INDEX][THSHP_PARAM_MAX];
+
+} DISPLAY_TDSHP_T;
+
+typedef enum {
+ DS_en = 0,
+ iUpSlope,
+ iUpThreshold,
+ iDownSlope,
+ iDownThreshold,
+ iISO_en,
+ iISO_thr1,
+ iISO_thr0,
+ iISO_thr3,
+ iISO_thr2,
+ iISO_IIR_alpha,
+ iCorZero_clip2,
+ iCorZero_clip1,
+ iCorZero_clip0,
+ iCorThr_clip2,
+ iCorThr_clip1,
+ iCorThr_clip0,
+ iCorGain_clip2,
+ iCorGain_clip1,
+ iCorGain_clip0,
+ iGain_clip2,
+ iGain_clip1,
+ iGain_clip0,
+ PQ_DS_INDEX_MAX
+} PQ_DS_index_t;
+
+
+typedef struct {
+
+ int param[PQ_DS_INDEX_MAX];
+
+} DISP_PQ_DS_PARAM;
+
+typedef enum {
+ BlackEffectEnable = 0,
+ WhiteEffectEnable,
+ StrongBlackEffect,
+ StrongWhiteEffect,
+ AdaptiveBlackEffect,
+ AdaptiveWhiteEffect,
+ ScenceChangeOnceEn,
+ ScenceChangeControlEn,
+ ScenceChangeControl,
+ ScenceChangeTh1,
+ ScenceChangeTh2,
+ ScenceChangeTh3,
+ ContentSmooth1,
+ ContentSmooth2,
+ ContentSmooth3,
+ MiddleRegionGain1,
+ MiddleRegionGain2,
+ BlackRegionGain1,
+ BlackRegionGain2,
+ BlackRegionRange,
+ BlackEffectLevel,
+ BlackEffectParam1,
+ BlackEffectParam2,
+ BlackEffectParam3,
+ BlackEffectParam4,
+ WhiteRegionGain1,
+ WhiteRegionGain2,
+ WhiteRegionRange,
+ WhiteEffectLevel,
+ WhiteEffectParam1,
+ WhiteEffectParam2,
+ WhiteEffectParam3,
+ WhiteEffectParam4,
+ ContrastAdjust1,
+ ContrastAdjust2,
+ DCChangeSpeedLevel,
+ ProtectRegionEffect,
+ DCChangeSpeedLevel2,
+ ProtectRegionWeight,
+ DCEnable
+} PQ_DC_index_t;
+
+typedef struct {
+
+ int param[40];
+
+} DISP_PQ_DC_PARAM;
+
+
+// OD
+typedef struct {
+ unsigned int size;
+ unsigned int type;
+ unsigned int ret;
+ unsigned int param0;
+ unsigned int param1;
+ unsigned int param2;
+ unsigned int param3;
+} DISP_OD_CMD;
+
+typedef enum
+{
+ DISP_INTERLACE_FORMAT_NONE,
+ DISP_INTERLACE_FORMAT_TOP_FIELD,
+ DISP_INTERLACE_FORMAT_BOTTOM_FIELD
+}DISP_INTERLACE_FORMAT;
+
+#define DISP_IOCTL_MAGIC 'x'
+
+#define DISP_IOCTL_WRITE_REG _IOW (DISP_IOCTL_MAGIC, 1, DISP_WRITE_REG) // also defined in atci_pq_cmd.h
+#define DISP_IOCTL_READ_REG _IOWR (DISP_IOCTL_MAGIC, 2, DISP_READ_REG) // also defined in atci_pq_cmd.h
+//#define DISP_IOCTL_WAIT_IRQ _IOR (DISP_IOCTL_MAGIC, 3, disp_wait_irq_struct)
+#define DISP_IOCTL_DUMP_REG _IOR (DISP_IOCTL_MAGIC, 4, int)
+#define DISP_IOCTL_LOCK_THREAD _IOR (DISP_IOCTL_MAGIC, 5, int)
+#define DISP_IOCTL_UNLOCK_THREAD _IOR (DISP_IOCTL_MAGIC, 6, int)
+#define DISP_IOCTL_MARK_CMQ _IOR (DISP_IOCTL_MAGIC, 7, int)
+#define DISP_IOCTL_WAIT_CMQ _IOR (DISP_IOCTL_MAGIC, 8, int)
+#define DISP_IOCTL_SYNC_REG _IOR (DISP_IOCTL_MAGIC, 9, int)
+
+#define DISP_IOCTL_LOCK_MUTEX _IOW (DISP_IOCTL_MAGIC, 20, int)
+#define DISP_IOCTL_UNLOCK_MUTEX _IOR (DISP_IOCTL_MAGIC, 21, int)
+
+#define DISP_IOCTL_LOCK_RESOURCE _IOW (DISP_IOCTL_MAGIC, 25, int)
+#define DISP_IOCTL_UNLOCK_RESOURCE _IOR (DISP_IOCTL_MAGIC, 26, int)
+
+#define DISP_IOCTL_SET_INTR _IOR (DISP_IOCTL_MAGIC, 10, int)
+#define DISP_IOCTL_TEST_PATH _IOR (DISP_IOCTL_MAGIC, 11, int)
+
+#define DISP_IOCTL_CLOCK_ON _IOR (DISP_IOCTL_MAGIC, 12, int)
+#define DISP_IOCTL_CLOCK_OFF _IOR (DISP_IOCTL_MAGIC, 13, int)
+
+#define DISP_IOCTL_RUN_DPF _IOW (DISP_IOCTL_MAGIC, 30, int)
+#define DISP_IOCTL_CHECK_OVL _IOR (DISP_IOCTL_MAGIC, 31, int)
+#define DISP_IOCTL_GET_OVL _IOWR (DISP_IOCTL_MAGIC, 32, DISP_OVL_INFO)
+
+#define DISP_IOCTL_EXEC_COMMAND _IOW (DISP_IOCTL_MAGIC, 33, DISP_EXEC_COMMAND)
+#define DISP_IOCTL_RESOURCE_REQUIRE _IOR (DISP_IOCTL_MAGIC, 34, int)
+
+//Add for AAL control - S
+//0 : disable AAL event, 1 : enable AAL event
+#define DISP_IOCTL_AAL_EVENTCTL _IOW (DISP_IOCTL_MAGIC, 15 , int)
+//Get AAL statistics data.
+#define DISP_IOCTL_AAL_GET_HIST _IOR (DISP_IOCTL_MAGIC, 16 , DISP_AAL_HIST)
+//Update AAL setting
+#define DISP_IOCTL_AAL_SET_PARAM _IOW (DISP_IOCTL_MAGIC, 17 , DISP_AAL_PARAM)
+#define DISP_IOCTL_AAL_INIT_REG _IOW (DISP_IOCTL_MAGIC, 18 , DISP_AAL_INITREG)
+#define DISP_IOCTL_SET_GAMMALUT _IOW (DISP_IOCTL_MAGIC, 23 , DISP_GAMMA_LUT_T)
+#define DISP_IOCTL_SET_CCORR _IOW (DISP_IOCTL_MAGIC, 24 , DISP_CCORR_COEF_T)
+
+
+//Add for AAL control - E
+/*-----------------------------------------------------------------------------
+ DDP Kernel Mode API (for Kernel Trap)
+ -----------------------------------------------------------------------------*/
+//DDPK Bitblit
+//#define DISP_IOCTL_G_WAIT_REQUEST _IOR (DISP_IOCTL_MAGIC , 40 , DDPIOCTL_DdpkBitbltConfig)
+//#define DISP_IOCTL_T_INFORM_DONE _IOW (DISP_IOCTL_MAGIC , 41 , DDPIOCTL_DdpkBitbltInformDone)
+
+#define DISP_IOCTL_SET_CLKON _IOW (DISP_IOCTL_MAGIC, 50 , DISP_MODULE_ENUM)
+#define DISP_IOCTL_SET_CLKOFF _IOW (DISP_IOCTL_MAGIC, 51 , DISP_MODULE_ENUM)
+
+#define DISP_IOCTL_MUTEX_CONTROL _IOW (DISP_IOCTL_MAGIC, 55 , int) // also defined in atci_pq_cmd.h
+#define DISP_IOCTL_GET_LCMINDEX _IOR (DISP_IOCTL_MAGIC, 56 , int)
+
+// PQ setting
+#define DISP_IOCTL_SET_PQPARAM _IOW (DISP_IOCTL_MAGIC, 60 , DISP_PQ_PARAM)
+#define DISP_IOCTL_GET_PQPARAM _IOR (DISP_IOCTL_MAGIC, 61 , DISP_PQ_PARAM)
+#define DISP_IOCTL_GET_PQINDEX _IOR (DISP_IOCTL_MAGIC, 63, DISPLAY_PQ_T)
+#define DISP_IOCTL_SET_PQINDEX _IOW (DISP_IOCTL_MAGIC, 64 , DISPLAY_PQ_T)
+#define DISP_IOCTL_SET_TDSHPINDEX _IOW (DISP_IOCTL_MAGIC, 65 , DISPLAY_TDSHP_T)
+#define DISP_IOCTL_GET_TDSHPINDEX _IOR (DISP_IOCTL_MAGIC, 66 , DISPLAY_TDSHP_T)
+#define DISP_IOCTL_SET_PQ_CAM_PARAM _IOW (DISP_IOCTL_MAGIC, 67 , DISP_PQ_PARAM)
+#define DISP_IOCTL_GET_PQ_CAM_PARAM _IOR (DISP_IOCTL_MAGIC, 68 , DISP_PQ_PARAM)
+#define DISP_IOCTL_SET_PQ_GAL_PARAM _IOW (DISP_IOCTL_MAGIC, 69 , DISP_PQ_PARAM)
+#define DISP_IOCTL_GET_PQ_GAL_PARAM _IOR (DISP_IOCTL_MAGIC, 70 , DISP_PQ_PARAM)
+
+#define DISP_IOCTL_PQ_SET_BYPASS_COLOR _IOW (DISP_IOCTL_MAGIC, 71 , int)
+#define DISP_IOCTL_PQ_SET_WINDOW _IOW (DISP_IOCTL_MAGIC, 72 , DISP_PQ_WIN_PARAM)
+#define DISP_IOCTL_PQ_GET_TDSHP_FLAG _IOR (DISP_IOCTL_MAGIC, 73 , int)
+#define DISP_IOCTL_PQ_SET_TDSHP_FLAG _IOW (DISP_IOCTL_MAGIC, 74 , int)
+#define DISP_IOCTL_PQ_GET_DC_PARAM _IOR (DISP_IOCTL_MAGIC, 75, DISP_PQ_DC_PARAM)
+#define DISP_IOCTL_PQ_SET_DC_PARAM _IOW (DISP_IOCTL_MAGIC, 76, DISP_PQ_DC_PARAM)
+#define DISP_IOCTL_WRITE_SW_REG _IOW (DISP_IOCTL_MAGIC, 77, DISP_WRITE_REG) // also defined in atci_pq_cmd.h
+#define DISP_IOCTL_READ_SW_REG _IOWR (DISP_IOCTL_MAGIC, 78, DISP_READ_REG) // also defined in atci_pq_cmd.h
+
+// OD
+#define DISP_IOCTL_OD_CTL _IOWR (DISP_IOCTL_MAGIC, 80 , DISP_OD_CMD)
+
+// OVL
+#define DISP_IOCTL_OVL_ENABLE_CASCADE _IOW (DISP_IOCTL_MAGIC, 90 , int)
+#define DISP_IOCTL_OVL_DISABLE_CASCADE _IOW (DISP_IOCTL_MAGIC, 91 , int)
+// PQ setting
+#define DISP_IOCTL_PQ_GET_DS_PARAM _IOR (DISP_IOCTL_MAGIC, 100, DISP_PQ_DS_PARAM)
+#define DISP_IOCTL_PQ_GET_MDP_COLOR_CAP _IOR (DISP_IOCTL_MAGIC, 101, MDP_COLOR_CAP)
+#define DISP_IOCTL_PQ_GET_MDP_TDSHP_REG _IOR (DISP_IOCTL_MAGIC, 102, MDP_TDSHP_REG)
+#endif
diff --git a/kernel-headers/ddp_gamma.h b/kernel-headers/ddp_gamma.h
new file mode 100644
index 0000000..484bf27
--- /dev/null
+++ b/kernel-headers/ddp_gamma.h
@@ -0,0 +1,35 @@
+#ifndef __DDP_GAMMA_H__
+#define __DDP_GAMMA_H__
+
+//#include <asm/uaccess.h>
+
+
+typedef enum {
+ DISP_GAMMA0 = 0,
+ DISP_GAMMA_TOTAL
+} disp_gamma_id_t;
+
+
+typedef unsigned int gamma_entry;
+#define GAMMA_ENTRY(r10, g10, b10) (((r10) << 20) | ((g10) << 10) | (b10))
+
+#define DISP_GAMMA_LUT_SIZE 512
+
+typedef struct {
+ disp_gamma_id_t hw_id;
+ gamma_entry lut[DISP_GAMMA_LUT_SIZE];
+} DISP_GAMMA_LUT_T;
+
+
+typedef enum {
+ DISP_CCORR0 = 0,
+ DISP_CCORR_TOTAL
+} disp_ccorr_id_t;
+
+typedef struct {
+ disp_ccorr_id_t hw_id;
+ unsigned int coef[3][3];
+} DISP_CCORR_COEF_T;
+
+#endif
+
diff --git a/kernel-headers/ddp_hal.h b/kernel-headers/ddp_hal.h
new file mode 100644
index 0000000..ebb3ceb
--- /dev/null
+++ b/kernel-headers/ddp_hal.h
@@ -0,0 +1,125 @@
+#ifndef _H_DDP_HAL_
+#define _H_DDP_HAL_
+
+/* DISP Mutex */
+#define DISP_MUTEX_TOTAL (10)
+#define DISP_MUTEX_DDP_FIRST (0)
+#define DISP_MUTEX_DDP_LAST (4)
+#define DISP_MUTEX_DDP_COUNT (5)
+#define DISP_MUTEX_MDP_FIRST (5)
+#define DISP_MUTEX_MDP_COUNT (5)
+
+/* DISP MODULE */
+typedef enum
+{
+ DISP_MODULE_OVL0 ,
+ DISP_MODULE_OVL1 ,
+ DISP_MODULE_RDMA0 ,
+ DISP_MODULE_RDMA1 ,
+ DISP_MODULE_WDMA0 ,
+ DISP_MODULE_COLOR0,
+ DISP_MODULE_CCORR ,
+ DISP_MODULE_AAL ,
+ DISP_MODULE_GAMMA ,
+ DISP_MODULE_DITHER,
+ DISP_MODULE_UFOE , //10
+ DISP_MODULE_PWM0 ,
+ DISP_MODULE_WDMA1 ,
+ DISP_MODULE_DSI0 ,
+ DISP_MODULE_DPI ,
+ DISP_MODULE_SMI,
+ DISP_MODULE_CONFIG,
+ DISP_MODULE_CMDQ,
+ DISP_MODULE_MUTEX,
+
+ DISP_MODULE_COLOR1,
+ DISP_MODULE_RDMA2,
+ DISP_MODULE_PWM1,
+ DISP_MODULE_OD,
+ DISP_MODULE_MERGE,
+ DISP_MODULE_SPLIT0,
+ DISP_MODULE_SPLIT1,
+ DISP_MODULE_DSI1,
+ DISP_MODULE_DSIDUAL,
+
+ DISP_MODULE_SMI_LARB0 ,
+ DISP_MODULE_SMI_COMMON,
+ DISP_MODULE_UNKNOWN, //20
+ DISP_MODULE_NUM
+} DISP_MODULE_ENUM;
+
+typedef enum
+{
+ DISP_REG_OVL0 ,
+ DISP_REG_OVL1 ,
+ DISP_REG_RDMA0 ,
+ DISP_REG_RDMA1 ,
+ DISP_REG_WDMA0 ,
+ DISP_REG_COLOR ,
+ DISP_REG_CCORR ,
+ DISP_REG_AAL ,
+ DISP_REG_GAMMA ,
+ DISP_REG_DITHER ,
+ DISP_REG_UFOE ,
+ DISP_REG_PWM ,
+ DISP_REG_WDMA1 ,
+ DISP_REG_MUTEX ,
+ DISP_REG_DSI0 ,
+ DISP_REG_DPI0 ,
+ DISP_REG_CONFIG ,
+ DISP_REG_SMI_LARB0 ,
+ DISP_REG_SMI_COMMON,
+ DISP_REG_MIPI ,
+ DISP_REG_CONFIG2 ,
+ DISP_REG_CONFIG3 ,
+ DISP_REG_IO_DRIVING,
+ DISP_TVDPLL_CFG6,
+ DISP_TVDPLL_CON0,
+ DISP_TVDPLL_CON1,
+ DISP_REG_NUM
+} DISP_REG_ENUM;
+
+typedef enum {
+ SOF_SINGLE = 0,
+ SOF_DSI0,
+ SOF_DSI1,
+ SOF_DPI0,
+} MUTEX_SOF;
+
+enum OVL_LAYER_SOURCE {
+ OVL_LAYER_SOURCE_MEM = 0,
+ OVL_LAYER_SOURCE_RESERVED = 1,
+ OVL_LAYER_SOURCE_SCL = 2,
+ OVL_LAYER_SOURCE_PQ = 3,
+};
+
+enum OVL_LAYER_SECURE_MODE {
+ OVL_LAYER_NORMAL_BUFFER = 0,
+ OVL_LAYER_SECURE_BUFFER = 1,
+ OVL_LAYER_PROTECTED_BUFFER = 2
+};
+
+typedef enum
+{
+ CMDQ_DISABLE = 0,
+ CMDQ_ENABLE
+}CMDQ_SWITCH;
+
+typedef enum
+{
+ CMDQ_BEFORE_STREAM_SOF,
+ CMDQ_WAIT_STREAM_EOF_EVENT,
+ CMDQ_CHECK_IDLE_AFTER_STREAM_EOF,
+ CMDQ_AFTER_STREAM_EOF,
+ CMDQ_ESD_CHECK_READ,
+ CMDQ_ESD_CHECK_CMP,
+ CMDQ_ESD_ALLC_SLOT,
+ CMDQ_ESD_FREE_SLOT,
+ CMDQ_STOP_VDO_MODE,
+ CMDQ_START_VDO_MODE,
+ CMDQ_DSI_RESET
+}CMDQ_STATE;
+
+
+
+#endif
diff --git a/kernel-headers/ddp_ovl.h b/kernel-headers/ddp_ovl.h
new file mode 100644
index 0000000..01f0f44
--- /dev/null
+++ b/kernel-headers/ddp_ovl.h
@@ -0,0 +1,17 @@
+#ifndef _DDP_OVL_H_
+#define _DDP_OVL_H_
+#include "ddp_hal.h"
+#include "ddp_data_type.h"
+
+#define OVL_CASCADE_SUPPORT
+#define OVL_MAX_WIDTH (4095)
+#define OVL_MAX_HEIGHT (4095)
+#ifdef OVL_CASCADE_SUPPORT
+#define OVL_LAYER_NUM (8)
+#else
+#define OVL_LAYER_NUM (4)
+#endif
+
+#define OVL_LAYER_NUM_PER_OVL 4
+
+#endif
diff --git a/kernel-headers/disp_event.h b/kernel-headers/disp_event.h
new file mode 100644
index 0000000..e97ecf8
--- /dev/null
+++ b/kernel-headers/disp_event.h
@@ -0,0 +1,19 @@
+#ifndef __DISP_EVENT_H__
+#define __DISP_EVENT_H__
+
+typedef enum{
+ DISP_PATH_EVENT_FRAME_DONE = 0,
+ DISP_PATH_EVENT_FRAME_START,
+ DISP_PATH_EVENT_FRAME_REG_UPDATE,
+ DISP_PATH_EVENT_FRAME_TARGET_LINE,
+ DISP_PATH_EVENT_FRAME_COMPLETE,
+ DISP_PATH_EVENT_FRAME_STOP,
+ DISP_PATH_EVENT_IF_CMD_DONE,
+ DISP_PATH_EVENT_IF_VSYNC,
+ DISP_PATH_EVENT_TRIGGER,
+ DISP_PATH_EVENT_AAL_OUT_END_FRAME,
+ DISP_PATH_EVENT_NUM,
+ DISP_PATH_EVENT_NONE = 0xff,
+}DISP_PATH_EVENT;
+
+#endif
diff --git a/kernel-headers/errata.h b/kernel-headers/errata.h
new file mode 100644
index 0000000..61998a4
--- /dev/null
+++ b/kernel-headers/errata.h
@@ -0,0 +1,41 @@
+#ifndef ERRATA_H
+#define ERRATA_H
+
+#define SAFE_READ(x) \
+ __asm__ __volatile__( \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ ); \
+ x; \
+ __asm__ __volatile__( \
+ "nop\n" \
+ );
+
+#define SAFE_HEAD \
+ { \
+ __asm__ __volatile__( \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ "nop\n" \
+ ); \
+
+#define SAFE_TAIL \
+ __asm__ __volatile__( \
+ "nop\n" \
+ ); \
+ }
+
+#endif
diff --git a/kernel-headers/hevcd_if.h b/kernel-headers/hevcd_if.h
index 871e45a..871e45a 100644..100755
--- a/kernel-headers/hevcd_if.h
+++ b/kernel-headers/hevcd_if.h
diff --git a/kernel-headers/jpeg_drv.h b/kernel-headers/jpeg_drv.h
new file mode 100644
index 0000000..5699235
--- /dev/null
+++ b/kernel-headers/jpeg_drv.h
@@ -0,0 +1,677 @@
+#include <linux/ioctl.h>
+
+#ifndef __JPEG_DRV_H__
+#define __JPEG_DRV_H__
+
+
+
+#define TO_CEIL(x,a) ( ((x) + ((a)-1)) & ~((a)-1) )
+#define TO_FLOOR(x,a) ( (x) & ~((a)-1) )
+#define TO_MASK(x,a) ( (x) & (a) )
+
+#define DUNUM_MAPPING(value) (((value)-1)&0x3)
+
+
+
+typedef struct
+{
+ long timeout;
+ unsigned int *result;
+
+}JPEG_DEC_DRV_OUT;
+
+
+//===========================================================================================
+
+
+
+
+#define MAX_JPEG_COMPONENT 4
+#define MAX_NUM_SCAN 32
+
+#define D_MAX_JPEG_HW_COMP 3
+//#define D_MAX_JPEG_HUFF_TBL 4
+#define D_MAX_JPEG_QTBL 4
+#define D_MAX_JPEG_HW_QTBL 2
+#define D_MAX_JPEG_BLOCK_NUM 10
+#define D_HUFF_LOOKAHEAD_BITS 6 /* # of bits of lookahead */
+
+#define D_DCTSIZE 8
+#define D_JPEG_DRAM_ALIGN_MASK 0xf
+#define D_JPEG_DRAM_ALIGN_SIZE (D_JPEG_DRAM_ALIGN_MASK + 1)
+
+#define D_JPEG_BASELINE 0
+#define D_JPEG_DC_REFINE 1
+#define D_JPEG_AC_FIRST 2
+#define D_JPEG_AC_REFINE 3
+#define D_JPEG_DC_FIRST 4
+
+/* global data check flags */
+#define D_FLAG_NONE (0)
+
+#define D_GLOB_PROGRESSIVE (1 << 0)
+#define D_GLOB_NCOMP (1 << 1)
+#define D_GLOB_BLK_W (1 << 2)
+#define D_GLOB_BLK_H (1 << 3)
+#define D_GLOB_PIC_W (1 << 4)
+#define D_GLOB_PIC_H (1 << 5)
+#define D_GLOB_DCHUFF (1 << 6) /* no need */
+#define D_GLOB_ACHUFF (1 << 7) /* no need */
+#define D_GLOB_NZBUFF (1 << 8) /* no need */
+#define D_GLOB_QTBL (1 << 9) /* no need */
+#define D_GLOB_RESTART (1 << 10)
+/* scan data check flags */
+#define D_SCAN_DATASTART (1 << 0)
+#define D_SCAN_NCOMP (1 << 1)
+#define D_SCAN_COMPIN (1 << 2)
+#define D_SCAN_COMPQ (1 << 3)
+#define D_SCAN_BLKDC (1 << 4)
+#define D_SCAN_BLKAC (1 << 5)
+#define D_SCAN_ALAH (1 << 6)
+#define D_SCAN_SESS (1 << 7)
+#define D_SCAN_LAST (1 << 8)
+#define D_SCAN_ROWSTART (1 << 9)
+#define D_SCAN_ROWEND (1 << 10)
+#define D_SCAN_DCHUFF (1 << 11)
+#define D_SCAN_ACHUFF (1 << 12)
+#define D_SCAN_QTBL (1 << 13)
+#define D_SCAN_NZBUFF (1 << 14)
+/* mcu row check flags */
+#define D_ROW_CURR (1 << 0)
+#define D_ROW_OUTBUF (1 << 1)
+#define D_ROW_OUTBUFSIZE (1 << 2)
+/* mcu check flags */
+#define D_MCU_OUTADDR (1 << 0)
+#define D_MCU_COEFADDR (1 << 1)
+/* misc check flags */
+#define D_MISC_ADDR_X (1 << 0)
+#define D_MISC_ADDR_Y (1 << 1)
+
+
+#define M_JPEG_INTERFACE_START() \
+ int i4Ret = (int)E_HWJPG_OK;
+
+#define M_JPEG_INTERFACE_END() \
+ return i4Ret
+
+
+#define HORI 0
+#define VERT 1
+
+#define JPEG_ENC_DST_ADDR_OFFSET_MASK (0x0f)
+
+
+
+
+
+typedef enum _ENUM_JPEG_RET_CODE_T
+{
+ E_JPG_OK,
+ E_JPG_ERR_NONFATAL,
+ E_JPG_ERR_FATAL,
+ E_JPG_ERR_PARAM,
+ E_JPG_ERR_NOT_INITED,
+ E_JPG_ERR_ALREADY, //5
+ /* markers */
+ E_JPG_ERR_NOT_JPEG_IMAGE,
+ E_JPG_ERR_NOT_A_MARKER,
+ E_JPG_ERR_PASS_END,
+ E_JPG_ERR_MULTI_SOI,
+ E_JPG_ERR_UNSUPPORT_SOF, //10
+ E_JPG_ERR_MULTI_SOF,
+ E_JPG_ERR_INVALID_SOF,
+ E_JPG_ERR_SOS_BEFORE_SOF,
+ E_JPG_ERR_INVALID_SOS,
+ E_JPG_ERR_INVALID_DHT, //15
+ E_JPG_ERR_INVALID_DRI,
+ E_JPG_ERR_MULTI_APP1,
+ E_JPG_ERR_INVALID_APP0,
+ E_JPG_ERR_INVALID_APP1,
+ E_JPG_ERR_PARSE_FAILED, //20
+ E_JPG_ERR_NOT_PARSED,
+ E_JPG_ERR_MULTI_EOI,
+ /* instances */
+ E_JPG_ERR_ALLOC_PARSER,
+ E_JPG_ERR_ALLOC_DECODER,
+ E_JPG_ERR_ALLOC_MEM, //25
+ E_JPG_ERR_ALLOC_FLOW,
+ /* general */
+ E_JPG_ERR_UNSUPPORT,
+ E_JPG_ERR_GENERAL,
+ E_JPG_ERR_LAST,
+ E_JPG_ERR_DISPLAY_ADDR, //30
+ E_JPG_ERR_INVALID_COMPONENT //code sync
+} JpegDecRetCode;
+
+
+typedef enum
+{
+ E_HWJPG_OK = 0,
+ E_HWJPG_BUSY,
+
+ E_HWJPG_ERR_FETCH_TIMEOIT = E_JPG_ERR_LAST + 1,
+ E_HWJPG_ERR_SET_BS,
+ E_HWJPG_ERR_LOAD_Q,
+ E_HWJPG_ERR_QTBL_INDEX,
+ E_HWJPG_ERR_QTBL_NUM,
+
+ E_HWJPG_ERR_PARAM,
+ E_HWJPG_ERR_TIMEOUT,
+
+ E_HWJPG_ERR_COMP_RANGE,
+ E_HWJPG_ERR_TBL_RANGE,
+ E_HWJPG_ERR_BLOCK,
+ E_HWJPG_ERR_SIZE,
+ E_HWJPG_ERR_OUTBUF,
+
+ E_HWJPG_ERR_NULL_SCAN,
+
+ E_HWJPG_ERR_GLOB_NOT_READY,
+ E_HWJPG_ERR_SCAN_NOT_READY,
+ E_HWJPG_ERR_ROW_NOT_READY,
+ E_HWJPG_ERR_MCU_NOT_READY,
+ E_HWJPG_ERR_MISC_NOT_READY,
+ E_HWJPG_ERR_HUFF_ADDR,
+ /* last */
+ E_HWJPG_ERR_GENERAL
+} JpegDrvDecRetCode;
+
+
+typedef enum
+{
+ JDEC_HAL_DEC_MODE_NONE,
+ JDEC_HAL_DEC_MODE_BASELINE_PIC, ///< Jpeg baseline picture, decode whole picture
+ JDEC_HAL_DEC_MODE_BASELINE_MCU, ///< Jpeg baseline picture, decode MCU row
+ JDEC_HAL_DEC_MODE_BASELINE_MCU_ROW, ///< Jpeg baseline picture, decode MCU
+ JDEC_HAL_DEC_MODE_BASELINE_VIDEO_OUTPUT,
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_MULTI_COLLECT, ///< Jpeg progressive picture, decode MCU milti-collect
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ENHANCE, ///< Jpeg progressive picture, decode MCU enhance decoding
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ROW_MULTI_COLLECT, ///Jpeg progressive MCU-Row Mode
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_MCU_ROW_ENHANCE,
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_SCAN_MULTI_COLLECT,
+ JDEC_HAL_DEC_MODE_PROGRESSIVE_SCAN_ENHANCE
+} JpegDrvDecMode;
+
+/* jpeg format */
+typedef enum _JpegDecFormat
+{
+ E_JPG_UNKNOWN_FORMAT,
+ E_JPG_BASELINE,
+ E_JPG_EX_SEQ_HUFFMAN,
+ E_JPG_PROGRESSIVE_HUFFMAN,
+ E_JPG_EX_SEQ_ARITHMETIC,
+ E_JPG_PROGRESSIVE_ARITHMETIC,
+ E_JPG_LOSSLESS_HUFFMAN,
+ E_JPG_DIFFERENTIAL_SEQ_HUFFMAN,
+ E_JPG_DIFF_PROG_HUFFMAN,
+ E_JPG_DIFF_LLESS_HUFFMAN,
+ E_JPG_RESERVED_FOR_EXTENSIONS,
+ E_JPG_LOSSLESS_ARITHMETIC,
+ E_JPG_DIFF_SEQ_ARITHMETIC,
+ E_JPG_DIFF_PROG_ARITHMETIC,
+ E_JPG_UNSUPPORT_FORMAT
+} JpegDecFormat;
+
+
+/* component info in SOF marker */
+typedef struct _JpegDecSOFComp
+{
+ unsigned char u1CompId;
+ unsigned char u1HSampFactor;
+ unsigned char u1VSampFactor;
+ unsigned char u1QuantTblNo;
+} JpegDecSOFComp;
+
+typedef struct _JpegDecSOS
+{
+ unsigned int u4ScanPass; /* scan pass */
+ unsigned char u1CompInScan;
+ unsigned char au1CompNoList[MAX_JPEG_COMPONENT];
+ unsigned char au1DcId[MAX_JPEG_COMPONENT];
+ unsigned char au1AcId[MAX_JPEG_COMPONENT];
+ unsigned char u1Ss, u1Se, u1Ah, u1Al, u1AhAl; /* OT: NO USE */
+ unsigned char* pu1ScanTableStart;
+ unsigned char* pu1ScanDataStart;
+} JpegDecSOS;
+
+
+/* raw de-huffman table */
+typedef struct
+{
+ unsigned char au1Bits[17];
+ unsigned char au1HuffVal[256];
+} JpegDecDhtHuffTbl;
+
+
+
+/* SOF data */
+typedef struct _JpegDecSOF
+{
+ int fgSOF; /* indicate that already have an SOF marker */
+ JpegDecFormat eJpegFormat;
+ unsigned char u1DataPrecision;
+ unsigned short u2ImageHeight;
+ unsigned short u2ImageWidth;
+ unsigned char u1NumComponents;
+ unsigned char au1MapId2Index[256];
+ JpegDecSOFComp arSofComp[MAX_JPEG_COMPONENT];
+} JpegDecSOF;
+
+
+
+/* DHT data */
+typedef struct
+{
+ unsigned int u4NumDcTbl;
+ unsigned int u4NumAcTbl;
+ unsigned int fgDcTblLoaded; /* bit mask for loaded dc table */
+ unsigned int fgAcTblLoaded; /* bit mask for loaded ac table */
+ JpegDecDhtHuffTbl arDcTbl[4];
+ JpegDecDhtHuffTbl arAcTbl[4];
+} JpegDecDHT;
+
+/* DQT data */
+typedef struct
+{
+ /*
+ although we leave 2bytes * 64 space here,
+ if q table precision is 8bits, we use only
+ first half (1x64) of this table
+ */
+ unsigned char aau1Qtbl[4][128];
+ unsigned int afgPrec[4];
+ unsigned char u1NumQ;
+ unsigned int fgDQT;
+} JpegDecDQT;
+
+
+/* new types for flw2 (wired) */
+typedef struct
+{
+ void *pvFreePoint; /* OT: NO USE */
+ unsigned int u4Width; /* OT: NO USE */
+ unsigned int u4Height; /* OT: NO USE */
+ unsigned int u4McuNumInRow; /* OT: NO USE */
+ unsigned int u4McuRows; /* OT: NO USE */
+ unsigned int u4TotalMcuNum; /* OT: NO USE */
+ unsigned int aau4SampleFactor[3][2]; /* OT: NO USE */
+ unsigned int au4CompBlock[3]; /* OT: NO USE */
+ unsigned int au4MaxFactor[2]; /* OT: NO USE */
+ unsigned int outputBuffer0[3];
+ unsigned int outputBuffer1[3]; /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
+ unsigned int au1CoffBuffer[3]; /* OT: NO USE */
+ int fgProgScan; /* OT: NO USE */
+ /* temp buffers */
+ unsigned int apvNzBuffer[3]; /* OT: NO USE */
+
+} JpegDrvDecFlow;
+
+
+
+//// jpeg decode mode
+typedef enum _JpegDecMode
+{
+ JPEG_DEC_MODE_NONE,
+ JPEG_DEC_MODE_FRAME, ///< Jpeg baseline picture, decode whole picture
+ JPEG_DEC_MODE_DC_LINK, ///< Jpeg baseline picture, decode whole picture
+ JPEG_DEC_MODE_MCU_ROW ///< Jpeg baseline picture, decode MCU row
+} JpegDecMode;
+
+
+//// JPEG Decoder Structure
+typedef struct
+{
+
+ /* common */
+ unsigned int decodeMode; //OK
+ unsigned int reg_OpMode ; //OK
+ unsigned int regDecDumpEn;
+ unsigned int totalMCU ; //OK
+ unsigned int comp0_DU ;
+
+ unsigned int membershipList ; //OK /* { GRAY, gmcEn, DU9, DU8,..., DU1, DU0} */
+
+ /* for BRZ (0): 1, (1): 1/2, (2): 1/4, (3): 1/8 */
+ unsigned char lumaHorDecimate; //OK
+ unsigned char lumaVerDecimate; //OK
+ unsigned char cbcrHorDecimate; //OK
+ unsigned char cbcrVerDecimate; //OK
+
+ unsigned int srcStreamAddrBase; //OK
+ unsigned int srcStreamSize; //OK
+ unsigned int srcStreamAddrWritePtr; //OK
+
+ unsigned int outputBuffer0[3]; //OK
+ unsigned int outputBuffer1[3]; //OK /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
+
+
+ // JPEG component information
+ unsigned int componentNum; //OK
+ unsigned int componentID[3]; //OK ///< Ci
+ unsigned int hSamplingFactor[3]; //OK ///< Hi
+ unsigned int vSamplingFactor[3]; //OK ///< Vi
+ unsigned int qTableSelector[3]; //OK ///< Tqi (OT: need this field?)
+
+ unsigned int dma_McuInGroup; //OK
+ unsigned int dma_GroupNum ; //OK
+ unsigned int dma_LastMcuNum ; //OK
+ unsigned int gmcEn ; //OK
+
+
+ //unsigned int totalMcuRows; //OK ///< number of MCU column in the JPEG file
+
+ unsigned int compImgStride[D_MAX_JPEG_HW_COMP]; //OK // hSamplingFactor[n] * 8 * mcuPerRow (byte pitch of a component)
+ unsigned int compMemStride[D_MAX_JPEG_HW_COMP]; //OK
+ unsigned int compTileBufStride[D_MAX_JPEG_HW_COMP]; // hSamplingFactor[n] * 8 * mcuPerRow (byte pitch of a component)
+
+
+
+ unsigned int mcuPerRow; //OK //move to HAL ///< number of MCU row in the JPEG file
+ unsigned int pauseRow_en; //OK
+ unsigned int pauseRowCnt; //move to HAL
+ unsigned int pauseMCU; //OK
+ unsigned int tileBufRowNum ; //move to HAL
+ unsigned int buffer_Y_PA ; //move to HAL
+ unsigned int buffer_Cb_PA; //move to HAL
+ unsigned int buffer_Cr_PA; //move to HAL
+ unsigned int buffer_Y_row_size ; //move to HAL
+ unsigned int buffer_C_row_size ; //move to HAL
+
+
+ //unsigned int compDU[3]; //OK ///< (required by HW decoder) number of DU for each component
+ //unsigned int duPerMCURow[3]; //OK ///< (required by HW decoder) DU per MCU row for each component (MT6589_NOUSE)
+ //unsigned int dummyDU[3]; //OK ///< (required by HW decoder) number of dummy DU for each component (MT6589_NOUSE)
+ //unsigned int samplingFormat; //OK /// how many format?
+
+
+
+
+}JPEG_DEC_DRV_IN;
+
+
+
+
+
+typedef struct
+{
+ unsigned int decRowBuf[3]; //OK
+ unsigned int pauseMCU; //OK
+
+
+}JPEG_DEC_CONFIG_ROW;
+
+
+
+typedef struct
+{
+ unsigned int goNum;
+ unsigned int pauseMCUidx[64];
+ unsigned int decRowBuf0[64];
+ unsigned int decRowBuf1[64];
+ unsigned int decRowBuf2[64];
+
+
+}JPEG_DEC_CONFIG_CMDQ;
+
+
+
+
+typedef struct
+{
+ // from mt6575
+ unsigned int srcStreamAddrBase;
+ unsigned int srcStreamSize;
+ unsigned int srcStreamAddrWritePtr;
+
+ unsigned int outputBuffer0[3];
+ unsigned int outputBuffer1[3]; /* nouse in full frame mode, only use in PauseResume/DirectCouple mode */
+
+ unsigned int mcuPerRow; ///< number of MCU row in the JPEG file
+ unsigned int totalMcuRows; ///< number of MCU column in the JPEG file
+
+ unsigned int compDU[3]; ///< (required by HW decoder) number of DU for each component
+ unsigned int duPerMCURow[3]; ///< (required by HW decoder) DU per MCU row for each component (MT6589_NOUSE)
+ unsigned int dummyDU[3]; ///< (required by HW decoder) number of dummy DU for each component (MT6589_NOUSE)
+
+ unsigned int samplingFormat; /// how many format?
+
+ // JPEG component information
+ unsigned int componentNum;
+ unsigned int componentID[3]; ///< Ci
+ unsigned int hSamplingFactor[3]; ///< Hi
+ unsigned int vSamplingFactor[3]; ///< Vi
+ unsigned int qTableSelector[3]; ///< Tqi (OT: need this field?)
+
+/*********************************************************************************/
+
+ /* common */
+ unsigned int totalMCU ;
+ unsigned char blkNumInMCU; //total drv no use
+
+ unsigned char u1MaxHorSample, u1MaxVerSample; // widest, highest
+ unsigned int u4PicWidth, u4PicHeight; // picture width and height
+ unsigned int compImgStride[D_MAX_JPEG_HW_COMP]; // hSamplingFactor[n] * 8 * mcuPerRow (byte pitch of a component)
+ unsigned int compTileBufStride[D_MAX_JPEG_HW_COMP]; // hSamplingFactor[n] * 8 * mcuPerRow (byte pitch of a component)
+ unsigned int au4PicWidthInBuf[D_MAX_JPEG_HW_COMP];
+
+
+ // use only in look ahead table
+ unsigned char au1MemberShip[D_MAX_JPEG_BLOCK_NUM]; // DU mapping to components
+ unsigned char aau1Qtbl[D_MAX_JPEG_QTBL][128]; // q tables in stream
+ unsigned int u4RestartInterval;
+
+ /* current scan */
+ unsigned char u1NumCompsInCurrScan; // number of components in current scan
+ int afgCompInScan[D_MAX_JPEG_HW_COMP + 1];
+ //unsigned char qTableSelector[D_MAX_JPEG_HW_COMP];
+ unsigned char au1BlkDc[D_MAX_JPEG_BLOCK_NUM];
+ unsigned char au1BlkAc[D_MAX_JPEG_BLOCK_NUM];
+ unsigned char u1Se; /* OT: NO USE */
+ unsigned char u1Ss; /* OT: NO USE */
+
+ /* current mcu row */
+ unsigned int u4CurrMcuRow;
+ unsigned int u4ModTotalRows;
+
+
+ /* for single component in p scan */
+ unsigned char u1FirstCompInScan;
+
+ /* for BRZ */
+ unsigned char lumaHorDecimate; //(0): 1, (1): 1/2, (2): 1/4, (3): 1/8
+ unsigned char lumaVerDecimate;
+ unsigned char cbcrHorDecimate;
+ unsigned char cbcrVerDecimate;
+ unsigned int srcColorFormat;
+ unsigned int dstColorFormat;
+ unsigned int u4isColorConv;
+ unsigned int u4ds_width[3] ;
+ unsigned int u4ds_height[3] ;
+
+ unsigned int decodeMode;
+ unsigned int gdmaBypassEn;
+ unsigned int regDecDumpEn;
+
+ unsigned int pauseRow_en;
+ unsigned int pauseRowCnt;
+ unsigned int tileBufRowNum ;
+ unsigned int buffer_Y_PA ;
+ unsigned int buffer_Cb_PA;
+ unsigned int buffer_Cr_PA;
+ unsigned int buffer_Y_row_size ;
+ unsigned int buffer_C_row_size ;
+
+} JpegDrvDecConfig;
+
+typedef struct
+{
+ unsigned int *pChksum;
+} JpegDrvDecResult;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//==========================================================================================
+
+
+// JPEG Encoder Structure
+typedef struct
+{
+
+ unsigned int dstBufferAddr;
+ unsigned int dstBufferSize;
+
+ unsigned int encWidth; //HW directly fill to header
+ unsigned int encHeight; //HW directly fill to header
+
+ unsigned char enableEXIF;
+ unsigned char allocBuffer;
+ //unsigned char enableSyncReset; //not use in mt6589
+
+ unsigned int encQuality;
+ unsigned int encFormat;
+
+ //extend in mt6589
+ unsigned int disableGMC; //TBD: not support
+ unsigned int restartInterval;
+ unsigned int srcBufferAddr; // YUV420: Luma
+ unsigned int srcChromaAddr;
+ unsigned int imgStride ;
+ unsigned int memStride ;
+ unsigned int totalEncDU ;
+ unsigned int dstBufAddrOffset;
+ unsigned int dstBufAddrOffsetMask;
+
+}JPEG_ENC_DRV_IN;
+
+
+
+
+
+typedef struct
+{
+ long timeout;
+ unsigned int *fileSize;
+ unsigned int *result;
+ unsigned int *cycleCount;
+
+}JPEG_ENC_DRV_OUT;
+
+typedef struct {
+ unsigned long startAddr;//In :
+ unsigned long size;
+ unsigned long result;// 0 : out of pmem range, 1 : inside pmem range, 2 : partially overlap with pmem range
+} JPEG_PMEM_RANGE;
+
+//====================================================================================
+
+
+typedef struct
+{
+ long timeout;
+ unsigned int *pFileSize;
+ unsigned int *pResult;
+ unsigned int *pCycleCount;
+
+} JpegDrvEncResult;
+
+
+
+
+
+
+//typedef struct
+//{
+// unsigned int srcBufferAddr; // YUV420: Luma
+// unsigned int srcChromaAddr;
+// unsigned int dstBufferAddr;
+// unsigned int dstBufferSize;
+//
+// unsigned int srcWidth;
+// unsigned int srcHeight;
+//
+// unsigned char enableEXIF;
+// unsigned char disableGMC; //not support
+//
+// unsigned int restartInterval;
+// unsigned int quality;
+// unsigned int yuvFormat;
+//
+//} JpegDrvEncParam;
+
+
+
+//======================================================================================
+
+
+
+
+
+
+
+#define JPEG_IOCTL_MAGIC 'x'
+
+#if 0
+ #define JPEG_DEC_IOCTL_INIT _IO (JPEG_IOCTL_MAGIC, 1)
+ //#define JPEG_DEC_IOCTL_CONFIG _IOW (JPEG_IOCTL_MAGIC, 2, JPEG_DEC_DRV_IN)
+ #define JPEG_DEC_IOCTL_START _IO (JPEG_IOCTL_MAGIC, 3)
+ #define JPEG_DEC_IOCTL_WAIT _IOWR(JPEG_IOCTL_MAGIC, 6, JPEG_DEC_DRV_OUT)
+ #define JPEG_DEC_IOCTL_DEINIT _IO (JPEG_IOCTL_MAGIC, 8)
+ //#define JPEG_DEC_IOCTL_RESUME _IOW(JPEG_IOCTL_MAGIC, 4, JPEG_DEC_RESUME_IN)
+ //#define JPEG_DEC_IOCTL_RANGE _IOWR(JPEG_IOCTL_MAGIC, 5, JPEG_DEC_RANGE_IN)
+ //#define JPEG_DEC_IOCTL_COPY _IOWR(JPEG_IOCTL_MAGIC, 7, int)
+#endif
+
+///////////////////// JPEG DEC IOCTL /////////////////////////////////////
+#define JPEG_DEC_IOCTL_INIT _IO (JPEG_IOCTL_MAGIC, 1)
+#define JPEG_DEC_IOCTL_CONFIG _IOW (JPEG_IOCTL_MAGIC, 2, JPEG_DEC_DRV_IN)
+#define JPEG_DEC_IOCTL_FLOW _IOW (JPEG_IOCTL_MAGIC, 3, JpegDrvDecFlow)
+#define JPEG_DEC_IOCTL_START _IO (JPEG_IOCTL_MAGIC, 4)
+#define JPEG_DEC_IOCTL_WAIT _IOWR (JPEG_IOCTL_MAGIC, 5, JPEG_DEC_DRV_OUT)
+#define JPEG_DEC_IOCTL_DEINIT _IO (JPEG_IOCTL_MAGIC, 6)
+
+#define JPEG_DEC_IOCTL_RESET _IO (JPEG_IOCTL_MAGIC, 7)
+#define JPEG_DEC_IOCTL_CHKSUM _IOWR (JPEG_IOCTL_MAGIC, 8, JpegDrvDecResult)
+#define JPEG_DEC_IOCTL_BREAK _IO (JPEG_IOCTL_MAGIC, 9)
+#define JPEG_DEC_IOCTL_RW_REG _IO (JPEG_IOCTL_MAGIC, 10)
+#define JPEG_DEC_IOCTL_RESUME _IOW (JPEG_IOCTL_MAGIC, 11, JPEG_DEC_CONFIG_ROW)
+
+#define JPEG_DEC_IOCTL_FLUSH_CMDQ _IOW (JPEG_IOCTL_MAGIC, 17, JPEG_DEC_CONFIG_CMDQ)
+
+#define JPEG_DEC_IOCTL_DUMP_REG _IO (JPEG_IOCTL_MAGIC, 30)
+//#define JPEG_DEC_IOCTL_MAN_GDMA _IOW (JPEG_IOCTL_MAGIC, 31, unsigned char)
+
+
+
+///////////////////// JPEG ENC IOCTL /////////////////////////////////////
+
+
+#define JPEG_ENC_IOCTL_INIT _IO (JPEG_IOCTL_MAGIC, 11)
+#define JPEG_ENC_IOCTL_CONFIG _IOW (JPEG_IOCTL_MAGIC, 12, JPEG_ENC_DRV_IN)
+#define JPEG_ENC_IOCTL_WAIT _IOWR(JPEG_IOCTL_MAGIC, 13, JPEG_ENC_DRV_OUT)
+#define JPEG_ENC_IOCTL_DEINIT _IO (JPEG_IOCTL_MAGIC, 14)
+#define JPEG_ENC_IOCTL_START _IO (JPEG_IOCTL_MAGIC, 15)
+
+
+#define JPEG_ENC_IOCTL_WARM_RESET _IO(JPEG_IOCTL_MAGIC, 20)
+#define JPEG_ENC_IOCTL_DUMP_REG _IO(JPEG_IOCTL_MAGIC, 21)
+#define JPEG_ENC_IOCTL_RW_REG _IO(JPEG_IOCTL_MAGIC, 22)
+
+
+#endif
+
diff --git a/kernel-headers/kd_imgsensor.h b/kernel-headers/kd_imgsensor.h
index 98ace23..722c2d3 100644
--- a/kernel-headers/kd_imgsensor.h
+++ b/kernel-headers/kd_imgsensor.h
@@ -98,15 +98,16 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
********************************************************************************/
/* SENSOR CHIP VERSION */
/*IMX*/
+#define IMX377_SENSOR_ID 0x0377
+#define IMX278_SENSOR_ID 0x0278
+#define IMX258_SENSOR_ID 0x0258
+#define IMX230_SENSOR_ID 0x0230
#define IMX220_SENSOR_ID 0x0220
-#define IMX145_SENSOR_ID 0x0145
#define IMX219_SENSOR_ID 0x0219
#define IMX215_SENSOR_ID 0x0215
#define IMX214_SENSOR_ID 0x0214
#define IMX179_SENSOR_ID 0x0179
-#define IMX175_SENSOR_ID 0x0175
#define IMX178_SENSOR_ID 0x0178
-#define IMX164_SENSOR_ID 0x0164
#define IMX135_SENSOR_ID 0x0135
#define IMX132MIPI_SENSOR_ID 0x0132
#define IMX119_SENSOR_ID 0x0119
@@ -114,29 +115,23 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define IMX091_SENSOR_ID 0x0091
#define IMX073_SENSOR_ID 0x0046
#define IMX058_SENSOR_ID 0x0058
-#define IMX166_SENSOR_ID 0x0152
/*OV*/
#define OV23850_SENSOR_ID 0x023850
#define OV16825MIPI_SENSOR_ID 0x016820
#define OV13850_SENSOR_ID 0xD850
#define OV12830_SENSOR_ID 0xC830
#define OV9760MIPI_SENSOR_ID 0x9760
-#define OV9762MIPI_SENSOR_ID 0x9762
-#define OV9762SUBMIPI_SENSOR_ID 0x9763
#define OV9740MIPI_SENSOR_ID 0x9740
#define OV9726_SENSOR_ID 0x9726
#define OV9726MIPI_SENSOR_ID 0x9726
#define OV8865_SENSOR_ID 0x8865
#define OV8858_SENSOR_ID 0x8858
#define OV8858S_SENSOR_ID (0x8858+1)
-#define OV8858TRULY_SENSOR_ID 0x885a
-#define OV8858SUNNY_SENSOR_ID 0x8859
#define OV8830_SENSOR_ID 0x8830
#define OV8825_SENSOR_ID 0x8825
#define OV7675_SENSOR_ID 0x7673
#define OV5693_SENSOR_ID 0x5690
#define OV5670MIPI_SENSOR_ID 0x5670
-#define OV5670SUBMIPI_SENSOR_ID 0x5672
#define OV5671MIPI_SENSOR_ID 0x5671
#define OV5650_SENSOR_ID 0x5651
#define OV5650MIPI_SENSOR_ID 0x5651
@@ -157,12 +152,16 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define OV2650_SENSOR_ID_1 0x2651
#define OV2650_SENSOR_ID_2 0x2652
#define OV2650_SENSOR_ID_3 0x2655
+#define OV8856_SENSOR_ID 0x8856
+#define OV8856_SENSOR_ID_SUNWIN (0x8856+1)
/*S5K*/
#define S5K2X8_SENSOR_ID 0x2188
#define S5K2P8_SENSOR_ID 0x2108
#define S5K3M2_SENSOR_ID 0x30D2
-#define S5K3M2TRULY_SENSOR_ID 0x30D4
-#define S5K3M2SUNNY_SENSOR_ID 0x30D3
+#define S5K3M2_SENSOR_ID_YD (0x30D2+1)
+#define S5K3M2_SENSOR_ID_SUNWIN (0x30D2+2)
+#define S5K3M2_SENSOR_ID_SEASONS (0x30D2+2)
+#define S5K3M2_SENSOR_ID_QT (0x30D2+3)
#define S5K3AAEA_SENSOR_ID 0x07AC
#define S5K3BAFB_SENSOR_ID 0x7070
#define S5K3H7Y_SENSOR_ID 0x3087
@@ -175,18 +174,15 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define S5K53BEX_SENSOR_ID 0x45A8
#define S5K53BEB_SENSOR_ID 0x87A8
#define S5K5BAFX_SENSOR_ID 0x05BA
-#define S5K4E2GX_SENSOR_ID 0x4e20
#define S5K5E2YA_SENSOR_ID 0x5e20
-#define S5K5E2YASUB_SENSOR_ID 0x5e21
#define S5K4H5YX_2LANE_SENSOR_ID 0x485B
-#define S5K4H5YC_SENSOR_ID 0x485B
-#define S5K4H5YC_2LANE_SENSOR_ID 0x485b
+#define S5K4H5YC_SENSOR_ID 0x485C
#define S5K83AFX_SENSOR_ID 0x01C4
#define S5K5CAGX_SENSOR_ID 0x05ca
#define S5K8AAYX_MIPI_SENSOR_ID 0x08aa
#define S5K8AAYX_SENSOR_ID 0x08aa
-#define S5K3L2_SENSOR_ID 0x30c2
-#define S5K3H5XA_SENSOR_ID 0x3085
+#define S5K3L2_SENSOR_ID 0x30C2
+#define S5K4H8_SENSOR_ID 0x4089
/*HI*/
#define HI841_SENSOR_ID 0x0841
#define HI707_SENSOR_ID 0x00b8
@@ -200,6 +196,7 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define HI251_SENSOR_ID 0x0084
#define HI191MIPI_SENSOR_ID 0x0191
#define HIVICF_SENSOR_ID 0x0081
+#define HI843B_SENSOR_ID 0x0843
/*MT*/
#define MT9D011_SENSOR_ID 0x1511
#define MT9D111_SENSOR_ID 0x1511
@@ -226,44 +223,25 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define MT9P017MIPI_SENSOR_ID 0x4800
#define MT9T113MIPI_SENSOR_ID 0x4680
/*GC*/
-#define GC2755_SENSOR_ID 0x2655
#define GC2355_SENSOR_ID 0x2355
-#define GC2365_SENSOR_ID 0x2365
-#define GC2355SUB_SENSOR_ID 0x2356
#define GC2235_SENSOR_ID 0x2235
-
-#define GC2235MIPI_SENSOR_ID 0x2235
-
#define GC2035_SENSOR_ID 0x2035
#define GC2145_SENSOR_ID 0x2145
#define GC0330_SENSOR_ID 0xC1
#define GC0329_SENSOR_ID 0xC0
#define GC0310_SENSOR_ID 0xa310
-#define GC0310MAIN_SENSOR_ID 0xa311
-#define GC2155MIPI_SENSOR_ID 0x2155
#define GC0313MIPI_YUV_SENSOR_ID 0xD0
-#define GC0409_SENSOR_ID 0x0409
-#define GC5004MIPI_SENSOR_ID 0x5004
-#define GC5005MIPI_SENSOR_ID 0x5005
-#define GC5005SUBMIPI_SENSOR_ID 0x5006
-#define GC5024MIPI_SENSOR_ID 0x5024
-#define GC8024MIPI_SENSOR_ID 0x8024
-#define GC8003MIPI_SENSOR_ID 0x8003
+#define GC0312_SENSOR_ID 0xb310
+#define GC2755MIPI_SENSOR_ID 0x2655
/*SP*/
#define SP0A19_YUV_SENSOR_ID 0xA6
-#define SP0A20_SENSOR_ID 0x2b
-#define SP2508_SENSOR_ID 0x2508
-#define SP2509MIPI_SENSOR_ID 0x2509
#define SP2518_YUV_SENSOR_ID 0x53
-#define SP5409MIPI_SENSOR_ID 0x5409
-#define SP5409SUBMIPI_SENSOR_ID 0x540a
-#define SP8408MIPI_SENSOR_ID 0x1490
+#define SP2509MIPI_SENSOR_ID 0x2509
/*A*/
#define A5141MIPI_SENSOR_ID 0x4800
#define A5142MIPI_SENSOR_ID 0x4800
/*HM*/
#define HM3451_SENSOR_ID 0x345
-#define HM5040_SENSOR_ID 0x3bb
/*AR*/
#define AR0833_SENSOR_ID 0x4B03
/*SIV*/
@@ -291,48 +269,44 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define SHARP3D_SENSOR_ID 0x003d
#define T8EV5_SENSOR_ID 0x1011
+#define S5K4H5YC_DL_SENSOR_ID 0x485B
/* CAMERA DRIVER NAME */
#define CAMERA_HW_DEVNAME "kd_camera_hw"
/* SENSOR DEVICE DRIVER NAME */
/*IMX*/
+#define SENSOR_DRVNAME_IMX377_MIPI_RAW "imx377mipiraw"
+#define SENSOR_DRVNAME_IMX278_MIPI_RAW "imx278mipiraw"
+#define SENSOR_DRVNAME_IMX258_MIPI_RAW "imx258mipiraw"
+#define SENSOR_DRVNAME_IMX230_MIPI_RAW "imx230mipiraw"
#define SENSOR_DRVNAME_IMX220_MIPI_RAW "imx220mipiraw"
-#define SENSOR_DRVNAME_IMX145_MIPI_RAW "imx145mipiraw"
#define SENSOR_DRVNAME_IMX219_MIPI_RAW "imx219mipiraw"
#define SENSOR_DRVNAME_IMX215_MIPI_RAW "imx215mipiraw"
#define SENSOR_DRVNAME_IMX214_MIPI_RAW "imx214mipiraw"
#define SENSOR_DRVNAME_IMX179_MIPI_RAW "imx179mipiraw"
-#define SENSOR_DRVNAME_IMX179_MIPI_RAW_4LANE "imx179mipiraw4lane"
-#define SENSOR_DRVNAME_IMX175_MIPI_RAW "imx175mipiraw"
#define SENSOR_DRVNAME_IMX178_MIPI_RAW "imx178mipiraw"
-#define SENSOR_DRVNAME_IMX164_MIPI_RAW "imx164mipiraw"
#define SENSOR_DRVNAME_IMX135_MIPI_RAW "imx135mipiraw"
#define SENSOR_DRVNAME_IMX132_MIPI_RAW "imx132mipiraw"
#define SENSOR_DRVNAME_IMX119_MIPI_RAW "imx119mipiraw"
#define SENSOR_DRVNAME_IMX105_MIPI_RAW "imx105mipiraw"
#define SENSOR_DRVNAME_IMX091_MIPI_RAW "imx091mipiraw"
#define SENSOR_DRVNAME_IMX073_MIPI_RAW "imx073mipiraw"
-#define SENSOR_DRVNAME_IMX166_MIPI_RAW "imx166mipiraw"
/*OV*/
+#define SENSOR_DRVNAME_OV23850_MIPI_RAW "ov23850mipiraw"
#define SENSOR_DRVNAME_OV16825_MIPI_RAW "ov16825mipiraw"
#define SENSOR_DRVNAME_OV13850_MIPI_RAW "ov13850mipiraw"
#define SENSOR_DRVNAME_OV12830_MIPI_RAW "ov12830mipiraw"
#define SENSOR_DRVNAME_OV9760_MIPI_RAW "ov9760mipiraw"
-#define SENSOR_DRVNAME_OV9762_MIPI_RAW "ov9762mipiraw"
-#define SENSOR_DRVNAME_OV9762SUB_MIPI_RAW "ov9762submipiraw"
#define SENSOR_DRVNAME_OV9740_MIPI_YUV "ov9740mipiyuv"
#define SENSOR_DRVNAME_0V9726_RAW "ov9726raw"
#define SENSOR_DRVNAME_OV9726_MIPI_RAW "ov9726mipiraw"
#define SENSOR_DRVNAME_OV8865_MIPI_RAW "ov8865mipiraw"
#define SENSOR_DRVNAME_OV8858_MIPI_RAW "ov8858mipiraw"
#define SENSOR_DRVNAME_OV8858S_MIPI_RAW "ov8858smipiraw"
-#define SENSOR_DRVNAME_OV8858TRULY_MIPI_RAW "ov8858trulymipiraw"
-#define SENSOR_DRVNAME_OV8858SUNNY_MIPI_RAW "ov8858sunnymipiraw"
#define SENSOR_DRVNAME_OV8830_RAW "ov8830"
#define SENSOR_DRVNAME_OV8825_MIPI_RAW "ov8825mipiraw"
#define SENSOR_DRVNAME_OV7675_YUV "ov7675yuv"
#define SENSOR_DRVNAME_OV5693_MIPI_RAW "ov5693mipi"
#define SENSOR_DRVNAME_OV5670_MIPI_RAW "ov5670mipiraw"
-#define SENSOR_DRVNAME_OV5670SUB_MIPI_RAW "ov5670submipiraw"
#define SENSOR_DRVNAME_OV5671_MIPI_RAW "ov5671mipiraw"
#define SENSOR_DRVNAME_OV5647MIPI_RAW "ov5647mipiraw"
#define SENSOR_DRVNAME_OV5645_MIPI_YUV "ov5645_mipi_yuv"
@@ -349,16 +323,23 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define SENSOR_DRVNAME_OV4688_MIPI_RAW "ov4688mipiraw"
#define SENSOR_DRVNAME_OV3640_RAW "ov3640"
#define SENSOR_DRVNAME_OV3640_YUV "ov3640yuv"
+#define SENSOR_DRVNAME_OV2724_MIPI_RAW "ov2724mipiraw"
#define SENSOR_DRVNAME_OV2722_MIPI_RAW "ov2722mipiraw"
#define SENSOR_DRVNAME_OV2680_MIPI_RAW "ov2680mipiraw"
#define SENSOR_DRVNAME_OV2659_YUV "ov2659yuv"
#define SENSOR_DRVNAME_OV2655_YUV "ov2655yuv"
#define SENSOR_DRVNAME_OV2650_RAW "ov265x"
+#define SENSOR_DRVNAME_OV8856_MIPI_RAW "ov8856mipiraw"
+#define SENSOR_DRVNAME_OV8856_MIPI_RAW_SUNWIN "ov8856mipirawsunwin"
/*S5K*/
+#define SENSOR_DRVNAME_S5K2X8_MIPI_RAW "s5k2x8mipiraw"
#define SENSOR_DRVNAME_S5K2P8_MIPI_RAW "s5k2p8mipiraw"
+#define SENSOR_DRVNAME_S5K3L2_MIPI_RAW "s5k3l2mipiraw"
#define SENSOR_DRVNAME_S5K3M2_MIPI_RAW "s5k3m2mipiraw"
-#define SENSOR_DRVNAME_S5K3M2TRULY_MIPI_RAW "s5k3m2trulymipiraw"
-#define SENSOR_DRVNAME_S5K3M2SUNNY_MIPI_RAW "s5k3m2sunnymipiraw"
+#define SENSOR_DRVNAME_S5K3M2_MIPI_RAW_YD "s5k3m2mipirawyd"
+#define SENSOR_DRVNAME_S5K3M2_MIPI_RAW_SUNWIN "s5k3m2mipirawsunwin"
+#define SENSOR_DRVNAME_S5K3M2_MIPI_RAW_SEASONS "s5k3m2mipirawseasons"
+#define SENSOR_DRVNAME_S5K3M2_MIPI_RAW_QT "s5k3m2mipirawqt"
#define SENSOR_DRVNAME_S5K3H2YX_MIPI_RAW "s5k3h2yxmipiraw"
#define SENSOR_DRVNAME_S5K3H7Y_MIPI_RAW "s5k3h7ymipiraw"
#define SENSOR_DRVNAME_S5K4H5YC_MIPI_RAW "s5k4h5ycmipiraw"
@@ -366,14 +347,10 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define SENSOR_DRVNAME_S5K4ECGX_MIPI_YUV "s5k4ecgxmipiyuv"
#define SENSOR_DRVNAME_S5K5CAGX_YUV "s5k5cagxyuv"
#define SENSOR_DRVNAME_S5K4H5YX_2LANE_MIPI_RAW "s5k4h5yx2lanemipiraw"
-#define SENSOR_DRVNAME_S5K4E2GX_MIPI_RAW "s5k4e2gxmipiraw"
#define SENSOR_DRVNAME_S5K5E2YA_MIPI_RAW "s5k5e2yamipiraw"
-#define SENSOR_DRVNAME_S5K5E2YASUB_MIPI_RAW "s5k5e2yasubmipiraw"
#define SENSOR_DRVNAME_S5K8AAYX_MIPI_YUV "s5k8aayxmipiyuv"
#define SENSOR_DRVNAME_S5K8AAYX_YUV "s5k8aayxyuv"
-#define SENSOR_DRVNAME_S5K3L2_MIPI_RAW "s5k3l2mipiraw"
-#define SENSOR_DRVNAME_S5K3H5XA_MIPI_RAW "s5k3h5xamipiraw"
-#define SENSOR_DRVNAME_S5K4H5YC_MIPI_RAW_2LANE "s5k4h5ycmipiraw2lane"
+#define SENSOR_DRVNAME_S5K4H8_MIPI_RAW "s5k4h8mipiraw"
/*HI*/
#define SENSOR_DRVNAME_HI841_MIPI_RAW "hi841mipiraw"
#define SENSOR_DRVNAME_HI707_YUV "hi707yuv"
@@ -385,6 +362,7 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define SENSOR_DRVNAME_HI544_MIPI_RAW "hi544mipiraw"
#define SENSOR_DRVNAME_HI253_YUV "hi253yuv"
#define SENSOR_DRVNAME_HI191_MIPI_RAW "hi191mipiraw"
+#define SENSOR_DRVNAME_HI843B_MIPI_RAW "hi843bmipiraw"
/*MT*/
#define SENSOR_DRVNAME_MT9P012_RAW "mt9p012"
#define SENSOR_DRVNAME_MT9P015_RAW "mt9p015"
@@ -399,41 +377,24 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
/*GC*/
#define SENSOR_DRVNAME_GC2035_YUV "gc2035_yuv"
#define SENSOR_DRVNAME_GC2235_RAW "gc2235_raw"
-#define SENSOR_DRVNAME_GC2235_MIPI_RAW "gc2235mipiraw"
-#define SENSOR_DRVNAME_GC2755_MIPI_RAW "gc2755mipiraw"
#define SENSOR_DRVNAME_GC2355_MIPI_RAW "gc2355mipiraw"
-#define SENSOR_DRVNAME_GC2365_MIPI_RAW "gc2365mipiraw"
-#define SENSOR_DRVNAME_GC2355SUB_MIPI_RAW "gc2356submipiraw"
#define SENSOR_DRVNAME_GC0330_YUV "gc0330_yuv"
#define SENSOR_DRVNAME_GC0329_YUV "gc0329yuv"
#define SENSOR_DRVNAME_GC2145_MIPI_YUV "gc2145mipiyuv"
#define SENSOR_DRVNAME_GC0310_MIPI_YUV "gc0310mipiyuv"
-#define SENSOR_DRVNAME_GC0310MAIN_MIPI_YUV "gc0310mainmipiyuv"
#define SENSOR_DRVNAME_GC0310_YUV "gc0310yuv"
-#define SENSOR_DRVNAME_GC2155_MIPI_YUV "gc2155mipiyuv"
+#define SENSOR_DRVNAME_GC0312_YUV "gc0312yuv"
#define SENSOR_DRVNAME_GC0313MIPI_YUV "gc0313mipiyuv"
-#define SENSOR_DRVNAME_GC0409MIPI_RAW "gc0409mipiraw"
-#define SENSOR_DRVNAME_GC5004_MIPI_RAW "gc5004mipiraw"
-#define SENSOR_DRVNAME_GC5005_MIPI_RAW "gc5005mipiraw"
-#define SENSOR_DRVNAME_GC5005SUB_MIPI_RAW "gc5005submipiraw"
-#define SENSOR_DRVNAME_GC5024_MIPI_RAW "gc5024mipiraw"
-#define SENSOR_DRVNAME_GC8024_MIPI_RAW "gc8024mipiraw"
-#define SENSOR_DRVNAME_GC8003_MIPI_RAW "gc8003mipiraw"
+#define SENSOR_DRVNAME_GC2755_MIPI_RAW "gc2755mipiraw"
/*SP*/
#define SENSOR_DRVNAME_SP0A19_YUV "sp0a19yuv"
-#define SENSOR_DRVNAME_SP0A20_YUV "sp0a20yuv"
-#define SENSOR_DRVNAME_SP2508_MIPI_RAW "sp2508mipiraw"
-#define SENSOR_DRVNAME_SP2509_MIPI_RAW "sp2509mipiraw"
#define SENSOR_DRVNAME_SP2518_YUV "sp2518yuv"
-#define SENSOR_DRVNAME_SP5409_MIPI_RAW "sp5409_mipi_raw"
-#define SENSOR_DRVNAME_SP5409SUB_MIPI_RAW "sp5409sub_mipi_raw"
-#define SENSOR_DRVNAME_SP8408_MIPI_RAW "sp8408_mipi_raw"
+#define SENSOR_DRVNAME_SP2509_MIPI_RAW "sp2509mipiraw"
/*A*/
#define SENSOR_DRVNAME_A5141_MIPI_RAW "a5141mipiraw"
#define SENSOR_DRVNAME_A5142_MIPI_RAW "a5142mipiraw"
/*HM*/
#define SENSOR_DRVNAME_HM3451_RAW "hm3451raw"
-#define SENSOR_DRVNAME_HM5040_MIPI_RAW "hm5040mipiraw"
/*AR*/
#define SENSOR_DRVNAME_AR0833_MIPI_RAW "ar0833mipiraw"
/*SIV*/
@@ -450,7 +411,7 @@ NSFeature : : RAWSensorInfo < _id > : : getFlickerPara \
#define SENSOR_DRVNAME_T8EV5_YUV "t8ev5_yuv"
/*Test*/
#define SENSOR_DRVNAME_IMX135_MIPI_RAW_5MP "imx135mipiraw5mp"
-
+#define SENSOR_DRVNAME_S5K4H5YC_MIPI_RAW_DL "s5k4h5ycmipiraw_dl"
/*******************************************************************************
*
********************************************************************************/
diff --git a/kernel-headers/kd_imgsensor_define.h b/kernel-headers/kd_imgsensor_define.h
index 8eab108..08ae053 100644
--- a/kernel-headers/kd_imgsensor_define.h
+++ b/kernel-headers/kd_imgsensor_define.h
@@ -713,6 +713,7 @@ typedef struct {
MUINT32 i4SubBlkH; /* sub block height */
MUINT32 i4PosL[16][2]; /* left pd pixel position in one block*/
MUINT32 i4PosR[16][2]; /* right pd pixel position in one block*/
+ MUINT32 iMirrorFlip; /* 0:IMAGE_NORMAL,1:IMAGE_H_MIRROR,2:IMAGE_V_MIRROR,3:IMAGE_HV_MIRROR*/
} SET_PD_BLOCK_INFO_T, *PSET_PD_BLOCK_INFO_T;
diff --git a/kernel-headers/linux/hwmsensor.h b/kernel-headers/linux/hwmsensor.h
index c14611d..c14611d 100644..100755
--- a/kernel-headers/linux/hwmsensor.h
+++ b/kernel-headers/linux/hwmsensor.h
diff --git a/kernel-headers/mt_smi.h b/kernel-headers/mt_smi.h
new file mode 100644
index 0000000..83fc921
--- /dev/null
+++ b/kernel-headers/mt_smi.h
@@ -0,0 +1,190 @@
+#ifndef _MTK_SMI_H_
+#define _MTK_SMI_H_
+
+#define MTK_SMI_MAJOR_NUMBER 190
+
+#define MTK_IOW(num, dtype) _IOW('O', num, dtype)
+#define MTK_IOR(num, dtype) _IOR('O', num, dtype)
+#define MTK_IOWR(num, dtype) _IOWR('O', num, dtype)
+#define MTK_IO(num) _IO('O', num)
+
+/* -------------------------------------------------------------------------- */
+#define MTK_CONFIG_MM_MAU MTK_IOW(10, unsigned long)
+
+
+typedef struct {
+ int larb; /* 0~4: the larb you want to monitor */
+ int entry; /* 0~2: the mau entry to use */
+ unsigned int port_msk; /* port mask to be monitored */
+ int virt; /* 1: monitor va (this port is using m4u); */
+ /* 0: monitor pa (this port is not using m4u) */
+ int monitor_read; /* monitor read transaction 1-enable, 0-disable */
+ int monitor_write; /* monitor write transaction 1-enable, 0-disable */
+ unsigned int start; /* start address to monitor */
+ unsigned int end; /* end address to monitor */
+} MTK_MAU_CONFIG;
+
+
+int mau_config(MTK_MAU_CONFIG* pMauConf);
+int mau_dump_status(int larb);
+
+
+/* --------------------------------------------------------------------------- */
+typedef enum {
+ SMI_BWC_SCEN_NORMAL,
+ SMI_BWC_SCEN_VR,
+ SMI_BWC_SCEN_SWDEC_VP,
+ SMI_BWC_SCEN_VP,
+ SMI_BWC_SCEN_VR_SLOW,
+ SMI_BWC_SCEN_MM_GPU,
+ SMI_BWC_SCEN_WFD,
+ SMI_BWC_SCEN_VENC,
+ SMI_BWC_SCEN_ICFP,
+ SMI_BWC_SCEN_UI_IDLE,
+ SMI_BWC_SCEN_VSS,
+ SMI_BWC_SCEN_FORCE_MMDVFS,
+ SMI_BWC_SCEN_CNT
+} MTK_SMI_BWC_SCEN;
+
+/* MMDVFS */
+typedef enum {
+ MMDVFS_VOLTAGE_DEFAULT,
+ MMDVFS_VOLTAGE_0 = MMDVFS_VOLTAGE_DEFAULT,
+ MMDVFS_VOLTAGE_LOW = MMDVFS_VOLTAGE_0,
+ MMDVFS_VOLTAGE_1,
+ MMDVFS_VOLTAGE_HIGH = MMDVFS_VOLTAGE_1,
+ MMDVFS_VOLTAGE_DEFAULT_STEP,
+ MMDVFS_VOLTAGE_COUNT
+} mmdvfs_voltage_enum;
+
+typedef struct {
+ int scenario;
+ int b_on_off; /* 0 : exit this scenario , 1 : enter this scenario */
+} MTK_SMI_BWC_CONFIG;
+
+typedef struct
+{
+ unsigned int* hwc_max_pixel; //0 : exit this scenario , 1 : enter this scenario
+} MTK_SMI_BWC_STATE;
+
+typedef struct {
+ unsigned int address;
+ unsigned int value;
+} MTK_SMI_BWC_REGISTER_SET;
+
+typedef struct {
+ unsigned int address;
+ unsigned int *return_address;
+} MTK_SMI_BWC_REGISTER_GET;
+
+#define MMDVFS_CAMERA_MODE_FLAG_DEFAULT 1
+#define MMDVFS_CAMERA_MODE_FLAG_PIP (1 << 1)
+#define MMDVFS_CAMERA_MODE_FLAG_VFB (1 << 2)
+#define MMDVFS_CAMERA_MODE_FLAG_EIS_2_0 (1 << 3)
+#define MMDVFS_CAMERA_MODE_FLAG_IVHDR (1 << 4)
+#define MMDVFS_CAMERA_MODE_FLAG_STEREO (1 << 5)
+
+typedef struct {
+ unsigned int type;
+ MTK_SMI_BWC_SCEN scen;
+
+ unsigned int sensor_size;
+ unsigned int sensor_fps;
+ unsigned int camera_mode;
+
+ unsigned int venc_size;
+
+ unsigned int ret;
+} MTK_MMDVFS_CMD;
+
+#define MTK_MMDVFS_CMD_TYPE_SET 0
+#define MTK_MMDVFS_CMD_TYPE_QUERY 1
+
+typedef enum {
+ SMI_BWC_INFO_CON_PROFILE = 0,
+ SMI_BWC_INFO_SENSOR_SIZE,
+ SMI_BWC_INFO_VIDEO_RECORD_SIZE,
+ SMI_BWC_INFO_DISP_SIZE,
+ SMI_BWC_INFO_TV_OUT_SIZE,
+ SMI_BWC_INFO_FPS,
+ SMI_BWC_INFO_VIDEO_ENCODE_CODEC,
+ SMI_BWC_INFO_VIDEO_DECODE_CODEC,
+ SMI_BWC_INFO_HW_OVL_LIMIT,
+ SMI_BWC_INFO_CNT
+} MTK_SMI_BWC_INFO_ID;
+
+typedef struct {
+ int property;
+ int value1;
+ int value2;
+} MTK_SMI_BWC_INFO_SET;
+
+
+typedef struct {
+ unsigned int flag; /* Reserved */
+ int concurrent_profile;
+ int sensor_size[2];
+ int video_record_size[2];
+ int display_size[2];
+ int tv_out_size[2];
+ int fps;
+ int video_encode_codec;
+ int video_decode_codec;
+ int hw_ovl_limit;
+} MTK_SMI_BWC_MM_INFO;
+
+
+#define MTK_IOC_SPC_CONFIG MTK_IOW(20, unsigned long)
+#define MTK_IOC_SPC_DUMP_REG MTK_IOW(21, unsigned long)
+#define MTK_IOC_SPC_DUMP_STA MTK_IOW(22, unsigned long)
+#define MTK_IOC_SPC_CMD MTK_IOW(23, unsigned long)
+#define MTK_IOC_SMI_BWC_CONFIG MTK_IOW(24, MTK_SMI_BWC_CONFIG)
+#define MTK_IOC_SMI_BWC_STATE MTK_IOWR(25, MTK_SMI_BWC_STATE)
+#define MTK_IOC_SMI_BWC_REGISTER_SET MTK_IOWR(26, MTK_SMI_BWC_REGISTER_SET)
+#define MTK_IOC_SMI_BWC_REGISTER_GET MTK_IOWR(27, MTK_SMI_BWC_REGISTER_GET)
+
+/* For BWC.MM property setting */
+#define MTK_IOC_SMI_BWC_INFO_SET MTK_IOWR(28, MTK_SMI_BWC_INFO_SET)
+/* For BWC.MM property get */
+#define MTK_IOC_SMI_BWC_INFO_GET MTK_IOWR(29, MTK_SMI_BWC_MM_INFO)
+
+/* GMP end */
+
+#define MTK_IOC_SMI_DUMP_LARB MTK_IOWR(66, unsigned int)
+#define MTK_IOC_SMI_DUMP_COMMON MTK_IOWR(67, unsigned int)
+#define MTK_IOC_MMDVFS_CMD MTK_IOW(88, MTK_MMDVFS_CMD)
+
+
+typedef enum {
+ SPC_PROT_NO_PROT = 0,
+ SPC_PROT_SEC_RW_ONLY,
+ SPC_PROT_SEC_RW_NONSEC_R,
+ SPC_PROT_NO_ACCESS,
+
+}SPC_PROT_T;
+
+
+typedef struct {
+ SPC_PROT_T domain_0_prot;
+ SPC_PROT_T domain_1_prot;
+ SPC_PROT_T domain_2_prot;
+ SPC_PROT_T domain_3_prot;
+ unsigned int start; /* start address to monitor */
+ unsigned int end; /* end address to monitor */
+} MTK_SPC_CONFIG;
+
+void spc_config(MTK_SPC_CONFIG* pCfg);
+unsigned int spc_status_check(void);
+unsigned int spc_dump_reg(void);
+unsigned int spc_register_isr(void* dev);
+unsigned int spc_clear_irq(void);
+int spc_test(int code);
+int MTK_SPC_Init(void* dev);
+
+#define MMDVFS_ENABLE_DEFAULT_STEP_QUERY
+#define MMDVFS_MMCLOCK_NOTIFICATION
+/* MMDVFS kernel API */
+extern int mmdvfs_set_step(MTK_SMI_BWC_SCEN scenario, mmdvfs_voltage_enum step);
+extern int mmdvfs_is_default_step_need_perf(void);
+extern void mmdvfs_mm_clock_switch_notify(int is_before, int is_to_high);
+#endif
diff --git a/kernel-headers/val_api_private.h b/kernel-headers/val_api_private.h
index 4e41082..4e41082 100644..100755
--- a/kernel-headers/val_api_private.h
+++ b/kernel-headers/val_api_private.h
diff --git a/kernel-headers/val_api_public.h b/kernel-headers/val_api_public.h
index 9af8887..9af8887 100644..100755
--- a/kernel-headers/val_api_public.h
+++ b/kernel-headers/val_api_public.h
diff --git a/kernel-headers/val_oal.h b/kernel-headers/val_oal.h
index 56f7711..56f7711 100644..100755
--- a/kernel-headers/val_oal.h
+++ b/kernel-headers/val_oal.h
diff --git a/kernel-headers/val_types_private.h b/kernel-headers/val_types_private.h
index 0675703..0675703 100644..100755
--- a/kernel-headers/val_types_private.h
+++ b/kernel-headers/val_types_private.h
diff --git a/kernel-headers/val_types_public.h b/kernel-headers/val_types_public.h
index ed407ac..d84acfd 100644
--- a/kernel-headers/val_types_public.h
+++ b/kernel-headers/val_types_public.h
@@ -152,6 +152,7 @@ typedef enum _VAL_DRIVER_TYPE_T {
VAL_DRIVER_TYPE_HEVC_ENC, /* /< HEVC encoder */
VAL_DRIVER_TYPE_HEVC_DEC, /* /< HEVC decoder */
VAL_DRIVER_TYPE_H264_ENC_LIVEPHOTO, /* LivePhoto type */
+ VAL_DRIVER_TYPE_MMDVFS, /* /< MMDVFS */
VAL_DRIVER_TYPE_MAX = 0xFFFFFFFF /* /< Max driver type */
} VAL_DRIVER_TYPE_T;
diff --git a/kernel-headers/vcodec_OAL_v2.h b/kernel-headers/vcodec_OAL_v2.h
index fa4ef40..fa4ef40 100644..100755
--- a/kernel-headers/vcodec_OAL_v2.h
+++ b/kernel-headers/vcodec_OAL_v2.h
diff --git a/kernel-headers/vcodec_if_v2.h b/kernel-headers/vcodec_if_v2.h
index 72f1bcd..72f1bcd 100644..100755
--- a/kernel-headers/vcodec_if_v2.h
+++ b/kernel-headers/vcodec_if_v2.h
diff --git a/kernel-headers/vcodec_log.h b/kernel-headers/vcodec_log.h
index ac4abf1..ac4abf1 100644..100755
--- a/kernel-headers/vcodec_log.h
+++ b/kernel-headers/vcodec_log.h
diff --git a/kernel-headers/vdec_drv_if_private.h b/kernel-headers/vdec_drv_if_private.h
index 4e27516..4e27516 100644..100755
--- a/kernel-headers/vdec_drv_if_private.h
+++ b/kernel-headers/vdec_drv_if_private.h
diff --git a/kernel-headers/vdec_drv_if_public.h b/kernel-headers/vdec_drv_if_public.h
index 8a141a3..8a141a3 100644..100755
--- a/kernel-headers/vdec_drv_if_public.h
+++ b/kernel-headers/vdec_drv_if_public.h
diff --git a/kernel-headers/venc_drv_base.h b/kernel-headers/venc_drv_base.h
index ff02e7b..ff02e7b 100644..100755
--- a/kernel-headers/venc_drv_base.h
+++ b/kernel-headers/venc_drv_base.h
diff --git a/kernel-headers/venc_drv_if_private.h b/kernel-headers/venc_drv_if_private.h
index 4cff833..7ca9481 100644..100755
--- a/kernel-headers/venc_drv_if_private.h
+++ b/kernel-headers/venc_drv_if_private.h
@@ -106,6 +106,7 @@ typedef struct __VENC_HYB_ENCSETTING {
VAL_BOOL_T fgUseMCI;
VAL_UINT32_T u4VEncThreadNum;
VAL_UINT32_T u4LivePhoto;
+ VAL_UINT32_T u4ViLTE;
} VENC_HYBRID_ENCSETTING;
diff --git a/kernel-headers/venc_drv_if_public.h b/kernel-headers/venc_drv_if_public.h
index 7035dde..f99d109 100644
--- a/kernel-headers/venc_drv_if_public.h
+++ b/kernel-headers/venc_drv_if_public.h
@@ -343,6 +343,7 @@ typedef enum __VENC_DRV_SET_TYPE_T {
VENC_DRV_SET_TYPE_SLOW_MOTION_UNLOCK_HW, /* /< Set to Slow Motion Video Recording for UnLock HW */
VENC_DRV_SET_TYPE_NONREFP, /* /< Set Enable/Disable Non reference P frame */
VENC_DRV_SET_TYPE_CONFIG_QP, /* /< Set init QP */
+ VENC_DRV_SET_TYPE_RFS_ON,
VENC_DRV_SET_TYPE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_SET_TYPE_T value */
} VENC_DRV_SET_TYPE_T;
@@ -397,6 +398,7 @@ typedef enum __VENC_DRV_SCENARIO_T {
VENC_DRV_SCENARIO_LIVEPHOTO_EFFECT = (1 << 2), /* /< LivePhoto effect transcoding */
VENC_DRV_SCENARIO_CAMERA_REC_SLOW_MOTION = (1 << 3), /* /< Camera recording with slow motion */
VENC_DRV_SCENARIO_SCREEN_REC = (1 << 4), /* /< Screen recording */
+ VENC_DRV_SCENARIO_VILTE_REC = (1 << 5), /* /< VILTE recording */
} VENC_DRV_SCENARIO_T;
diff --git a/kernel-headers/videocodec_kernel_driver.h b/kernel-headers/videocodec_kernel_driver.h
new file mode 100644
index 0000000..7eec0db
--- /dev/null
+++ b/kernel-headers/videocodec_kernel_driver.h
@@ -0,0 +1,47 @@
+#ifndef __MT6589_VCODEC_H__
+#define __MT6589_VCODEC_H__
+
+#define MFV_IOC_MAGIC 'M'
+
+//below is control message
+#define MFV_TEST_CMD _IO(MFV_IOC_MAGIC, 0x00)
+#define MFV_INIT_CMD _IO(MFV_IOC_MAGIC, 0x01)
+#define MFV_DEINIT_CMD _IO(MFV_IOC_MAGIC, 0x02)
+#define MFV_SET_CMD_CMD _IOW(MFV_IOC_MAGIC, 0x03, unsigned int) //P_MFV_DRV_CMD_QUEUE_T
+#define MFV_SET_PWR_CMD _IOW(MFV_IOC_MAGIC, 0x04, unsigned int) //HAL_POWER_T *
+#define MFV_SET_ISR_CMD _IOW(MFV_IOC_MAGIC, 0x05, unsigned int) //HAL_ISR_T *
+#define MFV_ALLOC_MEM_CMD _IOW(MFV_IOC_MAGIC, 0x06, unsigned int)
+#define MFV_FREE_MEM_CMD _IOW(MFV_IOC_MAGIC, 0x07, unsigned int)
+#define MFV_MAKE_PMEM_TO_NONCACHED _IOW(MFV_IOC_MAGIC, 0x08, unsigned int) //unsigned int*
+#define MFV_ALLOC_INT_MEM_CMD _IOW(MFV_IOC_MAGIC, 0x09, unsigned int) //VAL_INTMEM_T*
+#define MFV_FREE_INT_MEM_CMD _IOW(MFV_IOC_MAGIC, 0x0a, unsigned int)//VAL_INTMEM_T*
+#define VCODEC_WAITISR _IOW(MFV_IOC_MAGIC, 0x0b, unsigned int)//HAL_POWER_T *
+#define VCODEC_LOCKHW _IOW(MFV_IOC_MAGIC, 0x0d, unsigned int)//VAL_HW_LOCK_T *
+#define VCODEC_PMEM_FLUSH _IOW(MFV_IOC_MAGIC, 0x10, unsigned int)//HAL_POWER_T *
+#define VCODEC_PMEM_CLEAN _IOW(MFV_IOC_MAGIC, 0x11, unsigned int)//HAL_POWER_T *
+#define VCODEC_INC_SYSRAM_USER _IOW(MFV_IOC_MAGIC, 0x13, unsigned int)//VAL_UINT32_T *
+#define VCODEC_DEC_SYSRAM_USER _IOW(MFV_IOC_MAGIC, 0x14, unsigned int)//VAL_UINT32_T *
+#define VCODEC_INC_ENC_EMI_USER _IOW(MFV_IOC_MAGIC, 0x15, unsigned int)//VAL_UINT32_T *
+#define VCODEC_DEC_ENC_EMI_USER _IOW(MFV_IOC_MAGIC, 0x16, unsigned int)//VAL_UINT32_T *
+#define VCODEC_INC_DEC_EMI_USER _IOW(MFV_IOC_MAGIC, 0x17, unsigned int)//VAL_UINT32_T *
+#define VCODEC_DEC_DEC_EMI_USER _IOW(MFV_IOC_MAGIC, 0x18, unsigned int)//VAL_UINT32_T *
+#define VCODEC_INITHWLOCK _IOW(MFV_IOC_MAGIC, 0x20, unsigned int)//VAL_VCODEC_OAL_HW_REGISTER_T *
+#define VCODEC_DEINITHWLOCK _IOW(MFV_IOC_MAGIC, 0x21, unsigned int)//VAL_VCODEC_OAL_HW_REGISTER_T *
+#define VCODEC_ALLOC_NON_CACHE_BUFFER _IOW(MFV_IOC_MAGIC, 0x22, unsigned int)//VAL_MEMORY_T *
+#define VCODEC_FREE_NON_CACHE_BUFFER _IOW(MFV_IOC_MAGIC, 0x23, unsigned int)//VAL_MEMORY_T *
+#define VCODEC_SET_THREAD_ID _IOW(MFV_IOC_MAGIC, 0x24, unsigned int)//VAL_VCODEC_THREAD_ID_T *
+#define VCODEC_SET_SYSRAM_INFO _IOW(MFV_IOC_MAGIC, 0x25, unsigned int)//VAL_INTMEM_T *
+#define VCODEC_GET_SYSRAM_INFO _IOW(MFV_IOC_MAGIC, 0x26, unsigned int)//VAL_INTMEM_T *
+#define VCODEC_INC_PWR_USER _IOW(MFV_IOC_MAGIC, 0x27, unsigned int)//HAL_POWER_T *
+#define VCODEC_DEC_PWR_USER _IOW(MFV_IOC_MAGIC, 0x28, unsigned int)//HAL_POWER_T *
+#define VCODEC_GET_CPU_LOADING_INFO _IOW(MFV_IOC_MAGIC, 0x29, unsigned int)//VAL_VCODEC_CPU_LOADING_INFO_T *
+#define VCODEC_GET_CORE_LOADING _IOW(MFV_IOC_MAGIC, 0x30, unsigned int)//VAL_VCODEC_CORE_LOADING_T *
+#define VCODEC_GET_CORE_NUMBER _IOW(MFV_IOC_MAGIC, 0x31, unsigned int)//int *
+#define VCODEC_SET_CPU_OPP_LIMIT _IOW(MFV_IOC_MAGIC, 0x32, unsigned int)//VAL_VCODEC_CPU_OPP_LIMIT_T *
+#define VCODEC_UNLOCKHW _IOW(MFV_IOC_MAGIC, 0x33, unsigned int)//VAL_HW_LOCK_T *
+#define VCODEC_MB _IOW(MFV_IOC_MAGIC, 0x34, unsigned int)//VAL_UINT32_T *
+
+
+//#define MFV_GET_CACHECTRLADDR_CMD _IOR(MFV_IOC_MAGIC, 0x06, int)
+
+#endif //__MT6589_MFLEXVIDEO_H__