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); }