# 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:fuchsia.hardware.platform.device_banjo_cpp",
    "//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" ]
}
