# Copyright 2018 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=""

USE="${USE} cyan dptf touchview"

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

# 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"

# The device had ARC M in version 60 and will get ARC N in 61. This flag is
# used to decide the default behavior for data migration, when no policy was set
# by admin.
USE="${USE} arc_transition_m_to_n"

# Use ext4 crypto
USE="${USE} direncryption"

# Un-comment these lines to enable the serial port.
# TTY_CONSOLE="ttyS0"
# USE="${USE} pcserial"

# 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"

AFDO_PROFILE_SOURCE='airmont'

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

USE="${USE} -kernel-3_18"
USE="${USE} kernel-4_19"

USE="${USE} kernelnext"

USE="${USE} drm_atomic"

