| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- #ifndef __DDP_DRV_H__
- #define __DDP_DRV_H__
- #include <linux/ioctl.h>
- #include "ddp_hal.h"
- #include "ddp_aal.h"
- #include "ddp_gamma.h"
- #include "disp_event.h"
- #include "DpDataType.h"
- #ifndef CONFIG_MTK_CLKMGR
- #include <linux/clk.h>
- #endif
- 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;
- DpColorFormat 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;
- struct device *disp_get_device(void);
- #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)
- /* secure video path implementation: the handle value */
- #define DISP_IOCTL_SET_TPLAY_HANDLE _IOW(DISP_IOCTL_MAGIC, 200, unsigned int)
- #ifndef CONFIG_MTK_CLKMGR
- typedef enum disp_clk_id {
- DISP0_SMI_COMMON = 0,
- DISP0_SMI_LARB0,
- DISP0_DISP_OVL0,
- DISP0_DISP_RDMA0,
- DISP0_DISP_RDMA1,
- DISP0_DISP_WDMA0,
- DISP0_DISP_COLOR,
- DISP0_DISP_CCORR,
- DISP0_DISP_AAL,
- DISP0_DISP_GAMMA,
- DISP0_DISP_DITHER,
- DISP1_DSI_ENGINE,
- DISP1_DSI_DIGITAL,
- DISP1_DPI_ENGINE,
- DISP1_DPI_PIXEL,
- DISP_PWM,
- MUX_DPI0,
- TVDPLL,
- TVDPLL_CK,
- TVDPLL_D2,
- TVDPLL_D4,
- DPI_CK,
- MUX_PWM,
- UNIVPLL2_D4,
- SYSPLL4_D2_D8,
- SYS_26M_CK,
- DISP_MTCMOS_CLK,
- MAX_DISP_CLK_CNT
- } eDDP_CLK_ID;
- int ddp_clk_prepare(eDDP_CLK_ID id);
- int ddp_clk_unprepare(eDDP_CLK_ID id);
- int ddp_clk_enable(eDDP_CLK_ID id);
- int ddp_clk_disable(eDDP_CLK_ID id);
- int ddp_clk_prepare_enable(eDDP_CLK_ID id);
- int ddp_clk_disable_unprepare(eDDP_CLK_ID id);
- int ddp_clk_set_parent(eDDP_CLK_ID id, eDDP_CLK_ID parent);
- int ddp_clk_set_rate(eDDP_CLK_ID id, unsigned long rate);
- #endif
- extern unsigned int dispsys_irq[DISP_REG_NUM];
- extern unsigned long dispsys_reg[DISP_REG_NUM];
- extern void disp_m4u_tf_disable(void);
- /* TODO: FIXME */
- #include <linux/types.h>
- #include "disp_drv_platform.h"
- #ifndef DISP_NO_DPI
- #include "ddp_dpi_reg.h"
- extern struct DPI_REGS *DPI_REG;
- extern unsigned long DPI_TVDPLL_CON0;
- extern unsigned long DPI_TVDPLL_CON1;
- #endif
- extern int m4u_enable_tf(int port, bool fgenable);
- #endif
|