diff --git a/src/atombios_output.c b/src/atombios_output.c index 51be301..ee752a3 100644 --- a/src/atombios_output.c +++ b/src/atombios_output.c @@ -203,6 +203,36 @@ atombios_output_tv1_setup(xf86OutputPtr output, DisplayModePtr mode) } +static int +atombios_output_yuv_setup(xf86OutputPtr output, Bool enable) +{ + RADEONInfoPtr info = RADEONPTR(output->scrn); + RADEONCrtcPrivatePtr radeon_crtc = output->crtc->driver_private; + ENABLE_YUV_PS_ALLOCATION disp_data; + AtomBiosArgRec data; + unsigned char *space; + + if (enable) + disp_data.ucEnable = 1; + else + disp_data.ucEnable = 0; + + disp_data.ucCRTC = radeon_crtc->crtc_id; + + data.exec.index = GetIndexIntoMasterTable(COMMAND, EnableYUV); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &disp_data; + + if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { + ErrorF("Output YUV setup success\n"); + return ATOM_SUCCESS; + } + + ErrorF("Output YUV setup failed\n"); + return ATOM_NOT_IMPLEMENTED; + +} + int atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode) { @@ -904,6 +934,7 @@ atombios_output_mode_set(xf86OutputPtr output, RADEONOutputPrivatePtr radeon_output = output->driver_private; RADEONInfoPtr info = RADEONPTR(output->scrn); + atombios_output_yuv_setup(output, FALSE); atombios_output_scaler_setup(output, mode); atombios_set_output_crtc_source(output);