コード例 #1
0
static void jpeg_drv_dec_deinit(void)
{
    if(dec_status != 0)
    {

        spin_lock(&jpeg_dec_lock);
        dec_status = 0;
        spin_unlock(&jpeg_dec_lock);

        jpeg_drv_dec_reset();

        jpeg_drv_dec_power_off();
    }
}
コード例 #2
0
static void jpeg_drv_dec_deinit(void)
{
    if(dec_status != 0)
    {
#ifndef USE_SYSRAM        
        if(table_buffer_va != 0)
        {
            dma_free_coherent(0, TABLE_SIZE, table_buffer_va, table_buffer_pa);
            table_buffer_va = 0;
        }
#endif
        spin_lock(&jpeg_dec_lock);
        dec_status = 0;
        spin_unlock(&jpeg_dec_lock);
        jpeg_drv_dec_reset();
        jpeg_drv_dec_power_off();
    }
}
コード例 #3
0
/* workaround for jpeg odd read operation at cg gating state */
void jpeg_drv_dec_verify_state_and_reset(void)
{
	unsigned int temp, value;

	IMG_REG_WRITE(0x00, REG_ADDR_JPGDEC_RESET);
	IMG_REG_WRITE(0x00, REG_ADDR_JPGDEC_RESET);
	IMG_REG_WRITE(0x10, REG_ADDR_JPGDEC_RESET);
	IMG_REG_WRITE(0x10, REG_ADDR_JPGDEC_RESET);

	IMG_REG_READ(temp, REG_ADDR_JPGDEC_ULTRA_THRES);
	IMG_REG_READ(value, REG_ADDR_JPGDEC_FILE_ADDR);

	/* issue happen, need to do 1 read at cg gating state */
	if (value == 0xFFFFFFFF) {
		JPEG_MSG("JPGDEC APB R/W issue found, start to do recovery!\n");
		jpeg_drv_dec_power_off();
		IMG_REG_READ(value, REG_ADDR_JPGDEC_ULTRA_THRES);
		jpeg_drv_dec_power_on();
	}

	_jpeg_dec_int_status = 0;
	_jpeg_dec_mode = 0;
}
コード例 #4
0
static void jpeg_drv_dec_deinit(void)
{
    if(dec_status != 0)
    {
#ifdef USE_SYSRAM 
        if(table_buffer_pa != 0)
        {
            MT6573_SYSRAM_FREE(MT6573SYSRAMUSR_JPGDECODER);
            table_buffer_pa = 0;
        }
#else        
        if(table_buffer_va != 0)
        {
            dma_free_coherent(0, TABLE_SIZE, table_buffer_va, table_buffer_pa);
            table_buffer_va = 0;
        }
#endif
        spin_lock(&jpeg_dec_lock);
        dec_status = 0;
        spin_unlock(&jpeg_dec_lock);
        jpeg_drv_dec_reset();
        jpeg_drv_dec_power_off();
    }
}