//
//
// Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
//                                                                                  
// This program and the accompanying materials are licensed and made available under
// the terms and conditions of the BSD License that accompanies this distribution.  
// The full text of the license may be found at                                     
// http://opensource.org/licenses/bsd-license.php.                                  
//                                                                                  
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,            
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.    
//                                                                                  
//
//
//
// Module Name:
//
//   UncoreConfiguration.vfi
//
// Abstract:
//
//   Driver Setup formset.
//


// --*/

form formid = UNCORE_FORM_ID,
  title    = STRING_TOKEN(STR_UNCORE_CONFIGURATION_TITLE);

  subtitle text = STRING_TOKEN(STR_GOP_TITLE);

  oneof varid    = Setup.GOPEnable,
    prompt   = STRING_TOKEN(STR_GOP_VBIOS_SWITCH),
    help     = STRING_TOKEN(STR_GOP_VBIOS_SWITCH_HELP),
    option text = STRING_TOKEN(STR_ENABLE), value =1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
  endoneof;

  oneof varid  = Setup.GOPBrightnessLevel,
    prompt = STRING_TOKEN(STR_GOP_BRIGHTNESS_LEVEL),
    help   = STRING_TOKEN(STR_GOP_BRIGHTNESS_LEVEL_HELP),
    option text = STRING_TOKEN(STR_GOP_BRIGHT_20), value =2, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_40), value =3, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_60), value =4, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_80), value =5, flags = MANUFACTURING| DEFAULT| RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_100), value =6, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_120), value =7, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_140), value =8, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_160), value =9, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_180), value =10, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_200), value =11, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_220), value =12, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_240), value =13, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_GOP_BRIGHT_255), value =14, flags = RESET_REQUIRED;
  endoneof;
  subtitle text = STRING_TOKEN(STR_NULL_STRING);
  subtitle text = STRING_TOKEN(STR_IGD_TITLE);

  suppressif ideqval Setup.PrimaryVideoAdaptor == 0x2;
    oneof varid  = Setup.Igd,
      prompt   = STRING_TOKEN (STR_IGD_PROMPT),
      help     = STRING_TOKEN (STR_IGD_HELP),
      option text = STRING_TOKEN(STR_DISABLE), value=0, flags=RESET_REQUIRED;
      option text = STRING_TOKEN(STR_ENABLE),  value=1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
    endoneof;
  endif;

  oneof varid    = Setup.PrimaryVideoAdaptor,
    prompt   = STRING_TOKEN(STR_PRIMARY_DISPLAY),
    help     = STRING_TOKEN(STR_PRIMARY_DISPLAY_HELP),
    option text = STRING_TOKEN(STR_AUTOMATIC), value = 3, flags =   RESET_REQUIRED;
    option text = STRING_TOKEN(STR_IGD_STRING), value = 0, flags =  DEFAULT |MANUFACTURING |RESET_REQUIRED;
    option text = STRING_TOKEN(STR_PCI_STRING),  value = 2, flags = RESET_REQUIRED;
  endoneof;


  oneof varid = Setup.PavpMode,
    prompt   = STRING_TOKEN(STR_PAVC_PROMPT),
    help     = STRING_TOKEN(STR_PAVC_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_PAVP_LITE_MODE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_PAVP_SERPENT_MODE), value = 2, flags = RESET_REQUIRED;
  endoneof;


  oneof varid    = Setup.GTTSize,
    prompt   = STRING_TOKEN(STR_GTT_SIZE),
    help     = STRING_TOKEN(STR_GTT_SIZE_HELP),
    option text = STRING_TOKEN(GTT_SIZE_1MB), value = 1, flags =  RESET_REQUIRED;
    option text = STRING_TOKEN(GTT_SIZE_2MB), value = 2, flags =  DEFAULT | MANUFACTURING | RESET_REQUIRED;
  endoneof;

  oneof varid    = Setup.IgdApertureSize,
    prompt   = STRING_TOKEN(STR_APERTURE_SIZE),
    help     = STRING_TOKEN(STR_APERTURE_SIZE_HELP),
    option text = STRING_TOKEN(APERTURE_SIZE_128MB), value = 1, flags =  RESET_REQUIRED;
    option text = STRING_TOKEN(APERTURE_SIZE_256MB), value = 2, flags =  DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(APERTURE_SIZE_512MB), value = 3, flags =  RESET_REQUIRED;
  endoneof;

  oneof varid   = Setup.IgdDvmt50PreAlloc,
    prompt  = STRING_TOKEN(STR_DVMT50_PRE_ALLOC),
    help    = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_HELP),
