// /** @file
//
// Copyright (c) 2004  - 2016, 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:
//
//   SourthClusterConfig.vfi
//
// Abstract:
//
//   Driver Setup formset.
//
//Revision History:
//  ------------------------------------------------------------------------------
//  Rev   Date<MM/DD/YYYY>    Name    Description
//  ------------------------------------------------------------------------------

// **/

//
// South Cluster Configuration Form
//

form formid = SOUTH_CLUSTER_FORM_ID,
  title    = STRING_TOKEN(STR_SOUTH_CLUSTER_TITLE);

  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  //
  // Jump to PCIe Configuration Form
  //
  goto PCIE_DEVICE_OPTIONS_FORM_ID,
    prompt = STRING_TOKEN(STR_PCIE_OPTIONS_FORM_TITLE),
    help = STRING_TOKEN(STR_PCIE_OPTIONS_FORM_HELP);

  //
  // Jump to USB Configuration Form
  //
  goto USB_OPTIONS_FORM_ID,
    prompt = STRING_TOKEN(STR_USB_OPTIONS_FORM_TITLE),
    help = STRING_TOKEN(STR_USB_OPTIONS_FORM_HELP);
  //
  // Jump to Azalia Configuration Form
  //
  goto AZALIA_OPTIONS_FORM_ID,
    prompt = STRING_TOKEN(STR_AZALIA_OPTIONS_FORM_TITLE),
    help   = STRING_TOKEN(STR_AZALIA_OPTIONS_FORM_HELP);

  //
  // Jump to Drive Configuration Form
  //
  goto DRIVE_CONFIGURATION_ID,
    prompt = STRING_TOKEN(STR_IDE_FORM_TITLE),
    help   = STRING_TOKEN(STR_IDE_FORM_HELP);
  //
  // Jump to LAN Configuration Form
  //

  //
  // Jump to LPSS Configuration Form
  //
  goto LPSS_CONFIGURATION_ID,
    prompt = STRING_TOKEN(STR_LPSS_SCC_FORM_TITLE),
    help   = STRING_TOKEN(STR_LPSS_SCC_FORM_HELP);

  //
  // Jump to Misc Configuration Form
  //
  goto MISC_OPTIONS_FORM_ID,
    prompt = STRING_TOKEN(STR_MISC_OPTION_FORM_TITLE),
    help   = STRING_TOKEN(STR_MISC_OPTION_FORM_HELP);
endform;

