# 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("dw_spi-bind") {
  rules = "dw_spi.bind"
  output = "dw_spi-bind.h"
  tests = "tests.json"
  deps = [ "//src/devices/bind/fuchsia.platform" ]
}

driver_module("dw-spi") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  sources = [ "dw-spi.cc" ]
  deps = [
    ":dw_spi-bind",
    "//sdk/banjo/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.device",
    "//sdk/banjo/fuchsia.hardware.spiimpl",
    "//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/ddktl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/sync",
  ]
}

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