# 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("//src/sys/build/components.gni")

group("tests") {
  testonly = true
  deps = [ ":aml_mipi_bind_test" ]
}

bind_rules("aml_mipi_bind") {
  rules = "aml_mipi.bind"
  output = "bind.h"
  tests = "bind_tests.json"
  deps = [ "//src/devices/bind/amlogic.platform" ]
}

driver_module("aml_mipicsi_driver") {
  output_name = "aml_mipicsi"
  sources = [
    "aml_mipi.cc",
    "aml_mipi.h",
    "aml_mipi_adap.cc",
    "aml_mipi_debug.cc",
    "aml_mipi_regs.h",
  ]
  deps = [
    ":aml_mipi_bind",
    "//sdk/banjo/fuchsia.hardware.mipicsi",
    "//sdk/banjo/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.device",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/bus/lib/device-protocol-platform-device",
    "//src/devices/lib/driver",
    "//src/devices/lib/mmio",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/safemath",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/fzl",
  ]
}

fuchsia_system_package("driver_package") {
  package_name = "aml-mipicsi"
  deps = [ ":aml_mipicsi_driver" ]
  allowed_in_extra_deps = true
}

group("aml_mipicsi") {
  deps = [ ":driver_package" ]
}