form formid = PCIE_DEVICE_OPTIONS_FORM_ID,

  title    = STRING_TOKEN(STR_PCIE_OPTIONS_FORM_TITLE);

  subtitle text = STRING_TOKEN(STR_NULL_STRING);

    oneof varid   = Setup.PcieRootPortSpeed[0],
      prompt      = STRING_TOKEN (STR_PCIE_SPEED_PROMPT0),
      help        = STRING_TOKEN (STR_PCIE_SPEED_HELP),
      option text = STRING_TOKEN (STR_AUTO), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN (STR_GEN1), value = 1, flags = RESET_REQUIRED;
      option text = STRING_TOKEN (STR_GEN2), value = 2, flags = RESET_REQUIRED;
    endoneof;
    oneof varid   = Setup.PcieRootPortSpeed[1],
      prompt      = STRING_TOKEN (STR_PCIE_SPEED_PROMPT1),
      help        = STRING_TOKEN (STR_PCIE_SPEED_HELP),
      option text = STRING_TOKEN (STR_AUTO), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN (STR_GEN1), value = 1, flags = RESET_REQUIRED;
      option text = STRING_TOKEN (STR_GEN2), value = 2, flags = RESET_REQUIRED;
    endoneof;
    oneof varid   = Setup.PcieRootPortSpeed[2],
      prompt      = STRING_TOKEN (STR_PCIE_SPEED_PROMPT2),
      help        = STRING_TOKEN (STR_PCIE_SPEED_HELP),
      option text = STRING_TOKEN (STR_AUTO), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN (STR_GEN1), value = 1, flags = RESET_REQUIRED;
      option text = STRING_TOKEN (STR_GEN2), value = 2, flags = RESET_REQUIRED;
    endoneof;
    oneof varid   = Setup.PcieRootPortSpeed[3],
      prompt      = STRING_TOKEN (STR_PCIE_SPEED_PROMPT3),
      help        = STRING_TOKEN (STR_PCIE_SPEED_HELP),
      option text = STRING_TOKEN (STR_AUTO), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN (STR_GEN1), value = 1, flags = RESET_REQUIRED;
      option text = STRING_TOKEN (STR_GEN2), value = 2, flags = RESET_REQUIRED;
    endoneof;
  //
  //PCIe Port
  //
  oneof varid  = Setup.IchPciExp[0],
    prompt   = STRING_TOKEN(STR_ICH_PCIERP1_PROMPT),
    help     = STRING_TOKEN(STR_ICH_PCIERP_HELP),
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
  endoneof;

  suppressif ideqval Setup.IchPciExp[0] == 0x0;
    oneof varid    = Setup.IchPciExp[1],
      prompt   = STRING_TOKEN(STR_ICH_PCIERP2_PROMPT),
      help     = STRING_TOKEN(STR_ICH_PCIERP_HELP),
      option text = STRING_TOKEN(STR_ENABLE), value=1, flags= RESET_REQUIRED;
      option text = STRING_TOKEN(STR_DISABLE), value=0, flags= DEFAULT | MANUFACTURING | RESET_REQUIRED;
    endoneof;
  endif;

  suppressif NOT ideqval Setup.IchPciExp[0] == 0x0;
  text
    help   = STRING_TOKEN(STR_ICH_PCIERP_HELP),
    text   = STRING_TOKEN(STR_ICH_PCIERP2_PROMPT),
    text   = STRING_TOKEN(STR_ICH_PCIERP_DISABLE_HELP),
    flags  = 0,
    key    = 0;
  endif;

  suppressif ideqval Setup.IchPciExp[0] == 0x0;
    oneof varid    = Setup.IchPciExp[2],
      prompt   = STRING_TOKEN(STR_ICH_PCIERP3_PROMPT),
      help     = STRING_TOKEN(STR_ICH_PCIERP_HELP),
      option text = STRING_TOKEN(STR_ENABLE), value=1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
    endoneof;
  endif;

  suppressif NOT ideqval Setup.IchPciExp[0] == 0x0;
  text
    help   = STRING_TOKEN(STR_ICH_PCIERP_HELP),
    text   = STRING_TOKEN(STR_ICH_PCIERP3_PROMPT),
    text   = STRING_TOKEN(STR_ICH_PCIERP_DISABLE_HELP),
    flags  = 0,
    key    = 0;
  endif;

  suppressif ideqval Setup.IchPciExp[0] == 0x0;
    oneof varid    = Setup.IchPciExp[3],
      prompt   = STRING_TOKEN(STR_ICH_PCIERP4_PROMPT),
      help     = STRING_TOKEN(STR_ICH_PCIERP_HELP),
      option text = STRING_TOKEN(STR_ENABLE), value=1, flags= DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_DISABLE), value=0, flags= 0 | RESET_REQUIRED;
    endoneof;
  endif;

  suppressif NOT ideqval Setup.IchPciExp[0] == 0x0;
  text
    help   = STRING_TOKEN(STR_ICH_PCIERP_HELP),
    text   = STRING_TOKEN(STR_ICH_PCIERP4_PROMPT),
    text   = STRING_TOKEN(STR_ICH_PCIERP_DISABLE_HELP),
    flags  = 0,
    key    = 0;
  endif;


endform;

