# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Initial value just for style purposes.
USE=""

# A flag to indicate this board is a -kernelnext board
USE="${USE} is-kernelnext"
USE="${USE} -has-kernelnext"
USE="${USE} cave-kernelnext"
USE="${USE} -kernel-3_18"
USE="${USE} kernel-4_19"

# Enable VMs
USE="${USE} kvm_host crosvm-gpu virtio_gpu"

# Require enable-experimental-kernel-vm-support experiment flag in order to
# enable crostini
USE="${USE} kvm_transition"

USE="${USE} als cave touchview has_keyboard_backlight"

# Allow consumer kiosk.
# NOTE: Deprecating feature. New board should NOT have it.
USE="${USE} allow_consumer_kiosk"

USE="${USE} direncryption"

# Avoid inhibiting the keyboard (which reports events from side buttons).
USE="${USE} keyboard_includes_side_buttons"

# Disable touchpad wakeup since it can't be turned off dynamically when the
# system is converted to tablet mode while it's suspended.
USE="${USE} -touchpad_wakeup"

# Disable unibuild on this legacy board. This is only for existing (as of Jan 2019)
# boards as all new boards must be unibuild enabled moving forward. Do not copy this
# to new boards as it will be rejected. See
# https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-config/README.md
# for further details about chromeos-config, which is the required entry point for
# unified builds.
USE="${USE} -unibuild"

# Uncomment this line to activate the serial port.
#TTY_CONSOLE="ttyS0"
AFDO_PROFILE_SOURCE='broadwell'

# Enable background blur.
USE="${USE} background_blur"