//    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_32M), value = 1, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_64M), value = 2, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_96M), value = 3, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_128M), value = 4, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_160M), value = 5, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_192M), value = 6, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_224M), value = 7, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_256M), value = 8, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_288M), value = 9, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_320M), value = 10, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_352M), value = 11, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_384M), value = 12, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_416M), value = 13, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_448M), value = 14, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_480M), value = 15, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_PRE_ALLOC_512M), value = 16, flags = RESET_REQUIRED;
  endoneof;

  oneof   varid   = Setup.IgdDvmt50TotalAlloc,
    prompt  = STRING_TOKEN(STR_DVMT50_DVMT ),
    help    = STRING_TOKEN(STR_DVMT50_DVMT_HELP),
    option text = STRING_TOKEN(STR_DVMT50_ALLOC_128), value = 1, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_ALLOC_256), value = 2, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DVMT50_ALLOC_MAX), value = 3, flags = RESET_REQUIRED;
  endoneof;

  //
  //Igd Thermal
  //

  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  subtitle text = STRING_TOKEN(STR_IGD_LCD_CONTROL);

  oneof varid    = Setup.LidStatus,
    prompt   = STRING_TOKEN(STR_FORCE_LID_STATUS_PROMPT),
    help     = STRING_TOKEN(STR_FORCE_LID_STATUS_ENBDT_HELP),
    option text = STRING_TOKEN(STR_LID_STATUS__OFF_PROMPT), value = 0, flags = 0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_LID_STATUS__ON_PROMPT), value = 1, flags = 0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_LID_STATUS__AUTO_PROMPT), value = 2, flags = MANUFACTURING| DEFAULT| RESET_REQUIRED;
  endoneof;

  oneof varid    = Setup.IgdLcdIBia,
    prompt   = STRING_TOKEN(STR_VIDEO_LCD_IBIA),
    help     = STRING_TOKEN(STR_VIDEO_LCD_IBIAHLP),
    option text = STRING_TOKEN(STR_VIDEO_LCD_IBIAA), value = 0, flags =MANUFACTURING| DEFAULT| RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IBIAD), value = 1, flags = 0| RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IBIAL1), value = 2, flags = 0| RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IBIAL2), value = 3, flags = 0| RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IBIAL3), value = 4, flags = 0| RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IBIAL4), value = 5, flags = 0| RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IBIAL5), value = 6, flags = 0| RESET_REQUIRED;
  endoneof;

  oneof varid  = Setup.AlsEnable,
    prompt   = STRING_TOKEN (STR_ACPI_ALS_ENABLE),
    help     = STRING_TOKEN (STR_ACPI_ALS_ENABLE_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE),  value=1, flags=0 | RESET_REQUIRED;
  endoneof;


  oneof   varid   = Setup.IgdFlatPanel,
    prompt      = STRING_TOKEN(STR_IGD_FLAT_PANEL_PROMPT),
    help        = STRING_TOKEN(STR_IGD_FLAT_PANEL_HELP),
    option text = STRING_TOKEN(STR_AUTOMATIC), value=0x00, flags=DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_640X480), value=0x01, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_800X600), value=0x02, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_1024X768), value=0x03, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_1280X1024), value=0x04, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_1366X768), value=0x05, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_1680X1050), value=0x06, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_1920X1200), value=0x07, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_1280X800), value=0x08, flags=RESET_REQUIRED;
  endoneof;

  oneof   varid   = Setup.BootDisplayDevice,
    prompt      = STRING_TOKEN(STR_BOOT_DISPLAY_DEVICE_PROMPT),
    help        = STRING_TOKEN(STR_BOOT_DISPLAY_DEVICE_HELP),
    option text = STRING_TOKEN(STR_AUTOMATIC), value=0x00, flags=DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VGAPORT), value=0x01, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_HDMIPORTB), value=0x02, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DPPORTB), value=0x03, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DPPORTC), value=0x04, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EDPPORTC), value=0x05, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DSIPORTA), value=0x06, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DSIPORTC), value=0x07, flags=RESET_REQUIRED;

  endoneof;
  //
  //Pannel Scaling
  //
  oneof   varid   = Setup.PanelScaling,
    prompt      = STRING_TOKEN(STR_PANNEL_SCALING_PROMPT),
    help        = STRING_TOKEN(STR_PANNEL_SCALING_HELP),
    option text = STRING_TOKEN(STR_AUTOMATIC), value=0x00, flags=DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_PANNEL_SCALING_STRETCH), value=0x01, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_PANNEL_SCALING_CENTER), value=0x02, flags=RESET_REQUIRED;
  endoneof;

  //
  //GMCH BLC Control
  //
  oneof   varid   = Setup.IgdLcdIGmchBlc,
    prompt      = STRING_TOKEN(STR_VIDEO_LCD_IGMCHBLC_PROMPT),
    help        = STRING_TOKEN(STR_VIDEO_LCD_IGMCHBLC_HELP),
    option text = STRING_TOKEN(STR_VIDEO_LCD_IGMCHBLC1), value=0x00, flags=DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IGMCHBLC2), value=0x01, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IGMCHBLC3), value=0x02, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_VIDEO_LCD_IGMCHBLC4), value=0x03, flags=RESET_REQUIRED;
  endoneof;

  subtitle text = STRING_TOKEN(STR_NULL_STRING);
  //
  //ISP Configuration
  //
  subtitle text = STRING_TOKEN(STR_ISP_CONFIGURATION_TITLE);

  oneof varid   = Setup.ISPEn,
    prompt      = STRING_TOKEN(STR_ISP_ENABLED),
    help        = STRING_TOKEN(STR_ISP_ENABLED_HELP),
    option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
  endoneof;

  grayoutif ideqval Setup.ISPEn == 0;
    oneof varid  = Setup.ISPDevSel,
      prompt   = STRING_TOKEN (STR_ISP_PCICONFIGURATION_TITLE),
      help     = STRING_TOKEN (STR_ISP_PCICONFIGURATION_HELP),
      option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
      option text = STRING_TOKEN(STR_ISP_PCICONFIG_B0D2F0_TITLE), value = 1, flags = MANUFACTURING | DEFAULT | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_ISP_PCICONFIG_B0D3F0_TITLE), value = 2, flags = RESET_REQUIRED;
   endoneof;
  endif;

endform;
