Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
0002 /*
0003  * Copyright 2013-2016 Freescale Semiconductor Inc.
0004  * Copyright 2016,2019-2020 NXP
0005  */
0006 
0007 #ifndef VFIO_FSL_MC_PRIVATE_H
0008 #define VFIO_FSL_MC_PRIVATE_H
0009 
0010 #define VFIO_FSL_MC_OFFSET_SHIFT    40
0011 #define VFIO_FSL_MC_OFFSET_MASK (((u64)(1) << VFIO_FSL_MC_OFFSET_SHIFT) - 1)
0012 
0013 #define VFIO_FSL_MC_OFFSET_TO_INDEX(off) ((off) >> VFIO_FSL_MC_OFFSET_SHIFT)
0014 
0015 #define VFIO_FSL_MC_INDEX_TO_OFFSET(index)  \
0016     ((u64)(index) << VFIO_FSL_MC_OFFSET_SHIFT)
0017 
0018 struct vfio_fsl_mc_irq {
0019     u32         flags;
0020     u32         count;
0021     struct eventfd_ctx  *trigger;
0022     char            *name;
0023 };
0024 
0025 struct vfio_fsl_mc_region {
0026     u32         flags;
0027     u32         type;
0028     u64         addr;
0029     resource_size_t     size;
0030     void __iomem        *ioaddr;
0031 };
0032 
0033 struct vfio_fsl_mc_device {
0034     struct vfio_device      vdev;
0035     struct fsl_mc_device        *mc_dev;
0036     struct notifier_block        nb;
0037     struct vfio_fsl_mc_region   *regions;
0038     struct mutex         igate;
0039     struct vfio_fsl_mc_irq      *mc_irqs;
0040 };
0041 
0042 int vfio_fsl_mc_set_irqs_ioctl(struct vfio_fsl_mc_device *vdev,
0043                    u32 flags, unsigned int index,
0044                    unsigned int start, unsigned int count,
0045                    void *data);
0046 
0047 void vfio_fsl_mc_irqs_cleanup(struct vfio_fsl_mc_device *vdev);
0048 
0049 #endif /* VFIO_FSL_MC_PRIVATE_H */