# Copyright 2020 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/config/fuchsia/rules.gni")

bind_rules("vim3-bind") {
  rules = "vim3.bind"
  output = "vim3-bind.h"
  tests = "bind-tests.json"
  deps = [
    "//src/devices/bind/fuchsia.khadas.platform",
    "//src/devices/bind/fuchsia.platform",
  ]
}

driver_module("vim3") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [
    "vim3-canvas.cc",
    "vim3-clk.cc",
    "vim3-display.cc",
    "vim3-emmc.cc",
    "vim3-eth.cc",
    "vim3-gpio.cc",
    "vim3-hdmi.cc",
    "vim3-i2c.cc",
    "vim3-mali.cc",
    "vim3-nna.cc",
    "vim3-pwm.cc",
    "vim3-registers.cc",
    "vim3-sd.cc",
    "vim3-sdio.cc",
    "vim3-sysmem.cc",
    "vim3-thermal.cc",
    "vim3-usb.cc",
    "vim3-video.cc",
    "vim3.cc",
  ]
  deps = [
    ":vim3-bind",
    "//sdk/banjo/fuchsia.hardware.clock:fuchsia.hardware.clock_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.clockimpl:fuchsia.hardware.clockimpl_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.ethernet:fuchsia.hardware.ethernet_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.gpio:fuchsia.hardware.gpio_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.iommu:fuchsia.hardware.iommu_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.sdmmc:fuchsia.hardware.sdmmc_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.serial:fuchsia.hardware.serial_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.usb.modeswitch:fuchsia.hardware.usb.modeswitch_banjo_cpp",
    "//sdk/banjo/fuchsia.sysmem:fuchsia.sysmem_banjo_c",
    "//sdk/fidl/fuchsia.hardware.serial:fuchsia.hardware.serial_c",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_c",
    "//sdk/fidl/fuchsia.hardware.usb.peripheral:fuchsia.hardware.usb.peripheral_llcpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/broadcom",
    "//src/devices/lib/driver",
    "//src/devices/lib/metadata:llcpp",
    "//src/devices/lib/mmio",
    "//src/devices/usb/lib/usb",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",

    # TODO(fxb/38132): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
  ]
}

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