| // 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. |
| |
| #ifndef _DRIVERS_VIRTIO_VIRTIO_MAGMA_H |
| #define _DRIVERS_VIRTIO_VIRTIO_MAGMA_H |
| |
| #include <linux/fs.h> |
| #include <linux/types.h> |
| #include <linux/virtio.h> |
| #include <linux/virtmagma.h> |
| |
| #define VIRTMAGMA_VQ_IN 0 |
| #define VIRTMAGMA_VQ_OUT 1 |
| #define VIRTMAGMA_QUEUE_COUNT 2 |
| |
| struct virtmagma_info { |
| bool enabled; |
| int (*virtio_probe)(struct virtmagma_info* vi, struct virtio_device *vdev); |
| void (*virtio_remove)(struct virtmagma_info* vi, struct virtio_device *vdev); |
| long (*ioctl)(struct virtmagma_info* vi, unsigned int cmd, void __user *ptr); |
| void (*virtio_find_vqs_prepare)(struct virtmagma_info* vi, vq_callback_t **vq_callbacks, const char **vq_names); |
| void (*virtio_find_vqs_complete)(struct virtmagma_info* vi, struct virtqueue **vqs); |
| int (*virtio_device_ready_prepare)(struct virtmagma_info* vi); |
| void (*virtio_device_ready_complete)(struct virtmagma_info* vi); |
| uint32_t queue_count; |
| void *private; |
| }; |
| |
| int virtmagma_init(struct virtmagma_info *vi); |
| |
| extern const size_t magma_info_offset; |
| |
| #endif /* _DRIVERS_VIRTIO_VIRTIO_MAGMA_H */ |