# 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/config/fuchsia/rules.gni")
import("//build/unification/images/migrated_manifest.gni")

driver_module("hikey960") {
  defines = [ "_ALL_SOURCE" ]
  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  sources = [
    "hikey960-devices.c",
    "hikey960-dsi.c",
    "hikey960-gpio.c",
    "hikey960-i2c.c",
    "hikey960-sysmem.c",
    "hikey960-ufs.c",
    "hikey960-usb.c",
    "hikey960.c",
  ]
  deps = [
    "//sdk/banjo/ddk.protocol.gpio",
    "//sdk/banjo/ddk.protocol.gpioimpl",
    "//sdk/banjo/ddk.protocol.iommu",
    "//sdk/banjo/ddk.protocol.platform.bus",
    "//sdk/banjo/ddk.protocol.platform.device",
    "//sdk/banjo/ddk.protocol.usb.modeswitch",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//src/devices/lib/driver",
    "//src/devices/lib/hi3660",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/device-protocol-i2c",
    "//zircon/public/lib/sync",
    "//zircon/system/banjo/ddk.protocol.i2c",
  ]

  # TODO(47406): restore some form of data dependency on hikey960
  # boot shim.
}

driver_module("hi3660-i2c-test") {
  defines = [ "_ALL_SOURCE" ]
  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }

  # TODO: testonly = true
  sources = [ "hikey960-i2c-test.c" ]
  deps = [
    "//sdk/banjo/ddk.protocol.platform.device",
    "//src/devices/lib/driver",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/device-protocol-i2c",
    "//zircon/public/lib/sync",
    "//zircon/system/banjo/ddk.protocol.i2c",
  ]
}

migrated_manifest("hikey960-manifest") {
  deps = [ ":hikey960" ]
}

migrated_manifest("hi3660-i2c-test-manifest") {
  deps = [ ":hi3660-i2c-test" ]
}
