コード例 #1
0
static int do_osd_close(cmd_tbl_t *cmdtp, int flag, int argc,
			char *const argv[])
{
	gdev = NULL;
	osd_enable_hw(0, 0);
	osd_enable_hw(1, 0);
	osd_set_free_scale_enable_hw(0, 0);
	osd_set_free_scale_enable_hw(1, 0);

	return 0;
}
コード例 #2
0
// change tv mode and show logo immediatly when hdmi pluged
int set_mode_and_show_logo(int hpd_state) {
    int value;
    logo_object_t* plogo = get_current_logo_obj();

    if((plogo->para.vout_mode & VMODE_MODE_BIT_MASK) > VMODE_4K2K_SMPTE) {
        return 0;    //  MID
    }

    printk("hdmi detect: %s.\n", (hpd_state==1)?"plug":"unplug");
    // osd2 freescale enable,   the logo is shown on osd2, reset freescale.
    value = aml_read_reg32(P_VPP_OSD_SC_CTRL0) & 0xb;
    if(value == 0x9) {
        vmode_t cur_mode;
        if (hpd_state == 0){
            cur_mode = cvbsmode_hdmionly;
        }
        else{
            cur_mode = hdmimode_hdmionly;
        }
        if(tvmode != cur_mode) {
            tvmode = cur_mode;
            osd_enable_hw(0, plogo->para.output_dev_type);
            set_current_vmode(cur_mode);
            vout_notifier_call_chain(VOUT_EVENT_MODE_CHANGE,&cur_mode) ;
            set_osd_freescaler(plogo->para.output_dev_type, plogo, cur_mode); 
        }
    }
    return 1;
}
コード例 #3
0
static int do_osd_enable(cmd_tbl_t *cmdtp, int flag, int argc,
			char *const argv[])
{
	ulong index = 0;

	index = simple_strtoul(getenv("display_layer"), NULL, 0);
	osd_enable_hw(index, 0);

	return 0;
}
コード例 #4
0
static void osd_reset(void)
{
	osd_set_free_scale_enable_hw(0, 0);
	osd_enable_hw(0, 1);
}
コード例 #5
0
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);
}