# Copyright 2023 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/bazel/bazel_inputs.gni")
import("//build/bazel/drivers/bazel_driver_package.gni")
import("//build/bazel/wrappers.gni")
import("//build/bind/bind.gni")
import("//build/devicetree/devicetree.gni")
import("//build/devicetree/devicetree_visitor.gni")

group("tests") {
  testonly = true
  deps = [
    ":vim3-devicetree-bind_test",
    ":vim3-devicetree-test-package",
  ]
}

devicetree_fragment("meson-g12-common") {
  sources = [ "dts/meson-g12-common.dtsi.S" ]
}

devicetree_fragment("amlogic-a311d") {
  sources = [ "dts/amlogic-a311d.dtsi.S" ]
  deps = [
    ":meson-g12-common",
    "//src/devices/lib/amlogic",
  ]
}

devicetree_fragment("khadas-vim3-board") {
  sources = [ "dts/khadas-vim3-board.dtsi.S" ]
  deps = [
    ":amlogic-a311d",
    ":meson-g12-common",
    "//src/devices/lib/amlogic",
    "//zircon/system/ulib/ddk-platform-defs",
  ]
}

devicetree_fragment("vim3-power-config") {
  sources = [ "dts/vim3-power-config.dtsi" ]
  deps = [ ":khadas-vim3-board" ]
}

devicetree("vim3") {
  sources = [ "dts/vim3.dts" ]
  deps = [ ":vim3-power-config" ]
  golden = "dts/vim3.golden.dts"
}

driver_bind_rules("vim3-devicetree-bind") {
  rules = "vim3-devicetree.bind"
  tests = "bind-tests.json"
  deps = [
    "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_bindlib",
    "//src/devices/bind/fuchsia.khadas.platform",
  ]
}

bazel_driver_package("bazel_package") {
  bazel_target = "//src/devices/board/drivers/vim3-devicetree:vim3-devicetree"
  package_name = "vim3-devicetree"
  inputs = [
    "vim3-devicetree.cc",
    "vim3-devicetree.h",
  ]
}

bazel_fuchsia_test_package("vim3-devicetree-test-package") {
  test_package_name = "vim3-devicetree-test"
  test_component_names = [ "vim3-devicetree-test" ]

  # Integration test for the board driver requires these prebuilt artifacts:
  #   - devicetree blob (.dtb)
  #   - Platform bus driver (.far)
  #   - driver-test-realm package (.far)
  bazel_inputs = [
    ":vim3-dtb",
    "//sdk/lib/driver/devicetree/testing:devicetree-test-bazel-inputs",
  ]
  inputs = [
    "vim3-devicetree-test.cc",
    "vim3-devicetree.cc",
    "vim3-devicetree.h",
    "visitors/vim3-adc-buttons.cc",
    "visitors/vim3-adc-buttons.h",
    "visitors/vim3-gpio-buttons.cc",
    "visitors/vim3-gpio-buttons.h",
    "visitors/vim3-wifi.cc",
    "visitors/vim3-wifi.h",
    "visitors/vim3-nna.cc",
    "visitors/vim3-nna.h",
  ]
}

bazel_input_resource("vim3-dtb") {
  sources = [ "$target_out_dir/vim3.dtb" ]
  outputs = [ "{{source_file_part}}" ]
  deps = [ ":vim3" ]
}
