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

driver_module("aml-g12-pdm") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "audio-stream-in.cc" ]

  deps = [
    ":aml_g12_pdm_bind",
    "//sdk/banjo/fuchsia.hardware.clock:fuchsia.hardware.clock_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.gpio:fuchsia.hardware.gpio_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.i2c",
    "//sdk/banjo/fuchsia.hardware.platform.device",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/driver",
    "//src/devices/lib/mmio",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//src/media/audio/lib/simple-audio-stream",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/audio-driver-proto",
    "//zircon/system/ulib/audio-proto-utils",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/inspect",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":aml_g12_pdm_bind_test",
    "test:test-package",
  ]
}
