// Copyright 2021 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.

#include <lib/ddk/device.h>
#include <lib/ddk/driver.h>
#include <zircon/errors.h>
#include <zircon/types.h>

#include "third_party/iwlwifi/platform/iwlwifi-bind.h"
#include "third_party/iwlwifi/platform/pcie-device.h"

// Currently the Intel wlan driver only supports PCIe. When we add support for other forms of
// interfaces, we can mux all of that through this file using build time config options.
static zx_status_t pci_bus_bind(void* ctx, zx_device_t* parent) {
  return wlan::iwlwifi::PcieDevice::Create(parent);
}

static constexpr zx_driver_ops_t pci_driver_ops = []() {
  zx_driver_ops_t ops = {};
  ops.version = DRIVER_OPS_VERSION;
  ops.bind = pci_bus_bind;
  return ops;
}();

ZIRCON_DRIVER(iwlwifi_pci, pci_driver_ops, "zircon", "0.1");
