blob: 88aad9b7b6046bcbe6f8cecbb9fc0f865d98ece2 [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/bind/bind.gni")
import("//build/components.gni")
import("//build/drivers.gni")
import("//build/test.gni")
import("//build/zbi/kernel_cmdline.gni")
declare_args() {
# If true, the driver component `fuchsia://fuchsia.com/amlogic-display#
# meta/amlogic-display.cm` will be the DFv2 version of the driver component
# (`:amlogic-display-dfv2`). Otherwise, it will be the DFv1 version of the
# driver component (`:amlogic-display-dfv1`).
#
# TODO(https://fxbug.dev/323061435): Enable the DFv2 amlogic-display driver
# by default.
amlogic_display_is_dfv2 = false
}
driver_bind_rules("amlogic_display_bind") {
rules = "amlogic-display.bind"
bind_output = "amlogic-display.bindbc"
tests = "bind_tests.json"
deps = [
"//sdk/fidl/fuchsia.hardware.amlogiccanvas:fuchsia.hardware.amlogiccanvas_bindlib",
"//sdk/fidl/fuchsia.hardware.gpio:fuchsia.hardware.gpio_bindlib",
"//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_bindlib",
"//src/devices/bind/fuchsia.amlogic.platform",
"//src/devices/bind/fuchsia.gpio",
"//src/devices/bind/fuchsia.platform",
]
}
source_set("common_srcs") {
configs += [
"//build/config:all_source",
"//build/config/fuchsia:enable_zircon_asserts",
]
sources = [
"board-resources.cc",
"board-resources.h",
"capture.cc",
"capture.h",
"clock-regs.cc",
"clock-regs.h",
"clock.cc",
"clock.h",
"common.h",
"display-engine.cc",
"display-engine.h",
"dsi-host.cc",
"dsi-host.h",
"dsi.h",
"fixed-point-util.h",
"gpio-mux-regs.h",
"hdmi-host.cc",
"hdmi-host.h",
"hdmi-transmitter-top-regs.h",
"hdmi-transmitter.cc",
"hdmi-transmitter.h",
"hdmitx-clk.cc",
"hhi-regs.h",
"hot-plug-detection.cc",
"hot-plug-detection.h",
"image-info.cc",
"image-info.h",
"initcodes-inl.h",
"lcd.cc",
"lcd.h",
"logging.cc",
"logging.h",
"mipi-phy.cc",
"mipi-phy.h",
"panel-config.cc",
"panel-config.h",
"panel/boe-tv070wsm-fitipower-jd9364-astro.h",
"panel/boe-tv070wsm-fitipower-jd9364-nelson.h",
"panel/boe-tv070wsm-fitipower-jd9365.h",
"panel/boe-tv101wxm-fitipower-jd9364.h",
"panel/boe-tv101wxm-fitipower-jd9365.h",
"panel/innolux-p070acb-fitipower-jd9364.h",
"panel/innolux-p101dez-fitipower-jd9364.h",
"panel/kd-kd070d82-fitipower-jd9364.h",
"panel/kd-kd070d82-fitipower-jd9365.h",
"panel/microtech-mtf050fhdi03-novatek-nt35596.h",
"pixel-grid-size2d.h",
"power-regs.h",
"rdma-regs.h",
"rdma.cc",
"rdma.h",
"video-input-regs.h",
"video-input-unit.cc",
"video-input-unit.h",
"vout.cc",
"vout.h",
"vpp-regs.h",
"vpu-regs.h",
"vpu.cc",
"vpu.h",
"vsync-receiver.cc",
"vsync-receiver.h",
]
public_deps = [
"//sdk/banjo/fuchsia.hardware.display.controller:fuchsia.hardware.display.controller_banjo_cpp",
"//sdk/banjo/fuchsia.hardware.dsiimpl:fuchsia.hardware.dsiimpl_banjo_cpp",
"//sdk/banjo/fuchsia.hardware.i2cimpl:fuchsia.hardware.i2cimpl_banjo_cpp",
"//sdk/fidl/fuchsia.hardware.amlogiccanvas:fuchsia.hardware.amlogiccanvas_cpp",
"//sdk/fidl/fuchsia.hardware.gpio:fuchsia.hardware.gpio_cpp",
"//sdk/fidl/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_cpp",
"//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_cpp",
"//src/devices/lib/mmio",
"//src/graphics/display/lib/api-types-cpp",
"//src/graphics/display/lib/designware-dsi:dsi-host-controller",
"//src/graphics/display/lib/designware-hdmi:hdmi-transmitter-controller-impl",
"//src/graphics/display/lib/device-protocol-display",
"//src/graphics/display/lib/driver-framework-migration-utils/dispatcher",
"//src/graphics/display/lib/driver-framework-migration-utils/logging:zxlogf",
"//src/graphics/display/lib/driver-framework-migration-utils/metadata:metadata-getter",
"//src/graphics/display/lib/driver-framework-migration-utils/namespace",
"//src/graphics/display/lib/mipi-dsi",
"//src/lib/fxl",
"//zircon/system/ulib/async:async-cpp",
"//zircon/system/ulib/fbl",
"//zircon/system/ulib/hwreg",
"//zircon/system/ulib/image-format",
"//zircon/system/ulib/inspect",
"//zircon/system/ulib/sysmem-version",
"//zircon/system/ulib/zx",
]
# TODO(https://fxbug.dev/42176699): This target uses mutable tables which are deprecated,
# rather than builders.
configs += [ "//build/cpp:fidl-wire-deprecated-mutable-tables" ]
# TODO(https://fxbug.dev/42085293): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-vla-cxx-extension" ]
}
fuchsia_driver("amlogic-display-dfv1-driver") {
output_name = "amlogic-display-dfv1"
sources = [
"display-device-driver-dfv1.cc",
"display-device-driver-dfv1.h",
]
deps = [
":amlogic_display_bind",
":common_srcs",
"//src/devices/lib/driver",
"//src/graphics/display/lib/driver-framework-migration-utils/dispatcher:loop-backed-dispatcher",
"//src/graphics/display/lib/driver-framework-migration-utils/logging:logging-dfv1",
"//src/graphics/display/lib/driver-framework-migration-utils/metadata:metadata-getter-dfv1",
"//src/graphics/display/lib/driver-framework-migration-utils/namespace:namespace-dfv1",
"//src/lib/ddk",
"//src/lib/ddktl",
]
}
fuchsia_driver("amlogic-display-dfv2-driver") {
output_name = "amlogic-display-dfv2"
sources = [
"display-device-driver-dfv2.cc",
"display-device-driver-dfv2.h",
]
deps = [
":amlogic_display_bind",
":common_srcs",
"//sdk/lib/component/outgoing/cpp",
"//sdk/lib/driver/compat/cpp",
"//sdk/lib/driver/compat/cpp:logging",
"//sdk/lib/driver/component/cpp",
"//src/devices/bin/driver_runtime",
"//src/devices/bind/fuchsia:fuchsia_cpp",
"//src/devices/bind/fuchsia.display:fuchsia.display_cpp",
"//src/graphics/display/lib/driver-framework-migration-utils/dispatcher:driver-runtime-backed-dispatcher",
"//src/graphics/display/lib/driver-framework-migration-utils/logging:logging-dfv2",
"//src/graphics/display/lib/driver-framework-migration-utils/metadata:metadata-getter-dfv2",
"//src/graphics/display/lib/driver-framework-migration-utils/namespace:namespace-dfv2",
]
}
fuchsia_driver_component("amlogic-display-dfv1") {
if (amlogic_display_is_dfv2) {
component_name = "amlogic-display-dfv1-unused"
} else {
component_name = "amlogic-display"
}
info = "amlogic-display-info.json"
deps = [ ":amlogic-display-dfv1-driver" ]
manifest = "meta/amlogic-display-dfv1.cml"
}
fuchsia_driver_component("amlogic-display-dfv2") {
if (amlogic_display_is_dfv2) {
component_name = "amlogic-display"
} else {
component_name = "amlogic-display-dfv2-unused"
}
info = "amlogic-display-info.json"
deps = [ ":amlogic-display-dfv2-driver" ]
manifest = "meta/amlogic-display-dfv2.cml"
}
fuchsia_driver_package("package") {
package_name = "amlogic-display"
if (amlogic_display_is_dfv2) {
driver_components = [ ":amlogic-display-dfv2" ]
} else {
driver_components = [ ":amlogic-display-dfv1" ]
}
}
test("amlogic-display-test") {
configs += [ "//build/config:all_source" ]
sources = [
"clock-regs-test.cc",
"clock-test.cc",
"common-test.cc",
"display-engine-test.cc",
"fixed-point-util-test.cc",
"hdmi-transmitter-test.cc",
"hot-plug-detection-test.cc",
"panel-config-test.cc",
"pixel-grid-size2d-test.cc",
"power-regs-test.cc",
"video-input-regs-test.cc",
]
deps = [
":common_srcs",
"//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp_testing",
"//sdk/lib/async_patterns/testing/cpp",
"//src/devices/gpio/testing/fake-gpio",
"//src/devices/testing/fake-mmio-reg",
"//src/devices/testing/mock-ddk",
"//src/devices/testing/mock-mmio-range",
"//src/graphics/display/lib/driver-framework-migration-utils/dispatcher:loop-backed-dispatcher",
"//src/graphics/display/lib/driver-framework-migration-utils/logging:logging-dfv1",
"//src/graphics/display/lib/driver-framework-migration-utils/metadata:metadata-getter-dfv1",
"//src/graphics/display/lib/driver-framework-migration-utils/namespace:namespace-dfv1",
"//src/lib/ddk",
"//src/lib/ddktl",
"//src/lib/fsl",
"//src/lib/fxl/test:gtest_main",
"//src/lib/testing/loop_fixture",
"//src/lib/testing/predicates",
"//third_party/googletest:gmock",
"//third_party/googletest:gtest",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/async-loop:async-loop-default",
]
assert_no_deps = [ ":amlogic_display_bind" ]
}
group("tests") {
testonly = true
deps = [
":amlogic-display-test-package",
":amlogic_display_bind_test",
]
}
fuchsia_unittest_package("amlogic-display-test-package") {
package_name = "amlogic-display-test"
deps = [ ":amlogic-display-test" ]
test_specs = {
log_settings = {
max_severity = "ERROR"
}
}
}