# 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")
import("//build/test.gni")
import("//build/test/test_package.gni")

bind_rules("aml-thermal-s905d2g-legacy-bind") {
  rules = "aml-thermal-s905d2g-legacy.bind"
  output = "aml-thermal-bind.h"
  tests = "aml-thermal-s905d2g-legacy-bind-test.json"
  deps = [
    "//src/devices/bind/amlogic.platform",
    "//src/devices/bind/fuchsia.composite",
  ]
}

driver_module("aml-thermal-s905d2g-legacy") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
    "//build/unification/config:zircon-migrated",
  ]
  sources = [
    "aml-cpufreq.cc",
    "aml-fclk-rates.c",
    "aml-thermal.cc",
    "aml-tsensor.cc",
    "aml-voltage.cc",
  ]
  deps = [
    ":aml-thermal-s905d2g-legacy-bind",
    "//sdk/banjo/ddk.protocol.clock",
    "//sdk/banjo/ddk.protocol.composite",
    "//sdk/banjo/ddk.protocol.gpio",
    "//sdk/banjo/ddk.protocol.i2c",
    "//sdk/banjo/ddk.protocol.platform.device",
    "//sdk/banjo/ddk.protocol.pwm",
    "//sdk/banjo/ddk.protocol.thermal",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_c",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/bus/lib/device-protocol-platform-device",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/driver",
    "//src/devices/lib/mmio",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fidl-utils",
  ]
}

test("aml-thermal-s905d2g-legacy-test") {
  configs += [
    "//build/config:all_source",
    "//build/unification/config:zircon-migrated",
  ]
  output_name = "aml-thermal-s905d2g-legacy-test"
  sources = [
    "aml-cpufreq.cc",
    "aml-fclk-rates.c",
    "aml-thermal-test.cc",
    "aml-thermal.cc",
    "aml-tsensor.cc",
    "aml-voltage.cc",
  ]
  deps = [
    ":aml-thermal-s905d2g-legacy-bind",
    "//sdk/banjo/ddk.protocol.clock",
    "//sdk/banjo/ddk.protocol.composite",
    "//sdk/banjo/ddk.protocol.gpio",
    "//sdk/banjo/ddk.protocol.i2c",
    "//sdk/banjo/ddk.protocol.platform.device",
    "//sdk/banjo/ddk.protocol.pwm",
    "//sdk/banjo/ddk.protocol.pwm:ddk.protocol.pwm_mock",
    "//sdk/banjo/ddk.protocol.thermal",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_c",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/bus/lib/device-protocol-platform-device",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/mmio",
    "//src/devices/testing/fake_ddk",
    "//src/devices/testing/mock-mmio-reg",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/mock-function",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fidl-utils",
  ]
}

unittest_package("aml-thermal-s905d2g-legacy-test-package") {
  package_name = "aml-thermal-s905d2g-legacy-test"
  deps = [ ":aml-thermal-s905d2g-legacy-test" ]

  tests = [
    {
      name = "aml-thermal-s905d2g-legacy-test"
      environments = basic_envs
    },
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":aml-thermal-s905d2g-legacy-bind_test",
    ":aml-thermal-s905d2g-legacy-test-package",
  ]
}
