# 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/zbi/kernel_cmdline.gni")

group("bootstrap") {
  deps = [
    "//src/connectivity/ethernet/drivers/ethernet",
    "//src/connectivity/ethernet/drivers/ethernet/netdevice-migration",
    "//src/connectivity/network/drivers/network-device",
    "//src/devices/bundles:bootstrap-dev",
    "//src/graphics/display/drivers/display",
    "//src/ui/input/drivers/hid",
    "//src/ui/input/drivers/hid-buttons",
    "//src/ui/input/drivers/hid-input-report",
  ]
}

kernel_cmdline("disable.i2c-hid-dfv2") {
  args = [ "devmgr.disabled-drivers=fuchsia-boot:///#meta/i2c-hid-dfv2.cm" ]
}

group("bootstrap-dfv2") {
  deps = [
    "//products/kernel_cmdline:devmgr.enable-ephemeral--true",
    "//products/kernel_cmdline:driver_manager.root-meta--platform-bus.cm",
    "//products/kernel_cmdline:driver_manager.use_driver_framework_v2--true",
  ]
}

# Drivers which are meant only for non-user facing products.
group("bootstrap-eng") {
  deps = [ "//src/devices/misc/drivers/cpu-trace" ]
}

group("usb-host-stack") {
  deps = [
    "//src/connectivity/bluetooth/hci/transport/usb:bt-transport-usb",
    "//src/connectivity/ethernet/drivers/asix-88179",
    "//src/connectivity/ethernet/drivers/asix-88772b",
    "//src/connectivity/ethernet/drivers/usb-cdc-ecm",
    "//src/devices/bundles:usb-host-stack",
    "//src/media/audio/drivers/usb-audio",
    "//src/ui/input/drivers/usb-hid",
  ]
}

group("usb-peripheral-stack") {
  deps = [
    "//src/connectivity/ethernet/drivers/rndis-function",
    "//src/connectivity/ethernet/drivers/usb-cdc-function",
    "//src/devices/bundles:usb-peripheral-stack",
  ]
}

group("utils") {
  deps = [
    "//build/validate:non_production_tag",
    "//src/devices/bundles:utils",
    "//src/graphics/display/bin/dsiutil",
    "//src/media/audio/tools/audio-driver-ctl:bin",
    "//src/ui/bundles:utils",
  ]
}

group("pci") {
  deps = [
    "//src/connectivity/ethernet/drivers/virtio:virtio_ethernet",
    "//src/connectivity/wlan/drivers/third_party/atheros/ath10k:ath10k_driver",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac:fuchsia_driver",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi:iwlwifi_driver",
    "//src/devices/block/drivers/ahci:ahci",
    "//src/devices/block/drivers/nvme:nvme",
    "//src/devices/block/drivers/pci-sdhci:pci-sdhci",
    "//src/devices/block/drivers/virtio:virtio_block",
    "//src/devices/i2c/drivers/intel-i2c:intel-i2c",
    "//src/devices/misc/drivers/virtio-rng:virtio_rng",
    "//src/devices/misc/drivers/virtio-socket:virtio_socket",
    "//src/devices/serial/drivers/virtio-console:virtio_console",
    "//src/devices/usb/drivers/xhci:xhci",
    "//src/graphics/display/drivers/intel-i915:intel-i915",
    "//src/graphics/display/drivers/simple:simple.amd-kaveri",
    "//src/graphics/display/drivers/simple:simple.bochs",
    "//src/graphics/display/drivers/simple:simple.gga",
    "//src/graphics/display/drivers/simple:simple.intel",
    "//src/graphics/display/drivers/simple:simple.nv",
    "//src/graphics/display/drivers/simple:simple.vmware",
    "//src/graphics/drivers/misc/goldfish_address_space:address_space_driver",
    "//src/graphics/drivers/virtio:virtio_gpu",
    "//src/media/audio/drivers/intel-hda/controller:intel-hda",
    "//src/ui/input/drivers/virtio:virtio_input",
    "//zircon/third_party/dev/ethernet/e1000:e1000",
  ]

  if (target_cpu == "x64") {
    deps += [
      "//src/connectivity/ethernet/drivers/realtek-8111:realtek-8111",
      "//src/graphics/drivers/msd-intel-gen",
    ]
  }
}

group("conformance-tests") {
  testonly = true
  deps = [
    "//src/devices/light-sensor/drivers/ams-light:ams-light-test",
    "//src/ui/tools/print-input-report:print-input-report-test",
  ]
}
