Exemple #1
0
void osddev_update_disp_axis(struct myfb_dev *fbdev,int  mode_change)
{
	osddev_update_disp_axis_hw(	fbdev->osd_ctl.disp_start_x,
								fbdev->osd_ctl.disp_end_x,
               						fbdev->osd_ctl.disp_start_y,
               						fbdev->osd_ctl.disp_end_y,
               						fbdev->fb_info->var.xoffset,
               						fbdev->fb_info->var.yoffset,
               						mode_change,
               						fbdev->fb_info->node);
}
void set_osd_freescaler(int index, logo_object_t *plogo, vmode_t new_mode) {
    vmode_t old_mode = plogo->para.vout_mode & VMODE_MODE_BIT_MASK;
    printk("aml_logo: outputmode changed(%d->%d), reset osd%d scaler.\n", old_mode, new_mode, index);
    osd_free_scale_mode_hw(index, 1);
    osd_free_scale_enable_hw(index, 0);
    osd_set_color_mode(index, &default_color_format_array[plogo->dev->output_dev.osd.color_depth]);
    switch(old_mode) {
        case VMODE_480I:
        case VMODE_480CVBS:
        case VMODE_480P:
        case VMODE_576I:
        case VMODE_576CVBS:
        case VMODE_576P:
        case VMODE_720P:
        case VMODE_720P_50HZ:
            osd_set_free_scale_axis_hw(index, 0, 0, 1279, 719);
            osddev_update_disp_axis_hw(0, 1279, 0, 719, 0, 0, 0, index);
            break;
        case VMODE_1080I:
        case VMODE_1080I_50HZ:
        case VMODE_1080P:
        case VMODE_1080P_50HZ:
        case VMODE_1080P_24HZ:
        case VMODE_4K2K_24HZ:
        case VMODE_4K2K_25HZ:
        case VMODE_4K2K_30HZ:
        case VMODE_4K2K_SMPTE:
            osd_set_free_scale_axis_hw(index, 0, 0, 1919, 1079);
            osddev_update_disp_axis_hw(0, 1919, 0, 1079, 0, 0, 0, index);
            break;
		default:
			break;
   }
   switch(new_mode) {
        case VMODE_480I:
        case VMODE_480CVBS:
        case VMODE_480P:
            osd_set_window_axis_hw(index, 0, 0, 719, 479);
            break;
        case VMODE_576I:
        case VMODE_576CVBS:
        case VMODE_576P:
            osd_set_window_axis_hw(index, 0, 0, 719, 575);
            break;
        case VMODE_720P:
        case VMODE_720P_50HZ:
            osd_set_window_axis_hw(index, 0, 0, 1279, 719);
             break;
        case VMODE_1080I:
        case VMODE_1080I_50HZ:
        case VMODE_1080P:
        case VMODE_1080P_50HZ:
        case VMODE_1080P_24HZ:
            osd_set_window_axis_hw(index, 0, 0, 1919, 1079);
            break;
        case VMODE_4K2K_24HZ:
        case VMODE_4K2K_25HZ:
        case VMODE_4K2K_30HZ:
            osd_set_window_axis_hw(index, 0, 0, 3839, 2159);
            break;
        case VMODE_4K2K_SMPTE:
            osd_set_window_axis_hw(index, 0, 0, 4095, 2159);
            break;
		default:
			break;
   }
   osd_free_scale_enable_hw(index, 0x10001);
   osd_enable_hw(1, index);
}