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

CHROMEOS_KERNEL_SPLITCONFIG="chromiumos-mediatek"
CHROMEOS_KERNEL_ARCH="arm64"

# TODO(b:109850061): upstream compiler should be able to support
# cortex-a73.cortex-a53, we may need to switch to it if we upgrade
# the compiler later.
BOARD_COMPILER_FLAGS="-march=armv8-a+crc -mtune=cortex-a57.cortex-a53 -mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard"

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

# Use hardware FPU instead of software
USE="${USE} hardfp"
# Support for neon-vfpv3
USE="${USE} neon"

# For the device tree installation
USE="${USE} device_tree"

# use kernel 4.19
USE="${USE} kernel-4_19"

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

# TODO(b:109850061): build error, need to be fixed
# needed by drm-tests
#USE="${USE} vulkan"

# Enables WebGL rendering
USE="${USE} drm_atomic"

# Set raster thread number=2
USE="${USE} big_little"

# Mali drivers require this
USE="${USE} gpu_sandbox_start_early"

# Turn on the video cards this board uses.
VIDEO_CARDS="mediatek"

# For MT8183 MINIGBM only
MTK_MINIGBM_PLATFORM="MT8183"

# Disable CrOS video decoder on this board because we haven't supported
# ImageProcessor at CrOS video decoder now.
USE="${USE} disable_cros_video_decoder"

# Enable HW codecs using V4L2 API.
USE="${USE} v4l2_codec"