form formid = USB_OPTIONS_FORM_ID,

  title    = STRING_TOKEN(STR_USB_OPTIONS_FORM_TITLE);

  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  oneof   varid   = Setup.UsbAutoMode,
    questionid  = 0x123A,
    prompt      = STRING_TOKEN(STR_USB_AUTO_MODE_PROMPT),
    help        = STRING_TOKEN(STR_USB_AUTO_MODE_HELP),
    flags       = INTERACTIVE,
    option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DISABLE), value = 0, flags =  RESET_REQUIRED;
  endoneof;

  subtitle text = STRING_TOKEN(STR_NULL_STRING);
  //
  //XHCI support
  //
  grayoutif ideqval Setup.UsbAutoMode == 0x1;
    grayoutif ideqval Setup.PchUsb20 == 0x1;
      oneof   varid   = Setup.UsbXhciSupport,
        questionid  = 0x123B,
        prompt      = STRING_TOKEN(STR_USB_XHCI_SUPPORT_PROMPT),
        help        = STRING_TOKEN(STR_USB_XHCI_SUPPORT_HELP),
        flags       = INTERACTIVE,
        option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
        option text = STRING_TOKEN(STR_DISABLE), value = 0, flags =  RESET_REQUIRED;
      endoneof;

      suppressif ideqval Setup.UsbXhciSupport == 0x0;
        oneof   varid   = Setup.Hsic0,
          prompt      = STRING_TOKEN(STR_USB_HSIC_0_PROMPT),
          help        = STRING_TOKEN(STR_USB_HSIC_0_HELP),
          option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
          option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
        endoneof;
      endif;

      oneof varid   = Setup.PchUsb30Mode,
        prompt      = STRING_TOKEN(STR_PCH_USB30_MODE_PROMPT),
        help        = STRING_TOKEN(STR_PCH_USB30_MODE_HELP),
        option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
        option text = STRING_TOKEN(STR_DISABLE), value = 0, flags =  RESET_REQUIRED;
      endoneof;

  oneof   varid   = Setup.UsbXhciLpmSupport,
        prompt      = STRING_TOKEN(STR_USB_XHCI_LPM_SUPPORT_PROMPT),
        help        = STRING_TOKEN(STR_USB_XHCI_LPM_SUPPORT_HELP),

        option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
        option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;

      endoneof;
    endif;
  endif;

  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  oneof varid   = Setup.PchUsbOtg,
    prompt      = STRING_TOKEN(STR_PCH_USB_OTG_PROMPT),
    help        = STRING_TOKEN(STR_PCH_USB_OTG_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
    option text = STRING_TOKEN(STR_PCI_MODE_STRING), value = 1, flags =  RESET_REQUIRED;
  endoneof;

  oneof varid   = Setup.PchUsbVbusOn,
    prompt      = STRING_TOKEN(STR_PCH_USB_VBUS_PROMPT),
    help        = STRING_TOKEN(STR_PCH_USB_VBUS_HELP),
    option text = STRING_TOKEN(STR_OFF), value = 0, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ON), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_AUTO), value = 2, flags = RESET_REQUIRED;
  endoneof;
  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  //
  //EHCI support
  //
  grayoutif ideqval Setup.UsbAutoMode == 0x1;
    grayoutif ideqval Setup.UsbXhciSupport == 0x1;
      oneof   varid   = Setup.PchUsb20,
        questionid  = 0x123C,
        prompt   = STRING_TOKEN(STR_PCH_USB21_PROMPT),
        help     = STRING_TOKEN(STR_PCH_USB2_HELP),
        flags    = INTERACTIVE,
        option text = STRING_TOKEN(STR_ENABLE), value = 1, flags =  RESET_REQUIRED;
        option text = STRING_TOKEN(STR_DISABLE), value= 0, flags= DEFAULT | MANUFACTURING |RESET_REQUIRED;
      endoneof;

      oneof varid  = Setup.PchUsbRmh,
        prompt   = STRING_TOKEN(STR_PCH_USBRMH_PROMPT),
        help     = STRING_TOKEN(STR_PCH_USBRMH_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;

      oneof varid  = Setup.PchEhciDebug,
        prompt   = STRING_TOKEN(STR_PCH_USB_EHCIDEBUG_PROMPT),
        help     = STRING_TOKEN(STR_PCH_USB_EHCIDEBUG_HELP),
        option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
        option text = STRING_TOKEN(STR_ENABLE),  value = 1, flags = RESET_REQUIRED;
      endoneof;

      suppressif TRUE;
        oneof varid   = Setup.EhciPllCfgEnable,
        prompt      = STRING_TOKEN(STR_EHCI_PLL_CFG_PROMPT),
        help        = STRING_TOKEN(STR_EHCI_PLL_CFG_RTD3_DIS_HELP),
        option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
        option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
        endoneof;
      endif;
    endif;

    //
    // Usb ports per-port disable control enable
    //
    oneof varid   = Setup.PchUsbPerPortCtl,
      prompt      = STRING_TOKEN(STR_PCH_USB_PER_PORT_PROMPT),
      help        = STRING_TOKEN(STR_PCH_USB_PER_PORT_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;

    suppressif ideqval Setup.PchUsbPerPortCtl == 0x0;
      oneof varid  = Setup.PchUsbPort[0],
      prompt   = STRING_TOKEN(STR_PCH_USB_PORT0_PROMPT),
      help     = STRING_TOKEN(STR_PCH_USB_PORT_DIS_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;

      oneof varid  = Setup.PchUsbPort[1],
      prompt   = STRING_TOKEN(STR_PCH_USB_PORT1_PROMPT),
      help     = STRING_TOKEN(STR_PCH_USB_PORT_DIS_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;

      oneof varid  = Setup.PchUsbPort[2],
      prompt   = STRING_TOKEN(STR_PCH_USB_PORT2_PROMPT),
      help     = STRING_TOKEN(STR_PCH_USB_PORT_DIS_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;

      oneof varid  = Setup.PchUsbPort[3],
      prompt   = STRING_TOKEN(STR_PCH_USB_PORT3_PROMPT),
      help     = STRING_TOKEN(STR_PCH_USB_PORT_DIS_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;


  endif;

endform;

//
// SATA Controller
//
form formid = DRIVE_CONFIGURATION_ID,

  title    = STRING_TOKEN(STR_IDE_FORM_TITLE);

  //
  // Title on Drive Configuration Page
  //
  text
    help   = STRING_TOKEN(STR_NULL_STRING),
    text   = STRING_TOKEN(STR_IDE_FORM_TITLE),
    text   = STRING_TOKEN(STR_NULL_STRING),
    flags  = 0,
    key    = 0;

  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  subtitle text = STRING_TOKEN(STR_CHIPSET_SATA_STRING);

  oneof varid   = Setup.Sata,
    prompt      = STRING_TOKEN(STR_SATA_PROMPT),
    help        = STRING_TOKEN(STR_SATA_HELP),
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
  endoneof;

    oneof varid   = Setup.SataTestMode,
      prompt      = STRING_TOKEN(STR_SATA_TEST_MODE_PROMPT),
      help        = STRING_TOKEN(STR_SATA_TEST_MODE_HELP),
      option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
      option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
    endoneof;

  suppressif ideqval Setup.Sata == 0x00;
    oneof varid   = Setup.SataType,
      prompt      = STRING_TOKEN(STR_SATA_TYPE_PROMPT),
      help        = STRING_TOKEN(STR_SATA_TYPE_HELP1),
      option text = STRING_TOKEN(STR_SATA_IDE), value = 0, flags = RESET_REQUIRED;
      option text = STRING_TOKEN(STR_SATA_AHCI), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
    endoneof;

    text
      help   = STRING_TOKEN(STR_NULL_STRING),
      text   = STRING_TOKEN(STR_SATA0_STRING),
      text   = STRING_TOKEN(STR_SATA0_NAME),
      flags  = 0,
      key    = 0;

    text
      help   = STRING_TOKEN(STR_NULL_STRING),
      text   = STRING_TOKEN(STR_SATA1_STRING),
      text   = STRING_TOKEN(STR_SATA1_NAME),
      flags  = 0,
      key    = 0;

    suppressif ideqval Setup.SataType == 0x0;
      oneof varid   = Setup.Sata0HotPlugCap,
        prompt      = STRING_TOKEN(STR_SATA0_HOTPLUG_CAP_PROMPT),
        help        = STRING_TOKEN(STR_SATA_HOTPLUG_CAP_HELP),
        option text = STRING_TOKEN(STR_ENABLE), value= 1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
        option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
      endoneof;

      oneof varid   = Setup.Sata1HotPlugCap,
        prompt      = STRING_TOKEN(STR_SATA1_HOTPLUG_CAP_PROMPT),
        help        = STRING_TOKEN(STR_SATA_HOTPLUG_CAP_HELP),
        option text = STRING_TOKEN(STR_ENABLE), value= 1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
        option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
      endoneof;
    endif;

  endif;  //SATA enable

endform;

form formid = LPSS_CONFIGURATION_ID,

  title    = STRING_TOKEN(STR_LPSS_SCC_FORM_TITLE);

  subtitle text = STRING_TOKEN(STR_NULL_STRING);
  oneof varid   = Setup.LpssPciModeEnabled,
    prompt      = STRING_TOKEN(STR_LPSS_PCI_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_PCI_HELP),
    option text = STRING_TOKEN(STR_ACPI_MODE), value=0, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_PCI_MODE), value=1, flags=0| RESET_REQUIRED;
  endoneof;
  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  subtitle text = STRING_TOKEN(STR_SCC_SETTING_SUBTITLE);
  oneof varid   = Setup.eMMCBootMode,
    prompt      = STRING_TOKEN(STR_EMMC_BOOT_PROMPT),
    help        = STRING_TOKEN(STR_EMMC_BOOT_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_AUTO_DETECT), value=1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC_BOOT_41), value=2, flags=0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC_BOOT_45), value=3, flags=0 | RESET_REQUIRED;
  endoneof;



   oneof varid   = Setup.SecureErase,
    questionid  = 0x1240,
    prompt      = STRING_TOKEN(STR_SECURE_ERASE_PROMPT),
    help        = STRING_TOKEN(STR_SECURE_ERASE_HELP),
    flags       = INTERACTIVE,
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags= DEFAULT |MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= RESET_REQUIRED;
  endoneof;



   subtitle text = STRING_TOKEN(STR_NULL_STRING);
grayoutif NOT ideqval Setup.eMMCBootMode == 0x3;
  oneof varid   = Setup.LpsseMMC45Enabled,
    prompt      = STRING_TOKEN(STR_SCC_EMMC45_PROMPT),
    help        = STRING_TOKEN(STR_SCC_EMMC45_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags=DEFAULT | RESET_REQUIRED;
  endoneof;
  oneof varid   = Setup.LpsseMMC45DDR50Enabled,
    prompt      = STRING_TOKEN(STR_SCC_EMMC45_DDR50_PROMPT),
    help        = STRING_TOKEN(STR_SCC_EMMC45_DDR50_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags=DEFAULT | RESET_REQUIRED;
  endoneof;
    oneof varid   = Setup.LpsseMMC45HS200Enabled,
    prompt      = STRING_TOKEN(STR_SCC_EMMC45_HS200_PROMPT),
    help        = STRING_TOKEN(STR_SCC_EMMC45_HS200_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags=DEFAULT| RESET_REQUIRED;
  endoneof;

  grayoutif ideqval Setup.LpsseMMC45DDR50Enabled == 0x1;
  oneof varid  = Setup.LpsseMMC45RetuneTimerValue,
    prompt = STRING_TOKEN(STR_SCC_EMMC45_RE_TUNE_TIMER_VALUE),
    help   = STRING_TOKEN(STR_SCC_EMMC45_RE_TUNE_TIMER_VALUE_HELP),
    option text = STRING_TOKEN(STR_EMMC45_TIMER_0), value = 0, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_1), value =1, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_2), value =2, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_3), value =3, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_4), value =4, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_5), value =5, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_6), value =6, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_7), value =7, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_8), value =8, flags = MANUFACTURING| DEFAULT|RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_9), value =9, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_10), value =10, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_11), value =11, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_12), value =12, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_13), value =13, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_14), value =14, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_EMMC45_TIMER_15), value =15, flags = RESET_REQUIRED;
  endoneof;
  endif;    // grayoutif ideqval Setup.LpsseMMC45DDR50Enabled == 0x1;
 endif;     // grayoutif NOT ideqval Setup.eMMCBootMode == 0x1;

  subtitle text = STRING_TOKEN(STR_NULL_STRING);
  subtitle text = STRING_TOKEN(STR_NULL_STRING);
  oneof varid   = Setup.LpssSdioEnabled,
    prompt      = STRING_TOKEN(STR_SCC_SDIO_PROMPT),
    help        = STRING_TOKEN(STR_SCC_SDIO_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
  endoneof;

  oneof varid   = Setup.LpssSdcardEnabled,
    prompt      = STRING_TOKEN(STR_SCC_SDCARD_PROMPT),
    help        = STRING_TOKEN(STR_SCC_SDCARD_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= DEFAULT|MANUFACTURING | RESET_REQUIRED;
  endoneof;


grayoutif NOT ideqval Setup.LpssSdcardEnabled == 0x1;
  grayoutif ideqval Setup.LpssSdCardDDR50Enabled == 0x1;
  oneof varid   = Setup.LpssSdCardSDR25Enabled,
    prompt      = STRING_TOKEN(STR_SCC_SD_SDR25_PROMPT),
    help        = STRING_TOKEN(STR_SCC_SD_SDR25_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;
  endif; // grayoutif ideqval Setup.LpsseMMC45DDR50Enabled == 0x1;

  grayoutif ideqval Setup.LpssSdCardSDR25Enabled == 0x1;
    oneof varid   = Setup.LpssSdCardDDR50Enabled,
    prompt      = STRING_TOKEN(STR_SCC_SD_DDR50_PROMPT),
    help        = STRING_TOKEN(STR_SCC_SD_DDR50_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;
  endif; // grayoutif ideqval Setup.LpssSdCardSDR25Enabled == 0x1;

  oneof varid   = Setup.SdCardRemovable,
    prompt      = STRING_TOKEN(STR_SCC_SDCARD_REMOVABILITY),
    help        = STRING_TOKEN(STR_SCC_SDCARD_REMOVABILITY_HELP),
    option text = STRING_TOKEN(STR_SCC_SDCARD_NON_REMOVABLE), value=0, flags=0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_SCC_SDCARD_REMOVABLE), value=1, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
  endoneof;

endif;     // grayoutif NOT ideqval Setup.LpssSdcardEnabled == 0x1;



  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  subtitle text = STRING_TOKEN(STR_LPSS1_SETTING_SUBTITLE);

  oneof varid   = Setup.LpssDma0Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_DMA1_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_DMA1_HELP),
    flags       = INTERACTIVE,
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= DEFAULT | MANUFACTURING | RESET_REQUIRED;
  endoneof;

  grayoutif ideqval Setup.LpssDma0Enabled == 0x00;
  oneof varid   = Setup.LpssHsuart0Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_HSUART1_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_HSUART1_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags= MANUFACTURING  | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= 0 | DEFAULT | RESET_REQUIRED;
  endoneof;
  endif;

  //Add control flow
  grayoutif ideqval Setup.LpssHsuart0Enabled == 0x00;
  oneof varid   = Setup.LpssHsuart0FlowControlEnabled,
    prompt      = STRING_TOKEN(STR_LPSS_HSUART1_FLOWCONTROL_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_HSUART1_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= MANUFACTURING  | RESET_REQUIRED;
  endoneof;
  endif;

  grayoutif ideqval Setup.LpssDma0Enabled == 0x00;
  oneof varid   = Setup.LpssHsuart1Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_HSUART2_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_HSUART2_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=MANUFACTURING  | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= 0 | DEFAULT | RESET_REQUIRED;
  endoneof;
  endif;

  //Add control flow
  grayoutif ideqval Setup.LpssHsuart1Enabled == 0x00;
  oneof varid   = Setup.LpssHsuart1FlowControlEnabled,
    prompt      = STRING_TOKEN(STR_LPSS_HSUART2_FLOWCONTROL_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_HSUART1_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= MANUFACTURING  | RESET_REQUIRED;
  endoneof;
  endif;


  grayoutif ideqval Setup.LpssDma0Enabled == 0x00;
  oneof varid   = Setup.LpssPwm0Enabled,
    prompt      = STRING_TOKEN(STR_PWM1_PROMPT),
    help        = STRING_TOKEN(STR_PWM1_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=MANUFACTURING  | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= 0 | DEFAULT | RESET_REQUIRED;
  endoneof;
  endif;

  grayoutif ideqval Setup.LpssDma0Enabled == 0x00;
  oneof varid   = Setup.LpssPwm1Enabled,
    prompt      = STRING_TOKEN(STR_PWM2_PROMPT),
    help        = STRING_TOKEN(STR_PWM2_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=MANUFACTURING  | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= 0 | DEFAULT | RESET_REQUIRED;
  endoneof;
  endif;

  grayoutif ideqval Setup.LpssDma0Enabled == 0x00;
  oneof varid   = Setup.LpssSpiEnabled,
    prompt      = STRING_TOKEN(STR_LPSS_SPI_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_SPI_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=MANUFACTURING  | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= 0 |DEFAULT | RESET_REQUIRED;
  endoneof;
  endif;

  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  subtitle text = STRING_TOKEN(STR_LPSS2_SETTING_SUBTITLE);

  oneof varid   = Setup.LpssDma1Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_DMA2_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_DMA2_HELP),
    flags       = INTERACTIVE,
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= DEFAULT | MANUFACTURING | RESET_REQUIRED;
  endoneof;

/*
  grayoutif ideqval Setup.LpssDma1Enabled == 0x00;
  oneof varid   = Setup.LpssI2C0Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_I2C1_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_I2C1_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |DEFAULT |RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= MANUFACTURING | RESET_REQUIRED;
  endoneof;
  endif;


  grayoutif ideqval Setup.LpssDma1Enabled == 0x00;
  oneof varid   = Setup.LpssI2C1Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_I2C2_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_I2C2_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= MANUFACTURING | RESET_REQUIRED;
  endoneof;
  endif;

  grayoutif ideqval Setup.LpssDma1Enabled == 0x00;
  oneof varid   = Setup.LpssI2C2Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_I2C3_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_I2C3_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= MANUFACTURING | RESET_REQUIRED;
  endoneof;
  endif;

  grayoutif ideqval Setup.LpssDma1Enabled == 0x00;
  oneof varid   = Setup.LpssI2C3Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_I2C4_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_I2C4_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= MANUFACTURING | RESET_REQUIRED;
  endoneof;
  endif;

  grayoutif ideqval Setup.LpssDma1Enabled == 0x00;
  oneof varid   = Setup.LpssI2C4Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_I2C5_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_I2C5_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |DEFAULT | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= MANUFACTURING | RESET_REQUIRED;
  endoneof;
  endif;
*/
  grayoutif ideqval Setup.LpssDma1Enabled == 0x00;
  oneof varid   = Setup.LpssI2C5Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_I2C6_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_I2C6_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags=  DEFAULT |MANUFACTURING | RESET_REQUIRED;
  endoneof;
  endif;

  grayoutif ideqval Setup.LpssDma1Enabled == 0x00;
  oneof varid   = Setup.LpssI2C6Enabled,
    prompt      = STRING_TOKEN(STR_LPSS_I2C7_PROMPT),
    help        = STRING_TOKEN(STR_LPSS_I2C7_HELP_ENBDT_DEV_LIST),
    option text = STRING_TOKEN(STR_DISABLE), value=0, flags=0 |RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=1, flags= DEFAULT | MANUFACTURING | RESET_REQUIRED;
  endoneof;
  endif;

  subtitle text = STRING_TOKEN(STR_NULL_STRING);

  subtitle text = STRING_TOKEN(STR_I2C_DEVICE_SETTING_SUBTITLE);

  oneof varid   = Setup.I2CTouchAd,
    prompt      = STRING_TOKEN(STR_I2C_TOUCH_PROMPT),
    help        = STRING_TOKEN(STR_I2C_TOUCH_HELP),
    option text = STRING_TOKEN(STR_AUTO), value=0, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_I2C_FVP), value=0x4B, flags=0 | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_I2C_FFRD), value=0x4A, flags=0 | RESET_REQUIRED;
  endoneof;

 subtitle text = STRING_TOKEN(STR_NULL_STRING);

 oneof varid = Setup.SAR1,
    prompt         = STRING_TOKEN(STR_SAR_SENSOR_PROMPT),
    help           = STRING_TOKEN(STR_SAR_SENSOR_HELP),
    option text    = STRING_TOKEN(STR_ENABLE), value = 1, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
  endoneof;
endform;


//
//LAN Controller
//
form formid = LAN_OPTIONS_FORM_ID,

  title    = STRING_TOKEN(STR_LAN_OPTIONS_FORM_TITLE);

  subtitle text = STRING_TOKEN(STR_LAN_OPTIONS_FORM_TITLE);

  oneof varid = Setup.Lan,
    prompt   = STRING_TOKEN(STR_PCH_LAN_CONTROLLER),
    help     = STRING_TOKEN(STR_PCH_LAN_CONTROLLER_HELP),
    option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
    option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
  endoneof;

  suppressif ideqval Setup.Lan == 0;
    oneof varid = Setup.WakeOnLanS5,
      prompt   = STRING_TOKEN(STR_PCH_LAN_WOL_PROMPT),
      help     = STRING_TOKEN(STR_PCH_LAN_WOL_HELP),
      option text = STRING_TOKEN(STR_ENABLE), value = 1, flags =  DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
    endoneof;

    oneof varid = Setup.SlpLanLowDc,
      prompt   = STRING_TOKEN(STR_PCH_SLP_LAN_LOW_DC_PROMPT),
      help     = STRING_TOKEN(STR_PCH_SLP_LAN_LOW_DC_HELP),
      option text = STRING_TOKEN(STR_ENABLE), value = 1, flags =  DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
    endoneof;

    oneof varid = Setup.BootNetwork,
      prompt   = STRING_TOKEN(STR_PCH_PXEROM_CONTROL),
      help     = STRING_TOKEN(STR_PCH_PXEROM_CONTROL_HELP),
      option text = STRING_TOKEN(STR_ENABLE), value = 1, flags =  RESET_REQUIRED;
      option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
    endoneof;
  endif;

endform;

//
// Azalia Configuration
//
form formid = AZALIA_OPTIONS_FORM_ID,

  title    = STRING_TOKEN(STR_AZALIA_OPTIONS_FORM_TITLE);

  subtitle text = STRING_TOKEN(STR_AZALIA_OPTIONS_FORM_TITLE);
  oneof varid   = Setup.Lpe,
      prompt      = STRING_TOKEN(STR_LPE_PROMPT),
      help        = STRING_TOKEN(STR_LPE_HELP),
      option text = STRING_TOKEN(STR_DISABLE), value=0, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_LPE_PCI_MODE), value=1, flags=0 | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_LPE_ACPI_MODE), value=2, flags=0 | RESET_REQUIRED;
  endoneof;

  grayoutif NOT ideqval Setup.Lpe == 0x2;
  oneof varid   = Setup.LpeAudioReportedByDSDT,
      prompt      = STRING_TOKEN(STR_LPE_REPORTED_BY_DSDT_PROMPT),
      help        = STRING_TOKEN(STR_LPE_REPORTED_BY_DSDT_HELP),
      option text = STRING_TOKEN(STR_DISABLE), value=0, flags=DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_ENABLE), value=1, flags=RESET_REQUIRED;
  endoneof;
  endif;

  subtitle text = STRING_TOKEN(STR_NULL_STRING);
  suppressif ideqval Setup.AzaliaDs == 0x1;
    oneof varid  = Setup.PchAzalia,
      prompt   = STRING_TOKEN(STR_PCH_AZALIA_PROMPT),
      help     = STRING_TOKEN(STR_PCH_AZALIA_HELP),
      option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = 0 | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
    endoneof;
  endif;

  suppressif ideqval Setup.AzaliaDs == 0x0;
    text
      help   = STRING_TOKEN(STR_PCH_AZALIA_DS_SUPPORT),
      text   = STRING_TOKEN(STR_PCH_AZALIA_PROMPT),
      text   = STRING_TOKEN(STR_ENABLE),
      flags  = 0,
      key    = 0;
  endif;

  suppressif ideqval Setup.PchAzalia == 0x0;
    oneof varid  = Setup.AzaliaVCiEnable,
      prompt   = STRING_TOKEN(STR_AZALIA_VC_PROMPT),
      help     = STRING_TOKEN(STR_AZALIA_VC_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;

  suppressif ideqval Setup.PchAzalia == 0x0;
    oneof varid  = Setup.AzaliaDs,
      prompt   = STRING_TOKEN(STR_AZALIA_DS_PROMPT),
      help     = STRING_TOKEN(STR_AZALIA_DS_HELP),
      option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
      option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
    endoneof;
  endif;

  suppressif ideqval Setup.PchAzalia == 0x0;
    oneof varid  = Setup.AzaliaPme,
      prompt   = STRING_TOKEN(STR_AZALIA_PME_PROMPT),
      help     = STRING_TOKEN(STR_AZALIA_PME_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;

    oneof varid  = Setup.HdmiCodec,
      prompt   = STRING_TOKEN(STR_HDMI_CODEC_PROMPT),
      help     = STRING_TOKEN(STR_HDMI_CODEC_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;

endform;

//
//  Misc Configuration
//
form formid = MISC_OPTIONS_FORM_ID,

  title    = STRING_TOKEN(STR_MISC_OPTION_FORM_TITLE);

  subtitle text = STRING_TOKEN(STR_MISC_OPTION_FORM_TITLE);
  //
  // HPET Disable/Enable
  //
  oneof   varid   = Setup.Hpet,
    prompt      = STRING_TOKEN(STR_HPET_PROMPT),
    help        = STRING_TOKEN(STR_HPET_HELP),
    option text = STRING_TOKEN(STR_DISABLE), value=0x00, flags=RESET_REQUIRED;
    option text = STRING_TOKEN(STR_ENABLE), value=0x01, flags=DEFAULT | RESET_REQUIRED;
  endoneof;

  oneof varid  = Setup.StateAfterG3,
     prompt   = STRING_TOKEN(STR_STATE_AFTER_G3),
     help     = STRING_TOKEN(STR_STATE_AFTER_G3_HELP),
     option text = STRING_TOKEN(STR_S0_AFTER_G3_STRING), value = 0, flags = DEFAULT | RESET_REQUIRED;
     option text = STRING_TOKEN(STR_S5_AFTER_G3_STRING), value = 1, flags = MANUFACTURING | RESET_REQUIRED;
  endoneof;

  oneof varid  = Setup.EnableClockSpreadSpec,
     prompt   = STRING_TOKEN(STR_CLOCK_SPREAD_SPEC_ENABLE),
     help     = STRING_TOKEN(STR_CLOCK_SPREAD_SPEC_ENABLE_HELP),
     option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
     option text = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
  endoneof;


  oneof varid  = Setup.UartInterface,
    prompt   = STRING_TOKEN(STR_PCH_UART_SELECT),
    help     = STRING_TOKEN(STR_PCH_UART_SELECT_HELP),
    option text = STRING_TOKEN(STR_UART_SELECT_PCU), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
    option text = STRING_TOKEN(STR_UART_SELECT_SIO), value = 1, flags = RESET_REQUIRED;
  endoneof;

  suppressif ideqval Setup.LpssHsuart0Enabled == 1 OR ideqval Setup.UartInterface == 1;
    oneof varid  = Setup.PcuUart1,
      prompt   = STRING_TOKEN(STR_PCU_UART_A),
      help     = STRING_TOKEN(STR_PCU_UART_A_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.SpiRwProtect,
    prompt         = STRING_TOKEN(STR_PCH_SPI_WP_PROMPT),
    help           = STRING_TOKEN(STR_PCH_SPI_WP_HELP),
    option text    = STRING_TOKEN(STR_PCH_SPI_WP_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_PCH_SPI_WP_ENABLE), value = 1, flags = RESET_REQUIRED;
  endoneof;

  oneof varid = Setup.MmioSize,
    prompt         = STRING_TOKEN(STR_MMIO_PROMPT),
    help           = STRING_TOKEN(STR_MMIO_HELP),
    option text    = STRING_TOKEN(STR_MMIO_0_75G_STRING), value = 0, flags = RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_MMIO_1G_STRING), value = 1, flags = RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_MMIO_1_25G_STRING), value = 2, flags = RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_MMIO_1_5G_STRING), value = 3, flags = RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_MMIO_2G_STRING), value = 4, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
  endoneof;

  oneof varid = Setup.PcieDynamicGating,
    prompt         = STRING_TOKEN(STR_PCIEDYNCLK_PROMPT),
    help           = STRING_TOKEN(STR_PCIEDYNCLK_HELP),
    option text    = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
  endoneof;

  oneof varid = Setup.GpioWakeCapability,
    prompt         = STRING_TOKEN(STR_GPIO_WAKE_CAPABILITY_ENABLE),
    help           = STRING_TOKEN(STR_GPIO_WAKE_CAPABILITY_ENABLE_HELP),
    option text    = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_ENABLE), value = 1, flags = RESET_REQUIRED;
  endoneof;

  oneof varid = Setup.RtcBattery,
    prompt         = STRING_TOKEN(STR_RTC_BATTERY),
    help           = STRING_TOKEN(STR_RTC_BATTERY_HELP),
    option text    = STRING_TOKEN(STR_RTC_BATTERY_NOT_PRESENT), value = 0, flags = RESET_REQUIRED;
    option text    = STRING_TOKEN(STR_RTC_BATTERY_PRESENT), value = 1, flags = DEFAULT | MANUFACTURING |RESET_REQUIRED;
  endoneof;

endform;

