1// Copyright 2016 The Fuchsia Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include <ddk/binding.h> 6#include <ddk/device.h> 7#include <ddk/driver.h> 8 9#include <zircon/compiler.h> 10#include <zircon/types.h> 11#include <stdio.h> 12#include <stdlib.h> 13#include <string.h> 14 15#include <virtio/virtio.h> 16 17// implemented in virtio_driver.cpp 18extern zx_status_t virtio_pci_bind(void* ctx, zx_device_t* device); 19 20static zx_driver_ops_t virtio_driver_ops = { 21 .version = DRIVER_OPS_VERSION, 22 .bind = virtio_pci_bind, 23}; 24 25ZIRCON_DRIVER_BEGIN(virtio, virtio_driver_ops, "zircon", "0.1", 13) 26 BI_ABORT_IF(NE, BIND_PROTOCOL, ZX_PROTOCOL_PCI), 27 BI_ABORT_IF(NE, BIND_PCI_VID, VIRTIO_PCI_VENDOR_ID), 28 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_BLOCK), 29 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_CONSOLE), 30 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_ENTROPY), 31 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_NETWORK), 32 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_T_BLOCK), 33 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_T_CONSOLE), 34 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_T_ENTROPY), 35 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_T_NETWORK), 36 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_GPU), 37 BI_MATCH_IF(EQ, BIND_PCI_DID, VIRTIO_DEV_TYPE_INPUT), // Input device 38 BI_ABORT(), 39ZIRCON_DRIVER_END(virtio) 40