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