# 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/drivers.gni")

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

fuchsia_driver("vim3-driver") {
  output_name = "vim3"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [
    "vim3-adc.cc",
    "vim3-audio.cc",
    "vim3-backlight.cc",
    "vim3-bluetooth.cc",
    "vim3-buttons.cc",
    "vim3-canvas.cc",
    "vim3-clk.cc",
    "vim3-cpu.cc",
    "vim3-display.cc",
    "vim3-emmc.cc",
    "vim3-eth.cc",
    "vim3-gpio.cc",
    "vim3-hrtimer.cc",
    "vim3-i2c.cc",
    "vim3-mali.cc",
    "vim3-mcu.cc",
    "vim3-nna.cc",
    "vim3-power.cc",
    "vim3-pwm.cc",
    "vim3-registers.cc",
    "vim3-sd.cc",
    "vim3-sdio.cc",
    "vim3-suspend.cc",
    "vim3-sysmem.cc",
    "vim3-temperature.cc",
    "vim3-touch.cc",
    "vim3-usb.cc",
    "vim3-video.cc",
    "vim3.cc",
  ]
  deps = [
    ":vim3-bind",
    "//sdk/banjo/fuchsia.hardware.ethernet:fuchsia.hardware.ethernet_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.sdmmc:fuchsia.hardware.sdmmc_banjo_cpp",
    "//sdk/fidl/fuchsia.buttons:fuchsia.buttons_cpp",
    "//sdk/fidl/fuchsia.hardware.adc:fuchsia.hardware.adc_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.amlogiccanvas:fuchsia.hardware.amlogiccanvas_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.clock:fuchsia.hardware.clock_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.clockimpl:fuchsia.hardware.clockimpl_cpp",
    "//sdk/fidl/fuchsia.hardware.ethernet.board:fuchsia.hardware.ethernet.board_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.gpio:fuchsia.hardware.gpio_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_cpp",
    "//sdk/fidl/fuchsia.hardware.gpu.mali:fuchsia.hardware.gpu.mali_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.i2c:fuchsia.hardware.i2c_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_cpp",
    "//sdk/fidl/fuchsia.hardware.power:fuchsia.hardware.power_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.pwm:fuchsia.hardware.pwm_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.pwm:fuchsia.hardware.pwm_cpp",
    "//sdk/fidl/fuchsia.hardware.registers:fuchsia.hardware.registers_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.sdio:fuchsia.hardware.sdio_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.sdmmc:fuchsia.hardware.sdmmc_cpp",
    "//sdk/fidl/fuchsia.hardware.serial:fuchsia.hardware.serial_cpp",
    "//sdk/fidl/fuchsia.hardware.suspend:fuchsia.hardware.suspend_cpp",
    "//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_cpp",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_cpp",
    "//sdk/fidl/fuchsia.hardware.trippoint:fuchsia.hardware.trippoint_cpp",
    "//sdk/fidl/fuchsia.hardware.usb.peripheral:fuchsia.hardware.usb.peripheral_cpp",
    "//sdk/fidl/fuchsia.hardware.usb.phy:fuchsia.hardware.usb.phy_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.vreg:fuchsia.hardware.vreg_bindlib_cpp",
    "//sdk/fidl/fuchsia.hardware.vreg:fuchsia.hardware.vreg_cpp",
    "//sdk/fidl/fuchsia.power.system:fuchsia.power.system_cpp",
    "//sdk/lib/driver/component/cpp:cpp",
    "//src/devices/bind/fuchsia:fuchsia_cpp",
    "//src/devices/bind/fuchsia.adc:fuchsia.adc_cpp",
    "//src/devices/bind/fuchsia.amlogic.platform:fuchsia.amlogic.platform_cpp",
    "//src/devices/bind/fuchsia.amlogic.platform.a311d:fuchsia.amlogic.platform.a311d_cpp",
    "//src/devices/bind/fuchsia.amlogic.platform.meson:fuchsia.amlogic.platform.meson_cpp",
    "//src/devices/bind/fuchsia.arm.platform:fuchsia.arm.platform_cpp",
    "//src/devices/bind/fuchsia.broadcom.platform:fuchsia.broadcom.platform_cpp",
    "//src/devices/bind/fuchsia.broadcom.platform.sdio:fuchsia.broadcom.platform.sdio_cpp",
    "//src/devices/bind/fuchsia.clock:fuchsia.clock_cpp",
    "//src/devices/bind/fuchsia.designware.platform:fuchsia.designware.platform_cpp",
    "//src/devices/bind/fuchsia.display:fuchsia.display_cpp",
    "//src/devices/bind/fuchsia.ethernet:fuchsia.ethernet_cpp",
    "//src/devices/bind/fuchsia.focaltech.platform:fuchsia.focaltech.platform_cpp",
    "//src/devices/bind/fuchsia.gpio:fuchsia.gpio_cpp",
    "//src/devices/bind/fuchsia.i2c:fuchsia.i2c_cpp",
    "//src/devices/bind/fuchsia.khadas.platform:fuchsia.khadas.platform_cpp",
    "//src/devices/bind/fuchsia.platform:fuchsia.platform_cpp",
    "//src/devices/bind/fuchsia.power:fuchsia.power_cpp",
    "//src/devices/bind/fuchsia.pwm:fuchsia.pwm_cpp",
    "//src/devices/bind/fuchsia.register:fuchsia.register_cpp",
    "//src/devices/bind/fuchsia.regulator:fuchsia.regulator_cpp",
    "//src/devices/bind/fuchsia.sdio:fuchsia.sdio_cpp",
    "//src/devices/bind/fuchsia.ti.platform:fuchsia.ti.platform_cpp",
    "//src/devices/bind/fuchsia.usb.phy:fuchsia.usb.phy_cpp",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/broadcom",
    "//src/devices/lib/driver",
    "//src/devices/lib/driver:driver_runtime",
    "//src/devices/lib/fidl-metadata",
    "//src/devices/lib/focaltech",
    "//src/devices/lib/mmio",
    "//src/devices/usb/lib/usb",
    "//src/devices/usb/lib/usb:cdc",
    "//src/devices/usb/lib/usb:dwc2",
    "//src/graphics/display/lib/device-protocol-display",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",

    # TODO(https://fxbug.dev/42113849): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/hwreg",
    "//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" ]
}

fuchsia_driver_component("vim3") {
  component_name = "vim3"
  deps = [ ":vim3-driver" ]
  info = "vim3-info.json"
  manifest = "meta/vim3.cml"
}

fuchsia_driver_package("package") {
  package_name = "vim3"
  driver_components = [ ":vim3" ]
}

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