示例#1
0
/** switch fields order before the next lcdc frame start
 *  coming */
static void iep_switch_fields_order(void) 
{
    void *pbase = (void*)iep_drvdata1->iep_base;
    int mode = iep_get_deinterlace_mode(pbase);
    struct fb_info *fb;

    switch (mode) {
    case dein_mode_I4O1B:
        iep_set_deinterlace_mode(dein_mode_I4O1T, pbase);
        break;
    case dein_mode_I4O1T:
        iep_set_deinterlace_mode(dein_mode_I4O1B, pbase);
        break;
    case dein_mode_I2O1B:
        iep_set_deinterlace_mode(dein_mode_I2O1T, pbase);
        break;
    case dein_mode_I2O1T:
        iep_set_deinterlace_mode(dein_mode_I2O1B, pbase);
        break;
    default:
        ;
    }

    fb = rk_get_fb(1);
    rk_direct_fb_show(fb);

    //iep_switch_input_address(pbase);
}
_mali_osk_errcode_t mali_mem_validation_add_range(u32 start, u32 size_para)
{
	/* Check that no other MEM_VALIDATION resources exist */
	struct fb_info *fb = rk_get_fb(0);
	u32 base = (fb->fix).smem_start;
	u32 size = (fb->fix).smem_len;
	if (MALI_INVALID_MEM_ADDR != mali_mem_validator.phys_base) {
		MALI_PRINT_ERROR(("Failed to add frame buffer memory; another range is already specified\n"));
		return _MALI_OSK_ERR_FAULT;
	}

	/* Check restrictions on page alignment */
	if ((0 != (base & (~_MALI_OSK_CPU_PAGE_MASK))) ||
	    (0 != (size & (~_MALI_OSK_CPU_PAGE_MASK)))) {
		MALI_PRINT_ERROR(("Failed to add frame buffer memory; incorrect alignment\n"));
		return _MALI_OSK_ERR_FAULT;
	}

	mali_mem_validator.phys_base = base;
	mali_mem_validator.size = size;
	MALI_DEBUG_PRINT(2, ("Memory Validator installed for Mali physical address base=0x%08X, size=0x%08X\n",
	                     mali_mem_validator.phys_base, mali_mem_validator.size));

	return _MALI_OSK_ERR_OK;
}
示例#3
0
static void iep_config_lcdc(struct iep_reg *reg)
{
    struct fb_info *fb;
    int fbi = 0;
    int fmt = 0;

    fbi = reg->layer == 0 ? 0 : 1;

    rk_fb_dpi_win_sel(fbi);

    fb = rk_get_fb(fbi);
#if 1
    switch (reg->format) {
    case IEP_FORMAT_ARGB_8888:
    case IEP_FORMAT_ABGR_8888:
        fmt = HAL_PIXEL_FORMAT_RGBA_8888;
        fb->var.bits_per_pixel = 32;

        fb->var.red.length = 8;
        fb->var.red.offset = 16;
        fb->var.red.msb_right = 0;

        fb->var.green.length = 8;
        fb->var.green.offset = 8;
        fb->var.green.msb_right = 0;

        fb->var.blue.length = 8;
        fb->var.blue.offset = 0;
        fb->var.blue.msb_right = 0;

        fb->var.transp.length = 8;
        fb->var.transp.offset = 24;
        fb->var.transp.msb_right = 0;

        break;
    case IEP_FORMAT_BGRA_8888:
        fmt = HAL_PIXEL_FORMAT_BGRA_8888;
        fb->var.bits_per_pixel = 32;
        break;
    case IEP_FORMAT_RGB_565:
        fmt = HAL_PIXEL_FORMAT_RGB_565;
        fb->var.bits_per_pixel = 16;

        fb->var.red.length = 5;
        fb->var.red.offset = 11;
        fb->var.red.msb_right = 0;

        fb->var.green.length = 6;
        fb->var.green.offset = 5;
        fb->var.green.msb_right = 0;

        fb->var.blue.length = 5;
        fb->var.blue.offset = 0;
        fb->var.blue.msb_right = 0;

        break;
    case IEP_FORMAT_YCbCr_422_SP:
        fmt = HAL_PIXEL_FORMAT_YCbCr_422_SP;
        fb->var.bits_per_pixel = 16;
        break;
    case IEP_FORMAT_YCbCr_420_SP:
        fmt = HAL_PIXEL_FORMAT_YCrCb_NV12;
        fb->var.bits_per_pixel = 16;
        break;
    case IEP_FORMAT_YCbCr_422_P:
    case IEP_FORMAT_YCrCb_422_SP:
    case IEP_FORMAT_YCrCb_422_P:
    case IEP_FORMAT_YCrCb_420_SP:
    case IEP_FORMAT_YCbCr_420_P:
    case IEP_FORMAT_YCrCb_420_P:
    case IEP_FORMAT_RGBA_8888:
    case IEP_FORMAT_BGR_565:
        // unsupported format
        IEP_ERR("unsupported format %d\n", reg->format);
        break;
    default:
        ;
    }

    fb->var.xoffset         = 0;
    fb->var.yoffset         = 0;
    fb->var.xres            = reg->act_width;
    fb->var.yres            = reg->act_height;
    fb->var.xres_virtual    = reg->act_width;
    fb->var.yres_virtual    = reg->act_height;
    fb->var.nonstd          = ((reg->off_y&0xFFF)<<20) + ((reg->off_x&0xFFF)<<8) + (fmt&0xFF);
    fb->var.grayscale       = ((reg->vir_height&0xFFF)<<20) + ((reg->vir_width&0xFFF)<<8) + 0;   //win0 xsize & ysize
#endif
    rk_direct_fb_show(fb);
}