#include <linux/device.h>
#include <linux/iommu.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/vfio.h>
#include <linux/fsl/mc.h>
#include <linux/delay.h>
#include <linux/io-64-nonatomic-hi-lo.h>
#include "vfio_fsl_mc_private.h"
static struct fsl_mc_driver vfio_fsl_mc_driver;
static int vfio_fsl_mc_open_device(struct vfio_device *core_vdev)
{ … }
static void vfio_fsl_mc_regions_cleanup(struct vfio_fsl_mc_device *vdev)
{ … }
static int vfio_fsl_mc_reset_device(struct vfio_fsl_mc_device *vdev)
{ … }
static void vfio_fsl_mc_close_device(struct vfio_device *core_vdev)
{ … }
static long vfio_fsl_mc_ioctl(struct vfio_device *core_vdev,
unsigned int cmd, unsigned long arg)
{ … }
static ssize_t vfio_fsl_mc_read(struct vfio_device *core_vdev, char __user *buf,
size_t count, loff_t *ppos)
{ … }
#define MC_CMD_COMPLETION_TIMEOUT_MS …
#define MC_CMD_COMPLETION_POLLING_MAX_SLEEP_USECS …
static int vfio_fsl_mc_send_command(void __iomem *ioaddr, uint64_t *cmd_data)
{ … }
static ssize_t vfio_fsl_mc_write(struct vfio_device *core_vdev,
const char __user *buf, size_t count,
loff_t *ppos)
{ … }
static int vfio_fsl_mc_mmap_mmio(struct vfio_fsl_mc_region region,
struct vm_area_struct *vma)
{ … }
static int vfio_fsl_mc_mmap(struct vfio_device *core_vdev,
struct vm_area_struct *vma)
{ … }
static const struct vfio_device_ops vfio_fsl_mc_ops;
static int vfio_fsl_mc_bus_notifier(struct notifier_block *nb,
unsigned long action, void *data)
{ … }
static int vfio_fsl_mc_init_device(struct vfio_fsl_mc_device *vdev)
{ … }
static int vfio_fsl_mc_scan_container(struct fsl_mc_device *mc_dev)
{ … }
static void vfio_fsl_uninit_device(struct vfio_fsl_mc_device *vdev)
{ … }
static int vfio_fsl_mc_init_dev(struct vfio_device *core_vdev)
{ … }
static int vfio_fsl_mc_probe(struct fsl_mc_device *mc_dev)
{ … }
static void vfio_fsl_mc_release_dev(struct vfio_device *core_vdev)
{ … }
static void vfio_fsl_mc_remove(struct fsl_mc_device *mc_dev)
{ … }
static const struct vfio_device_ops vfio_fsl_mc_ops = …;
static struct fsl_mc_driver vfio_fsl_mc_driver = …;
module_fsl_mc_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;