Пример #1
0
void disp_bls_update_gamma_lut(void)
{
        int index, i;
        unsigned long regValue;
        unsigned long CurVal, Count;
    
#ifndef NEW_GAMMA_ARRAY_ARRANGEMENT
        // make it build fail for EPC rule after MP
        DISP_MSG("disp_bls_update_gamma_lut!\n");
#endif
        DISP_MSG("disp_bls_update_gamma_lut!\n");
    
        // init gamma table
        for(index = 0; index < 3; index++)
        {    
            for(Count = 0; Count < 257 ; Count++)
            {  
                 g_gamma_lut.entry[index][Count] = g_gamma_index.entry[index][Count];
            }
        }
    
        // disable BLS_EN first
        DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x00000003);
        regValue = DISP_REG_GET(DISP_REG_BLS_EN);
        DISP_REG_SET(DISP_REG_BLS_EN, regValue & 0x00010000);
        DISP_MSG("ready to modify gamma lut, set BLS_EN=%x\n", DISP_REG_GET(DISP_REG_BLS_EN));
        DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x00000000);

        DISP_REG_SET(DISP_REG_BLS_LUT_UPDATE, 0x1);
            
        for (i = 0; i < 256 ; i++)
        {
            CurVal = (((g_gamma_lut.entry[0][i]&0x3FF)<<20) | ((g_gamma_lut.entry[1][i]&0x3FF)<<10) | (g_gamma_lut.entry[2][i]&0x3FF));
            DISP_REG_SET(DISP_REG_BLS_GAMMA_LUT(i), CurVal);
            DISP_DBG("[%d] GAMMA LUT = 0x%x, (%lu, %lu, %lu)\n", i, DISP_REG_GET(DISP_REG_BLS_GAMMA_LUT(i)), 
                g_gamma_lut.entry[0][i], g_gamma_lut.entry[1][i], g_gamma_lut.entry[2][i]);
        }
        
        /* Set Gamma Last point*/    
        DISP_REG_SET(DISP_REG_BLS_GAMMA_SETTING, 0x00000001);
        
        // set gamma last index
        CurVal = (((g_gamma_lut.entry[0][256]&0x3FF)<<20) | ((g_gamma_lut.entry[1][256]&0x3FF)<<10) | (g_gamma_lut.entry[2][256]&0x3FF));
        DISP_REG_SET(DISP_REG_BLS_GAMMA_BOUNDARY, CurVal);
            
        DISP_REG_SET(DISP_REG_BLS_LUT_UPDATE, 0);
        //DISP_REG_SET(DISP_REG_BLS_EN, regValue);

        //set BLS_EN to oringinal value
        DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x00000003);
        DISP_REG_SET(DISP_REG_BLS_EN, regValue);
        DISP_MSG("end modifying gamma lut, set BLS_EN=%x\n", DISP_REG_GET(DISP_REG_BLS_EN));
        DISP_REG_SET(DISP_REG_BLS_DEBUG, 0x00000000);

}
Пример #2
0
void disp_bls_update_gamma_lut(void)
{
#if defined(DDP_GAMMA_SUPPORT)
        int index, i;
        unsigned long regValue;
        unsigned long CurVal, Count;
    
        DISP_MSG("disp_bls_update_gamma_lut!\n");
    
        if (DISP_REG_GET(DISP_REG_BLS_EN) & 0x1)
        {
            DISP_ERR("try to update gamma lut while BLS is active\n");
            return;
        }
    
        // init gamma table
        for(index = 0; index < 3; index++)
        {    
            for(Count = 0; Count < 257 ; Count++)
            {  
                 g_gamma_lut.entry[index][Count] = g_gamma_index.entry[index][Count];
            }
        }
    
        DISP_REG_SET(DISP_REG_BLS_LUT_UPDATE, 0x1);
            
        for (i = 0; i < 256 ; i++)
        {
            CurVal = (((g_gamma_lut.entry[0][i]&0x3FF)<<20) | ((g_gamma_lut.entry[1][i]&0x3FF)<<10) | (g_gamma_lut.entry[2][i]&0x3FF));
            DISP_REG_SET(DISP_REG_BLS_GAMMA_LUT(i), CurVal);
            DISP_DBG("[%d] GAMMA LUT = 0x%x, (%lu, %lu, %lu)\n", i, DISP_REG_GET(DISP_REG_BLS_GAMMA_LUT(i)), 
                g_gamma_lut.entry[0][i], g_gamma_lut.entry[1][i], g_gamma_lut.entry[2][i]);
        }
        
        /* Set Gamma Last point*/    
        DISP_REG_SET(DISP_REG_BLS_GAMMA_SETTING, 0x00000001);
        
        // set gamma last index
        CurVal = (((g_gamma_lut.entry[0][256]&0x3FF)<<20) | ((g_gamma_lut.entry[1][256]&0x3FF)<<10) | (g_gamma_lut.entry[2][256]&0x3FF));
        DISP_REG_SET(DISP_REG_BLS_GAMMA_BOUNDARY, CurVal);
            
        DISP_REG_SET(DISP_REG_BLS_LUT_UPDATE, 0);
#endif
}