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

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

driver_module("as370") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  sources = [
    "as370-audio.cc",
    "as370-clock.cc",
    "as370-gpio.cc",
    "as370-i2c.cc",
    "as370-light.cc",
    "as370-nand.cc",
    "as370-power.cc",
    "as370-sdio.cc",
    "as370-thermal.cc",
    "as370-touch.cc",
    "as370-usb.cc",
    "as370.cc",
  ]
  deps = [
    ":as370-bind",
    "//sdk/banjo/fuchsia.hardware.gpio:fuchsia.hardware.gpio_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.bus",
    "//sdk/banjo/fuchsia.hardware.platform.device",
    "//sdk/banjo/fuchsia.hardware.shareddma",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_llcpp",
    "//src/devices/lib/as370",
    "//src/devices/lib/driver",
    "//src/devices/lib/mmio",
    "//src/devices/usb/lib/usb",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
  ]

  # TODO(fxbug.dev/47406): restore some form of data dependency on as370 and visalia
  # boot shims.
}

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