From 1312d9840800cad1981f3514589065c9c44c21fb Mon Sep 17 00:00:00 2001 From: Evoke Zhang Date: Thu, 25 Oct 2018 15:21:19 +0800 Subject: [PATCH] backlight: add support for tl1 [1/1] PD#172587 Problem: do not suppoert for tl1 Solution: add backlight support for fl1 Verify: verified on PTM Change-Id: I052a7ef93ec9cb21a544e4823a4c9a339d38b5f9 Signed-off-by: Evoke Zhang --- drivers/amlogic/media/vout/backlight/aml_bl.c | 20 +- .../media/vout/backlight/aml_ldim/ldim_drv.c | 430 +++++---------------- .../media/vout/backlight/aml_ldim/ldim_drv.h | 7 + .../media/vout/backlight/aml_ldim/ldim_func.c | 359 +---------------- include/linux/amlogic/media/vout/lcd/aml_bl.h | 6 +- 5 files changed, 136 insertions(+), 686 deletions(-) diff --git a/drivers/amlogic/media/vout/backlight/aml_bl.c b/drivers/amlogic/media/vout/backlight/aml_bl.c index fe21e9c..a7286d4 100644 --- a/drivers/amlogic/media/vout/backlight/aml_bl.c +++ b/drivers/amlogic/media/vout/backlight/aml_bl.c @@ -3183,12 +3183,6 @@ static int aml_bl_resume(struct platform_device *pdev) #endif #ifdef CONFIG_OF -static struct bl_data_s bl_data_gxtvbb = { - .chip_type = BL_CHIP_GXTVBB, - .chip_name = "gxtvbb", - .pwm_reg = pwm_reg_txl, -}; - static struct bl_data_s bl_data_gxl = { .chip_type = BL_CHIP_GXL, .chip_name = "gxl", @@ -3231,12 +3225,14 @@ static struct bl_data_s bl_data_g12b = { .pwm_reg = pwm_reg_txlx, }; +static struct bl_data_s bl_data_tl1 = { + .chip_type = BL_CHIP_TL1, + .chip_name = "tl1", + .pwm_reg = pwm_reg_txlx, +}; + static const struct of_device_id bl_dt_match_table[] = { { - .compatible = "amlogic, backlight-gxtvbb", - .data = &bl_data_gxtvbb, - }, - { .compatible = "amlogic, backlight-gxl", .data = &bl_data_gxl, }, @@ -3264,6 +3260,10 @@ static const struct of_device_id bl_dt_match_table[] = { .compatible = "amlogic, backlight-g12b", .data = &bl_data_g12b, }, + { + .compatible = "amlogic, backlight-tl1", + .data = &bl_data_tl1, + }, {}, }; #endif diff --git a/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_drv.c b/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_drv.c index e4d4b67..a1e0748 100644 --- a/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_drv.c +++ b/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_drv.c @@ -59,6 +59,9 @@ const char ldim_dev_id[] = "ldim-dev"; unsigned char ldim_debug_print; struct ldim_dev_s { + struct aml_ldim_func_s *ldim_func; + struct ldim_param_s *ldim_db_para; + struct cdev cdev; struct device *dev; dev_t aml_ldim_devno; @@ -66,7 +69,6 @@ struct ldim_dev_s { struct cdev *aml_ldim_cdevp; }; static struct ldim_dev_s ldim_dev; -static struct ldim_param_s *ldim_db_para; static struct LDReg_s nPRM; static struct FW_DAT_s FDat; static struct ldim_fw_para_s ldim_fw_para; @@ -96,7 +98,6 @@ static struct work_struct ldim_on_vs_work; static struct work_struct ldim_off_vs_work; static unsigned int ldim_irq_cnt; -static unsigned int rdma_ldim_irq_cnt; /*BL_matrix remap curve*/ static unsigned int bl_remap_curve[16] = { @@ -128,9 +129,6 @@ static unsigned int ldim_top_en; module_param(ldim_top_en, uint, 0664); MODULE_PARM_DESC(ldim_top_en, "ldim_top_en"); -static void ldim_on_vs_brightness(void); -static void ldim_off_vs_brightness(void); -static void ldim_on_vs_arithmetic(void); static void ldim_dump_histgram(void); static void ldim_get_matrix_info_max_rgb(void); @@ -144,18 +142,6 @@ static struct ldim_config_s ldim_config = { .hvcnt_bypass = 0, }; -static void ldim_on_update_brightness(struct work_struct *work) -{ - ldim_stts_read_region(ldim_hist_row, ldim_hist_col); - ldim_on_vs_arithmetic(); - ldim_on_vs_brightness(); -} - -static void ldim_off_update_brightness(struct work_struct *work) -{ - ldim_off_vs_brightness(); -} - static void ldim_db_para_print(struct LDReg_s *mLDReg) { int i, len; @@ -276,58 +262,64 @@ static void ldim_db_para_print(struct LDReg_s *mLDReg) } static void ldim_db_load_update(struct LDReg_s *mLDReg, - struct ldim_param_s *db_pare) + struct ldim_param_s *db_para) { int i; - if (db_pare == NULL) + if (db_para == NULL) return; LDIMPR("ldim_db_load_update\n"); /* beam model */ - ldim_fw_para.rgb_base = db_pare->rgb_base; - ldim_fw_para.boost_gain = db_pare->boost_gain; - ldim_fw_para.lpf_res = db_pare->lpf_res; - ldim_fw_para.fw_LD_ThSF_l = db_pare->fw_ld_th_sf; + ldim_fw_para.rgb_base = db_para->rgb_base; + ldim_fw_para.boost_gain = db_para->boost_gain; + ldim_fw_para.lpf_res = db_para->lpf_res; + ldim_fw_para.fw_LD_ThSF_l = db_para->fw_ld_th_sf; /* beam curve */ - mLDReg->reg_LD_Vgain = db_pare->ld_vgain; - mLDReg->reg_LD_Hgain = db_pare->ld_hgain; - mLDReg->reg_LD_Litgain = db_pare->ld_litgain; + mLDReg->reg_LD_Vgain = db_para->ld_vgain; + mLDReg->reg_LD_Hgain = db_para->ld_hgain; + mLDReg->reg_LD_Litgain = db_para->ld_litgain; - mLDReg->reg_LD_LUT_Vdg_LEXT = db_pare->ld_lut_vdg_lext; - mLDReg->reg_LD_LUT_Hdg_LEXT = db_pare->ld_lut_hdg_lext; - mLDReg->reg_LD_LUT_VHk_LEXT = db_pare->ld_lut_vhk_lext; + mLDReg->reg_LD_LUT_Vdg_LEXT = db_para->ld_lut_vdg_lext; + mLDReg->reg_LD_LUT_Hdg_LEXT = db_para->ld_lut_hdg_lext; + mLDReg->reg_LD_LUT_VHk_LEXT = db_para->ld_lut_vhk_lext; for (i = 0; i < 32; i++) { - mLDReg->reg_LD_LUT_Hdg[i] = db_pare->ld_lut_hdg[i]; - mLDReg->reg_LD_LUT_Vdg[i] = db_pare->ld_lut_vdg[i]; - mLDReg->reg_LD_LUT_VHk[i] = db_pare->ld_lut_vhk[i]; + mLDReg->reg_LD_LUT_Hdg[i] = db_para->ld_lut_hdg[i]; + mLDReg->reg_LD_LUT_Vdg[i] = db_para->ld_lut_vdg[i]; + mLDReg->reg_LD_LUT_VHk[i] = db_para->ld_lut_vhk[i]; } /* beam shape minor adjustment */ for (i = 0; i < 32; i++) { - mLDReg->reg_LD_LUT_VHk_pos[i] = db_pare->ld_lut_vhk_pos[i]; - mLDReg->reg_LD_LUT_VHk_neg[i] = db_pare->ld_lut_vhk_neg[i]; - mLDReg->reg_LD_LUT_HHk[i] = db_pare->ld_lut_hhk[i]; - mLDReg->reg_LD_LUT_VHo_pos[i] = db_pare->ld_lut_vho_pos[i]; - mLDReg->reg_LD_LUT_VHo_neg[i] = db_pare->ld_lut_vho_neg[i]; + mLDReg->reg_LD_LUT_VHk_pos[i] = db_para->ld_lut_vhk_pos[i]; + mLDReg->reg_LD_LUT_VHk_neg[i] = db_para->ld_lut_vhk_neg[i]; + mLDReg->reg_LD_LUT_HHk[i] = db_para->ld_lut_hhk[i]; + mLDReg->reg_LD_LUT_VHo_pos[i] = db_para->ld_lut_vho_pos[i]; + mLDReg->reg_LD_LUT_VHo_neg[i] = db_para->ld_lut_vho_neg[i]; } /* remapping */ - /*db_pare->lit_idx_th;*/ - /*db_pare->comp_gain;*/ + /*db_para->lit_idx_th;*/ + /*db_para->comp_gain;*/ if (db_print_flag == 1) ldim_db_para_print(mLDReg); } +static void ldim_stts_initial_txlx(unsigned int resolution) +{ + Wr_reg(LDIM_STTS_CTRL0, 7 << 2); + ldim_set_matrix_ycbcr2rgb(); + ldim_stts_en(resolution, 0, 0, 1, 1, 1, 0); +} + static void ldim_stts_initial(unsigned int pic_h, unsigned int pic_v, unsigned int BLK_Vnum, unsigned int BLK_Hnum) { unsigned int resolution, resolution_region, blk_height, blk_width; unsigned int row_start, col_start; - struct aml_bl_drv_s *bl_drv = aml_bl_get_driver(); BLK_Vnum = (BLK_Vnum == 0) ? 1 : BLK_Vnum; BLK_Hnum = (BLK_Hnum == 0) ? 1 : BLK_Hnum; @@ -339,21 +331,12 @@ static void ldim_stts_initial(unsigned int pic_h, unsigned int pic_v, resolution = (((pic_h - 1) & 0xffff) << 16) | ((pic_v - 1) & 0xffff); /*Wr_reg(VDIN0_HIST_CTRL, 0x10d);*/ - switch (bl_drv->data->chip_type) { - case BL_CHIP_TXLX: - Wr_reg(LDIM_STTS_CTRL0, 7 << 2); - ldim_set_matrix_ycbcr2rgb(); - ldim_stts_en(resolution, 0, 0, 1, 1, 1, 0); - break; - case BL_CHIP_GXTVBB: - Wr_reg(LDIM_STTS_CTRL0, 3 << 3);/*4 mux to vpp_dout*/ - ldim_set_matrix_ycbcr2rgb(); - /*ldim_set_matrix_rgb2ycbcr(0);*/ - ldim_stts_en(resolution, 0, 0, 1, 1, 1, 0); - break; - default: - break; + if (ldim_dev.ldim_func == NULL) { + LDIMERR("%s: invalid ldim_func\n", __func__); + return; } + if (ldim_dev.ldim_func->stts_init) + ldim_dev.ldim_func->stts_init(resolution); resolution_region = 0; @@ -365,155 +348,6 @@ static void ldim_stts_initial(unsigned int pic_h, unsigned int pic_v, row_start, col_start, BLK_Hnum); } -static void LDIM_Initial_GXTVBB(unsigned int ldim_bl_en, - unsigned int ldim_hvcnt_bypass) -{ - unsigned int i, j, k; - unsigned int data; - unsigned int *arrayTmp; - - arrayTmp = kcalloc(1536, sizeof(unsigned int), GFP_KERNEL); - if (arrayTmp == NULL) { - LDIMERR("%s malloc error\n", __func__); - return; - } - - data = LDIM_RD_32Bits(REG_LD_MISC_CTRL0); - data = data & (~(3<<4)); - LDIM_WR_32Bits(REG_LD_MISC_CTRL0, data); - /*change here: gBLK_Hidx_LUT: s14*19 */ - LDIM_WR_BASE_LUT(REG_LD_BLK_HIDX_BASE, - nPRM.reg_LD_BLK_Hidx, 16, LD_BLK_LEN_H); - /* change here: gBLK_Vidx_LUT: s14*19 */ - LDIM_WR_BASE_LUT(REG_LD_BLK_VIDX_BASE, - nPRM.reg_LD_BLK_Vidx, 16, LD_BLK_LEN_V); - /* change here: gHDG_LUT: u10*32 */ - LDIM_WR_BASE_LUT(REG_LD_LUT_HDG_BASE, - nPRM.reg_LD_LUT_Hdg, 16, LD_LUT_LEN); - /* change here: gVDG_LUT: u10*32 */ - LDIM_WR_BASE_LUT(REG_LD_LUT_VDG_BASE, - nPRM.reg_LD_LUT_Vdg, 16, LD_LUT_LEN); - /* change here: gVHk_LUT: u10*32 */ - LDIM_WR_BASE_LUT(REG_LD_LUT_VHK_BASE, - nPRM.reg_LD_LUT_VHk, 16, LD_LUT_LEN); - /* reg_LD_LUT_VHk_pos[32]/reg_LD_LUT_VHk_neg[32]: u8 */ - for (i = 0; i < 32; i++) - arrayTmp[i] = nPRM.reg_LD_LUT_VHk_pos[i]; - for (i = 0; i < 32; i++) - arrayTmp[32+i] = nPRM.reg_LD_LUT_VHk_neg[i]; - LDIM_WR_BASE_LUT(REG_LD_LUT_VHK_NEGPOS_BASE, arrayTmp, 8, 64); - /* reg_LD_LUT_VHo_pos[32]/reg_LD_LUT_VHo_neg[32]: s8 */ - for (i = 0; i < 32; i++) - arrayTmp[i] = nPRM.reg_LD_LUT_VHo_pos[i]; - for (i = 0; i < 32; i++) - arrayTmp[32+i] = nPRM.reg_LD_LUT_VHo_neg[i]; - LDIM_WR_BASE_LUT(REG_LD_LUT_VHO_NEGPOS_BASE, arrayTmp, 8, 64); - /* reg_LD_LUT_HHk[32]:u8 */ - LDIM_WR_BASE_LUT(REG_LD_LUT_HHK_BASE, nPRM.reg_LD_LUT_HHk, 8, 32); - /*gLD_REFLECT_DGR_LUT: u6 * (20+20+4) */ - for (i = 0; i < 20; i++) - arrayTmp[i] = nPRM.reg_LD_Reflect_Hdgr[i]; - for (i = 0; i < 20; i++) - arrayTmp[20+i] = nPRM.reg_LD_Reflect_Vdgr[i]; - for (i = 0; i < 4; i++) - arrayTmp[40+i] = nPRM.reg_LD_Reflect_Xdgr[i]; - LDIM_WR_BASE_LUT(REG_LD_REFLECT_DGR_BASE, arrayTmp, 8, 44); - /* X_lut: 12 * 3*16*32 */ - for (i = 0; i < 3; i++) - for (j = 0; j < 16; j++) - for (k = 0; k < 32; k++) - arrayTmp[16*32*i+32*j+k] = nPRM.X_lut[i][j][k]; - LDIM_WR_BASE_LUT(REG_LD_RGB_LUT_BASE, arrayTmp, 16, 32*16*3); - /* X_nrm: 4 * 16 */ - LDIM_WR_BASE_LUT(REG_LD_RGB_NRMW_BASE, nPRM.X_nrm[0], 4, 16); - /* X_idx: 12*16 */ - /*LDIM_WR_BASE_LUT(REG_LD_RGB_IDX_BASE, nPRM.X_idx[0], 12, 16);*/ - LDIM_WR_BASE_LUT(REG_LD_RGB_IDX_BASE, nPRM.X_idx[0], 16, 16); - /* gMatrix_LUT: u12*LD_BLKREGNUM */ - LDIM_WR_BASE_LUT_DRT(REG_LD_MATRIX_BASE, nPRM.BL_matrix, LD_BLKREGNUM); - /* LD_FRM_SIZE */ - data = ((nPRM.reg_LD_pic_RowMax&0xfff)<<16) | - (nPRM.reg_LD_pic_ColMax&0xfff); - LDIM_WR_32Bits(REG_LD_FRM_SIZE, data); - /* LD_RGB_MOD */ - data = ((nPRM.reg_LD_RGBmapping_demo & 0x1) << 19) | - ((nPRM.reg_LD_X_LUT_interp_mode[2] & 0x1) << 18) | - ((nPRM.reg_LD_X_LUT_interp_mode[1] & 0x1) << 17) | - ((nPRM.reg_LD_X_LUT_interp_mode[0] & 0x1) << 16) | - ((nPRM.reg_LD_BkLit_LPFmod & 0x7) << 12) | - ((nPRM.reg_LD_Litshft & 0x7) << 8) | - ((nPRM.reg_LD_BackLit_Xtlk & 0x1) << 7) | - ((nPRM.reg_LD_BkLit_Intmod & 0x1) << 6) | - ((nPRM.reg_LD_BkLUT_Intmod & 0x1) << 5) | - ((nPRM.reg_LD_BkLit_curmod & 0x1) << 4) | - ((nPRM.reg_LD_BackLit_mode & 0x3)); - LDIM_WR_32Bits(REG_LD_RGB_MOD, data); - /* LD_BLK_HVNUM */ - data = ((nPRM.reg_LD_Reflect_Vnum & 0x7) << 20) | - ((nPRM.reg_LD_Reflect_Hnum & 0x7) << 16) | - ((nPRM.reg_LD_BLK_Vnum & 0x3f) << 8) | - ((nPRM.reg_LD_BLK_Hnum & 0x3f)); - LDIM_WR_32Bits(REG_LD_BLK_HVNUM, data); - /* REG_LD_FRM_HBLAN_VHOLS */ - data = ((nPRM.reg_LD_LUT_VHo_LS & 0x7) << 16) | - ((6 & 0x1fff)) ; /*frm_hblank_num */ - LDIM_WR_32Bits(REG_LD_FRM_HBLAN_VHOLS, data); - /* LD_HVGAIN */ - data = ((nPRM.reg_LD_Vgain & 0xfff) << 16) | - (nPRM.reg_LD_Hgain & 0xfff); - LDIM_WR_32Bits(REG_LD_HVGAIN, data); - /* LD_LIT_GAIN_COMP */ - data = ((nPRM.reg_LD_Litgain & 0xfff) << 16) | - (nPRM.reg_BL_matrix_Compensate & 0xfff); - LDIM_WR_32Bits(REG_LD_LIT_GAIN_COMP, data); - /* LD_BKLIT_VLD */ - data = 0; - for (i = 0; i < 32; i++) - if (nPRM.reg_LD_BkLit_valid[i]) - data = data | (1<data->chip_type) { - case BL_CHIP_TXLX: - LDIM_Initial_TXLX(ldim_bl_en, ldim_hvcnt_bypass); - break; - case BL_CHIP_GXTVBB: - LDIM_Initial_GXTVBB(ldim_bl_en, ldim_hvcnt_bypass); - break; - default: - break; + if (ldim_dev.ldim_func == NULL) { + LDIMERR("%s: invalid ldim_func\n", __func__); + return; } + if (ldim_dev.ldim_func->ldim_init) + ldim_dev.ldim_func->ldim_init(ldim_bl_en, ldim_hvcnt_bypass); } static void ldim_update_matrix(unsigned int mode) @@ -830,44 +658,6 @@ static void ldim_update_matrix(unsigned int mode) LDIM_WR_32Bits(REG_LD_MISC_CTRL0, data); } -static void ldim_update_gxtvbb(void) -{ - unsigned int data; - - if (ldim_avg_update_en) { - /* LD_BKLIT_PARAM */ - data = LDIM_RD_32Bits(REG_LD_BKLIT_PARAM); - data = (data&(~0xfff)) | (nPRM.reg_BL_matrix_AVG&0xfff); - LDIM_WR_32Bits(REG_LD_BKLIT_PARAM, data); - - /* compensate */ - data = LDIM_RD_32Bits(REG_LD_LIT_GAIN_COMP); - data = (data&(~0xfff)) | - (nPRM.reg_BL_matrix_Compensate & 0xfff); - LDIM_WR_32Bits(REG_LD_LIT_GAIN_COMP, data); - } - if (ldim_matrix_update_en) { - data = LDIM_RD_32Bits(REG_LD_MISC_CTRL0); - data = data & (~(3<<4)); - data = data | (1<<2); - LDIM_WR_32Bits(REG_LD_MISC_CTRL0, data); - - /* gMatrix_LUT: s12*100 ==> max to 8*8 enum ##r/w ram method*/ - LDIM_WR_BASE_LUT_DRT(REG_LD_MATRIX_BASE, - &(nPRM.BL_matrix[0]), ldim_blk_row*ldim_blk_col); - - /*data = LDIM_RD_32Bits(REG_LD_MISC_CTRL0);*/ - data = data | (3<<4); - LDIM_WR_32Bits(REG_LD_MISC_CTRL0, data); - } else { - data = LDIM_RD_32Bits(REG_LD_MISC_CTRL0); - data = data & (~(1<<2)); - LDIM_WR_32Bits(REG_LD_MISC_CTRL0, data); - } - /* disable the CBUS configure the RAM */ - -} - static void ldim_update_txlx(void) { unsigned int data; @@ -892,43 +682,18 @@ static void ldim_update_txlx(void) static void ldim_update_setting(void) { - struct aml_bl_drv_s *bl_drv = aml_bl_get_driver(); - - switch (bl_drv->data->chip_type) { - case BL_CHIP_TXLX: - ldim_update_txlx(); - break; - case BL_CHIP_GXTVBB: - ldim_update_gxtvbb(); - break; - default: - break; - } -} - -static irqreturn_t rdma_ldim_intr(int irq, void *dev_id) -{ - ulong flags; - - /*LDIMPR("*********rdma_ldim_intr start*********\n");*/ - spin_lock_irqsave(&rdma_ldim_isr_lock, flags); - - if (ldim_hist_en) { - /*schedule_work(&ldim_on_vs_work);*/ - queue_work(ldim_queue, &ldim_on_vs_work); + if (ldim_dev.ldim_func == NULL) { + if (ldim_debug_print) + LDIMERR("%s: invalid ldim_func\n", __func__); + return; } - rdma_ldim_irq_cnt++; - if (rdma_ldim_irq_cnt > 0xfffffff) - rdma_ldim_irq_cnt = 0; - spin_unlock_irqrestore(&rdma_ldim_isr_lock, flags); - /*LDIMPR("*********rdma_ldim_intr end*********\n");*/ - return IRQ_HANDLED; + if (ldim_dev.ldim_func->update_setting) + ldim_dev.ldim_func->update_setting(); } static irqreturn_t ldim_vsync_isr(int irq, void *dev_id) { - ulong flags; - struct aml_bl_drv_s *bl_drv = aml_bl_get_driver(); + unsigned long flags; if (ldim_on_flag == 0) return IRQ_HANDLED; @@ -939,17 +704,9 @@ static irqreturn_t ldim_vsync_isr(int irq, void *dev_id) if (ldim_avg_update_en) ldim_update_setting(); - switch (bl_drv->data->chip_type) { - case BL_CHIP_TXLX: - if (ldim_hist_en) { - /*schedule_work(&ldim_on_vs_work);*/ - queue_work(ldim_queue, &ldim_on_vs_work); - } - break; - case BL_CHIP_GXTVBB: - break; - default: - break; + if (ldim_hist_en) { + /*schedule_work(&ldim_on_vs_work);*/ + queue_work(ldim_queue, &ldim_on_vs_work); } } else { /*schedule_work(&ldim_off_vs_work);*/ @@ -1126,6 +883,18 @@ static void ldim_on_vs_arithmetic(void) kfree(local_ldim_max_rgb); } +static void ldim_on_update_brightness(struct work_struct *work) +{ + ldim_stts_read_region(ldim_hist_row, ldim_hist_col); + ldim_on_vs_arithmetic(); + ldim_on_vs_brightness(); +} + +static void ldim_off_update_brightness(struct work_struct *work) +{ + ldim_off_vs_brightness(); +} + static void ldim_bl_remap_curve_print(void) { int i = 0, len; @@ -2036,10 +1805,10 @@ static long ldim_ioctl(struct file *file, unsigned int cmd, unsigned long arg) LDIMERR("db_para malloc error\n"); return -EINVAL; } - ldim_db_para = db_para; - if (copy_from_user(ldim_db_para, (void __user *)arg, + ldim_dev.ldim_db_para = db_para; + if (copy_from_user(ldim_dev.ldim_db_para, (void __user *)arg, sizeof(struct ldim_param_s))) { - ldim_db_para = NULL; + ldim_dev.ldim_db_para = NULL; kfree(db_para); return -EINVAL; } @@ -2047,7 +1816,7 @@ static long ldim_ioctl(struct file *file, unsigned int cmd, unsigned long arg) LDIM_Initial(ldim_config.hsize, ldim_config.vsize, ldim_blk_row, ldim_blk_col, ldim_config.bl_mode, 1, 0); - ldim_db_para = NULL; + ldim_dev.ldim_db_para = NULL; kfree(db_para); break; @@ -3422,11 +3191,23 @@ ldim_malloc_err0: return -1; } +static struct aml_ldim_func_s ldim_func_txlx = { + .update_setting = ldim_update_txlx, + .stts_init = ldim_stts_initial_txlx, + .ldim_init = ldim_initial_txlx, +}; + +static struct aml_ldim_func_s ldim_func_tl1 = { + .update_setting = NULL, + .stts_init = NULL, + .ldim_init = NULL, +}; + int aml_ldim_probe(struct platform_device *pdev) { int ret = 0; unsigned int i; - unsigned int ldim_vsync_irq = 0, ldim_rdma_irq = 0; + unsigned int ldim_vsync_irq = 0; struct ldim_dev_s *devp = &ldim_dev; struct aml_bl_drv_s *bl_drv = aml_bl_get_driver(); @@ -3454,7 +3235,19 @@ int aml_ldim_probe(struct platform_device *pdev) /* db para */ LDIM_DATA_FROM_DB = 0; - ldim_db_para = NULL; + devp->ldim_db_para = NULL; + /* ldim_func */ + switch (bl_drv->data->chip_type) { + case BL_CHIP_TL1: + devp->ldim_func = &ldim_func_tl1; + break; + case BL_CHIP_TXLX: + devp->ldim_func = &ldim_func_txlx; + break; + default: + devp->ldim_func = NULL; + break; + } ret = aml_ldim_malloc(ldim_blk_row, ldim_blk_col); if (ret) { @@ -3534,27 +3327,6 @@ int aml_ldim_probe(struct platform_device *pdev) else LDIMPR("request ldim_vsync_irq successful\n"); - switch (bl_drv->data->chip_type) { - case BL_CHIP_GXTVBB: - bl_drv->res_ldim_rdma_irq = platform_get_resource(pdev, - IORESOURCE_IRQ, 1); - if (!bl_drv->res_ldim_rdma_irq) { - ret = -ENODEV; - LDIMERR("ldim_rdma_irq resource error\n"); - goto err; - } - ldim_rdma_irq = bl_drv->res_ldim_rdma_irq->start; - LDIMPR("ldim_rdma_irq: %d\n", ldim_rdma_irq); - if (request_irq(ldim_rdma_irq, rdma_ldim_intr, IRQF_SHARED, - "ldim_rdma", (void *)"ldim_rdma")) - LDIMERR("can't request ldim_rdma_irq\n"); - else - LDIMPR("request ldim_rdma_irq successful\n"); - break; - default: - break; - } - ldim_driver.valid_flag = 1; LDIMPR("%s ok\n", __func__); @@ -3594,16 +3366,6 @@ int aml_ldim_remove(void) kfree(ldim_driver.local_ldim_matrix); free_irq(bl_drv->res_ldim_vsync_irq->start, (void *)"ldim_vsync"); - switch (bl_drv->data->chip_type) { - case BL_CHIP_GXTVBB: - if (bl_drv->res_ldim_rdma_irq) { - free_irq(bl_drv->res_ldim_rdma_irq->start, - (void *)"ldim_rdma"); - } - break; - default: - break; - } cdev_del(devp->aml_ldim_cdevp); kfree(devp->aml_ldim_cdevp); diff --git a/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_drv.h b/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_drv.h index 6200d25..4de7254 100644 --- a/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_drv.h +++ b/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_drv.h @@ -36,6 +36,13 @@ extern int LD_remap_lut[16][32]; /*========================================*/ +struct aml_ldim_func_s { + void (*update_setting)(void); + void (*stts_init)(unsigned int resolution); + void (*ldim_init)(unsigned int bl_en, unsigned int hvcnt_bypass); +}; + +/*========================================*/ extern int ldim_round(int ix, int ib); extern void ldim_stts_en(unsigned int resolution, unsigned int pix_drop_mode, diff --git a/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_func.c b/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_func.c index 46b4a9a..606cd54 100644 --- a/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_func.c +++ b/drivers/amlogic/media/vout/backlight/aml_ldim/ldim_func.c @@ -41,51 +41,6 @@ #define Wr(reg, val) Wr_reg(reg, val) #define Rd(reg) Rd_reg(reg) -static int LD_STA1max_Hidx[25] = { - /* U12* 25 */ - 0, 480, 960, 1440, 1920, 2400, 2880, - 3360, 3840, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095 -}; - -static int LD_STA1max_Vidx[17] = { - /* u12x 17 */ - 0, 2160, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095 -}; - -static int LD_STA2max_Hidx[25] = { - /* U12* 25 */ - 0, 480, 960, 1440, 1920, 2400, 2880, - 3360, 3840, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095 -}; - -static int LD_STA2max_Vidx[17] = { - /* u12x 17 */ - 0, 2160, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095 -}; - -static int LD_STAhist_Hidx[25] = { - /* U12* 25 */ - 0, 480, 960, 1440, 1920, 2400, 2880, - 3360, 3840, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095 -}; - -static int LD_STAhist_Vidx[17] = { - /* u12x 17 */ - 0, 2160, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095, 4095, - 4095, 4095, 4095, 4095, 4095 -}; - static int LD_BLK_Hidx[33] = { /* S14* 33 */ -1920, -1440, -960, -480, 0, 480, @@ -104,27 +59,6 @@ static int LD_BLK_Vidx[25] = { 8191, 8191, 8191, 8191, 8191, 8191, 8191 }; -static int LD_LUT_Hdg[32] = { - /* u10 */ - 503, 501, 494, 481, 465, 447, 430, 409, 388, 369, 354, - 343, 334, 326, 318, 311, 305, 299, 293, 286, 279, 272, - 266, 261, 257, 252, 245, 235, 226, 218, 214, 213 -}; - -static int LD_LUT_Vdg[32] = { - /* u10 */ - 373, 371, 367, 364, 359, 353, 346, 337, 328, 318, 308, - 297, 286, 274, 261, 247, 232, 218, 204, 191, 180, 169, - 158, 148, 138, 130, 122, 115, 108, 104, 100, 97 -}; - -static int LD_LUT_VHk[32] = { - /* u10 */ - 492, 492, 492, 492, 427, 356, 328, 298, 272, 251, 229, - 206, 191, 175, 162, 151, 144, 139, 131, 127, 119, 110, - 105, 101, 99, 98, 94, 85, 83, 77, 74, 73 -}; - static int LD_LUT_Hdg1[32] = { /* u10 */ 503, 501, 494, 481, 465, 447, 430, 409, 388, 369, 354, @@ -162,17 +96,20 @@ static int LD_LUT_Hdg1_TXLX[32] = { 455, 487, 498, 505, 506, 509, 503, 494, 493, 483, 484, 480, 478, 476, 472, 472, 468, 465, 459, 449, 448, 439, 436, 432, - 430, 413, 402, 386, 361, 343, 317, 307}; + 430, 413, 402, 386, 361, 343, 317, 307 +}; static int LD_LUT_Vdg1_TXLX[32] = { 485, 483, 474, 465, 451, 435, 406, 381, 350, 320, 283, 251, 211, 178, 147, 113, 88, 65, 52, 37, 27, 20, 16, 8, - 3, 2, 0, 0, 0, 0, 0, 0}; + 3, 2, 0, 0, 0, 0, 0, 0 +}; static int LD_LUT_VHk1_TXLX[32] = { 490, 410, 356, 317, 288, 272, 266, 260, 258, 253, 249, 246, 242, 240, 236, 236, 232, 229, 226, 224, 224, 222, 221, 221, - 221, 219, 219, 221, 219, 225, 228, 237}; + 221, 219, 219, 221, 219, 225, 228, 237 +}; static int reg_LD_LUT_Hdg_TXLX[8][32] = { {254, 248, 239, 226, 211, 194, 176, 156, 137, 119, 101, 85, 70, 57, 45, 36, @@ -275,18 +212,23 @@ static int reg_LD_LUT_VHk_TXLX[8][32] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128}, }; -static int reg_LD_LUT_VHo_pos_TXLX[32] = {0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -static int reg_LD_LUT_VHo_neg_TXLX[32] = {0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +static int reg_LD_LUT_VHo_pos_TXLX[32] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; +static int reg_LD_LUT_VHo_neg_TXLX[32] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; static int reg_LD_LUT_Hdg_LEXT_TXLX[8] = { - 260, 260, 260, 260, 260, 260, 260, 260}; + 260, 260, 260, 260, 260, 260, 260, 260 +}; static int reg_LD_LUT_Vdg_LEXT_TXLX[8] = { - 260, 260, 260, 260, 260, 260, 260, 260}; + 260, 260, 260, 260, 260, 260, 260, 260 +}; static int reg_LD_LUT_VHk_LEXT_TXLX[8] = { - 128, 128, 128, 128, 128, 128, 128, 128}; + 128, 128, 128, 128, 128, 128, 128, 128 +}; /* public function */ @@ -873,269 +815,11 @@ void LD_LUTInit(struct LDReg_s *Reg) } } break; - case BL_CHIP_GXTVBB: - /* Emulate the FW to set the LUTs */ - for (k = 0; k < 16; k++) { - /*set the LUT to be inverse of the Lit_value,*/ - /* lit_idx distribute equal space, set by FW */ - Reg->X_idx[0][k] = 4095 - 256 * k; - Reg->X_nrm[0][k] = 8; - for (t = 0; t < 32; t++) { - Reg->X_lut[0][k][t] = LD_remap_lut[k][t]; - Reg->X_lut[1][k][t] = LD_remap_lut[k][t]; - Reg->X_lut[2][k][t] = LD_remap_lut[k][t]; - } - } - break; default: break; } } -static void ConLDReg_GXTVBB(struct LDReg_s *Reg) -{ - unsigned int T = 0; - unsigned int Vnum = 0; - unsigned int Hnum = 0; - unsigned int BSIZE = 0; - - /* General registers; */ - Reg->reg_LD_pic_RowMax = 2160;/* setting default */ - Reg->reg_LD_pic_ColMax = 3840; - LD_IntialData(Reg->reg_LD_pic_YUVsum, 3, 0); - /* only output u16*3, (internal ACC will be u32x3)*/ - LD_IntialData(Reg->reg_LD_pic_RGBsum, 3, 0); - - /* set same region division for statistics */ - Reg->reg_LD_STA_Vnum = 8; - Reg->reg_LD_STA_Hnum = 8; - - /*Image Statistic options */ - Reg->reg_LD_BLK_Vnum = 1;/*u5: Maximum to BLKVMAX */ - Reg->reg_LD_BLK_Hnum = 8;/*u5: Maximum to BLKHMAX */ - - Reg->reg_LD_STA1max_LPF = 1; - /*u1: STA1max statistics on [1 2 1]/4 filtered results */ - Reg->reg_LD_STA2max_LPF = 1; - /*u1: STA2max statistics on [1 2 1]/4 filtered results*/ - Reg->reg_LD_STAhist_LPF = 1; - /*u1: STAhist statistics on [1 2 1]/4 filtered results*/ - Reg->reg_LD_STA1max_Hdlt = 0; - /*u2: (2^x) extra pixels into Max calculation*/ - Reg->reg_LD_STA1max_Vdlt = 0; - /*u4: extra pixels into Max calculation vertically*/ - Reg->reg_LD_STA2max_Hdlt = 0; - /*u2: (2^x) extra pixels into Max calculation*/ - Reg->reg_LD_STA2max_Vdlt = 0; - /*u4: extra pixels into Max calculation vertically*/ - Reg->reg_LD_STAhist_mode = 3; - /*u3: histogram statistics on XX separately 20bits*16bins: - * 0:R-only,1:G-only 2:B-only 3:Y-only; 4:MAX(R,G,B),5/6/7:R&G&B - */ - Reg->reg_LD_STAhist_pix_drop_mode = 0;/*u2 */ - for (T = 0; T < LD_STA_LEN_H; T++) { - Reg->reg_LD_STA1max_Hidx[T] = LD_STA1max_Hidx[T];/*U12* 25*/ - Reg->reg_LD_STA2max_Hidx[T] = LD_STA2max_Hidx[T];/*U12* 25*/ - Reg->reg_LD_STAhist_Hidx[T] = LD_STAhist_Hidx[T];/*U12* 25*/ - } - for (T = 0; T < LD_STA_LEN_V; T++) { - Reg->reg_LD_STA1max_Vidx[T] = LD_STA1max_Vidx[T];/*u12x 17*/ - Reg->reg_LD_STA2max_Vidx[T] = LD_STA2max_Vidx[T];/*u12x 17*/ - Reg->reg_LD_STAhist_Vidx[T] = LD_STAhist_Vidx[T];/*u12x 17*/ - } - - /****** FBC3 fw_hw_alg_frm *******/ - Reg->reg_ldfw_BLmax = 4095; /*maximum BL value*/ - Reg->reg_ldfw_blk_norm = 128; - /*u8: normalization gain for blk number, - * 1/blk_num= norm>>(rs+8), norm = (1<<(rs+8))/blk_num - */ - - Reg->reg_ldfw_blk_norm_rs = 2; - /*u3: 0~7, 1/blk_num= norm>>(rs+8)*/ - - for (T = 0; T < 8; T++) - Reg->reg_ldfw_sta_hdg_weight[T] = 64; - - Reg->reg_ldfw_sta_max_mode = 3; - /* u2: maximum selection for components: - * 0: r_max, 1: g_max, 2: b_max; 3: max(r,g,b) - */ - - Reg->reg_ldfw_sta_max_hist_mode = 0; - /* u2: mode of reference max/hist mode: - * 0: MIN(max, hist), 1: MAX(max, hist) 2: (max+hist)/2, - * 3: (max(a,b)*3 + min(a,b))/4 - */ - - Reg->reg_ldfw_hist_valid_rate = 64; - /* u8, norm to 512 as "1", if hist_matrix[i]>(rate*histavg)>>9 */ - - Reg->reg_ldfw_hist_valid_ofst = 63;/* u8, hist valid bin upward offset*/ - Reg->reg_ldfw_sedglit_RL = 1;/*u1: single edge lit right/bottom mode*/ - - Reg->reg_ldfw_sf_thrd = 1600; - /*u12: threshold of difference to enable the sf;*/ - - Reg->reg_ldfw_boost_gain = 64; - /* u8: boost gain for the region that is - * larger than the average, norm to 16 as "1" - */ - - Reg->reg_ldfw_tf_alpha_rate = 16; - /*u8: rate to SFB_BL_matrix from last frame difference;*/ - - Reg->reg_ldfw_tf_alpha_ofst = 32; - /* u8: ofset to alpha SFB_BL_matrix from last frame difference;*/ - - Reg->reg_ldfw_tf_disable_th = 255; - /* u8: 4x is the threshod to disable tf to the alpha - * (SFB_BL_matrix from last frame difference; - */ - - Reg->reg_ldfw_blest_acmode = 1; - /* u3: 0: est on BLmatrix; 1: est on (BL-DC); - * 2: est on (BL-MIN); 3: est on (BL-MAX) 4: 2048; 5:1024 - */ - - Reg->reg_ldfw_sf_enable = 0; - /* u1: enable signal for spatial filter on the tbl_matrix */ - - Reg->reg_ldfw_boost_enable = 0; - /* u1: enable signal for Boost filter on the tbl_matrix */ - - Reg->ro_ldfw_bl_matrix_avg = 0; - /* u12: read-only register for bl_matrix */ - - /*---------------------Setting BL_matrix initial value - * (will be updated frame to frame in FW) - */ - Vnum = Reg->reg_LD_BLK_Vnum; - Hnum = Reg->reg_LD_BLK_Hnum; - BSIZE = Vnum*Hnum; - /*Initialization */ - LD_IntialData(Reg->BL_matrix, BSIZE, 4095); - - /* BackLight Modeling control register setting*/ - Reg->reg_LD_BackLit_Xtlk = 1; - /* u1: 0 no block to block Xtalk model needed; 1: Xtalk model needed*/ - Reg->reg_LD_BackLit_mode = 1; - /*u2: 0- LEFT/RIGHT Edge Lit; 1- Top/Bot Edge Lit; 2 - DirectLit modeled - * H/V independent; 3- DirectLit modeled HV Circle distribution - */ - Reg->reg_LD_Reflect_Hnum = 3; - /*u3: numbers of band reflection considered in Horizontal - * direction; 0~4 - */ - Reg->reg_LD_Reflect_Vnum = 0; - /*u3: numbers of band reflection considered in Horizontal - * direction; 0~4 - */ - Reg->reg_LD_BkLit_curmod = 0; - /*u1: 0: H/V separately, 1 Circle distribution*/ - Reg->reg_LD_BkLUT_Intmod = 1; - /*u1: 0: linear interpolation, 1 cubical interpolation*/ - Reg->reg_LD_BkLit_Intmod = 1; - /*u1: 0: linear interpolation, 1 cubical interpolation*/ - Reg->reg_LD_BkLit_LPFmod = 7; - /* u3: 0: no LPF, 1:[1 14 1]/16;2:[1 6 1]/8; 3: [1 2 1]/4; - * 4:[9 14 9]/32 5/6/7: [5 6 5]/16; - */ - Reg->reg_LD_BkLit_Celnum = 121; - /*u8:0:1920~61####((Reg->reg_LD_pic_ColMax+1)/32)+1;*/ - Reg->reg_BL_matrix_AVG = 4095; - /* u12: DC of whole picture BL to be subtract from BL_matrix - * during modeling (Set by FW daynamically) - */ - Reg->reg_BL_matrix_Compensate = 4095; - /* u12: DC of whole picture BL to be compensated back to - * Litfull after the model (Set by FW dynamically); - */ - LD_IntialData(Reg->reg_LD_Reflect_Hdgr, 20, 32); - /*20*u6: cells 1~20 for H Gains of different dist of Left/Right;*/ - LD_IntialData(Reg->reg_LD_Reflect_Vdgr, 20, 32); - /*20*u6: cells 1~20 for V Gains of different dist of Top/Bot; */ - LD_IntialData(Reg->reg_LD_Reflect_Xdgr, 4, 32);/* 4*u6: */ - - Reg->reg_LD_Vgain = 256;/* u12 */ - Reg->reg_LD_Hgain = 242;/* u12 */ - Reg->reg_LD_Litgain = 256;/* u12 */ - Reg->reg_LD_Litshft = 3; - /* u3 right shif of bits for the all Lit's sum */ - LD_IntialData(Reg->reg_LD_BkLit_valid, 32, 1); - /*u1x32: valid bits for the 32 cell Bklit to contribut to current - * position (refer to the backlit padding pattern) - * region division index 1 2 3 4 5(0) 6(1) 7(2) 8(3) 9(4) - * 10(5)11(6)12(7)13(8) 14(9)15(10) 16 17 18 19 - */ - for (T = 0; T < LD_BLK_LEN_H; T++) - Reg->reg_LD_BLK_Hidx[T] = LD_BLK_Hidx[T];/* S14* BLK_LEN_H */ - for (T = 0; T < LD_BLK_LEN_V; T++) - Reg->reg_LD_BLK_Vidx[T] = LD_BLK_Vidx[T];/* S14x BLK_LEN_V */ - for (T = 0; T < LD_LUT_LEN; T++) { - Reg->reg_LD_LUT_Hdg[T] = LD_LUT_Hdg[T]; - Reg->reg_LD_LUT_Vdg[T] = LD_LUT_Vdg[T]; - Reg->reg_LD_LUT_VHk[T] = LD_LUT_VHk[T]; - } - /* set the VHk_pos and VHk_neg value ,normalized to - * 128 as "1" 20150428 - */ - for (T = 0; T < 32; T++) { - Reg->reg_LD_LUT_VHk_pos[T] = 128;/* vdist>=0 */ - Reg->reg_LD_LUT_VHk_neg[T] = 128;/* vdist<0 */ - Reg->reg_LD_LUT_HHk[T] = 128;/* hdist gain */ - Reg->reg_LD_LUT_VHo_pos[T] = 0;/* vdist>=0 */ - Reg->reg_LD_LUT_VHo_neg[T] = 0;/* vdist<0 */ - } - Reg->reg_LD_LUT_VHo_LS = 0; - Reg->reg_LD_LUT_Hdg_LEXT = 505; - /* 2*(nPRM->reg_LD_LUT_Hdg[0]) - (nPRM->reg_LD_LUT_Hdg[1]); */ - Reg->reg_LD_LUT_Vdg_LEXT = 372; - /* 2*(nPRM->reg_LD_LUT_Vdg[0]) - (nPRM->reg_LD_LUT_Vdg[1]); */ - Reg->reg_LD_LUT_VHk_LEXT = 492; - /* 2*(nPRM->reg_LD_LUT_VHk[0]) - (nPRM->reg_LD_LUT_VHk[1]); */ - /* set the demo window */ - Reg->reg_LD_xlut_demo_roi_xstart = (Reg->reg_LD_pic_ColMax/4); - /* u14 start col index of the region of interest */ - Reg->reg_LD_xlut_demo_roi_xend = (Reg->reg_LD_pic_ColMax*3/4); - /* u14 end col index of the region of interest */ - Reg->reg_LD_xlut_demo_roi_ystart = (Reg->reg_LD_pic_RowMax/4); - /* u14 start row index of the region of interest */ - Reg->reg_LD_xlut_demo_roi_yend = (Reg->reg_LD_pic_RowMax*3/4); - /* u14 end row index of the region of interest */ - Reg->reg_LD_xlut_iroi_enable = 1; - /* u1: enable rgb LUT remapping inside regon of interest: - * 0: no rgb remapping; 1: enable rgb remapping - */ - Reg->reg_LD_xlut_oroi_enable = 1; - /* u1: enable rgb LUT remapping outside regon of interest: - * 0: no rgb remapping; 1: enable rgb remapping - */ - - /* Registers used in LD_RGB_LUT for RGB remaping */ - Reg->reg_LD_RGBmapping_demo = 0; - /* u2: 0 no demo mode 1: display BL_fulpel on RGB */ - Reg->reg_LD_X_LUT_interp_mode[0] = 1; - /* U1 0: using linear interpolation between to neighbour LUT; - * 1: use the nearest LUT results - */ - Reg->reg_LD_X_LUT_interp_mode[1] = 1; - /* U1 0: using linear interpolation between to neighbour LUT; - * 1: use the nearest LUT results - */ - Reg->reg_LD_X_LUT_interp_mode[2] = 1; - /* U1 0: using linear interpolation between to neighbour LUT; - * 1: use the nearest LUT results - */ - LD_LUTInit(Reg); - /* only do the Lit modleing on the AC part */ - Reg->fw_LD_BLEst_ACmode = 0; - /* u2: 0: est on BLmatrix; 1: est on (BL-DC); - * 2: est on (BL-MIN); 3: est on (BL-MAX) - */ -} - - static void ConLDReg_TXLX(struct LDReg_s *Reg) { int i, j; @@ -1399,9 +1083,6 @@ void LD_ConLDReg(struct LDReg_s *Reg) case BL_CHIP_TXLX: ConLDReg_TXLX(Reg); break; - case BL_CHIP_GXTVBB: - ConLDReg_GXTVBB(Reg); - break; default: break; } diff --git a/include/linux/amlogic/media/vout/lcd/aml_bl.h b/include/linux/amlogic/media/vout/lcd/aml_bl.h index a83f80e..67b65e1 100644 --- a/include/linux/amlogic/media/vout/lcd/aml_bl.h +++ b/include/linux/amlogic/media/vout/lcd/aml_bl.h @@ -24,7 +24,7 @@ #include #define BLPR(fmt, args...) pr_info("bl: "fmt"", ## args) -#define BLERR(fmt, args...) pr_err("bl error: "fmt"", ## args) +#define BLERR(fmt, args...) pr_err("bl error: "fmt"", ## args) #define AML_BL_NAME "aml-bl" #define BL_LEVEL_MAX 255 @@ -42,7 +42,6 @@ #define BL_FREQ_VS_DEFAULT 2 /* multiple 2 of vfreq */ enum bl_chip_type_e { - BL_CHIP_GXTVBB, BL_CHIP_GXL, BL_CHIP_GXM, BL_CHIP_TXL, @@ -50,6 +49,7 @@ enum bl_chip_type_e { BL_CHIP_AXG, BL_CHIP_G12A, BL_CHIP_G12B, + BL_CHIP_TL1, BL_CHIP_MAX, }; @@ -183,7 +183,7 @@ struct aml_bl_drv_s { struct workqueue_struct *workqueue; struct delayed_work bl_delayed_work; struct resource *res_ldim_vsync_irq; - struct resource *res_ldim_rdma_irq; + /*struct resource *res_ldim_rdma_irq;*/ }; extern struct aml_bl_drv_s *aml_bl_get_driver(void); -- 2.7.4