| |
| |
| |
| |
| |
| |
| #ifndef VFIO_FSL_MC_PRIVATE_H |
| #define VFIO_FSL_MC_PRIVATE_H |
| |
| #define VFIO_FSL_MC_OFFSET_SHIFT 40 |
| #define VFIO_FSL_MC_OFFSET_MASK (((u64)(1) << VFIO_FSL_MC_OFFSET_SHIFT) - 1) |
| |
| #define VFIO_FSL_MC_OFFSET_TO_INDEX(off) ((off) >> VFIO_FSL_MC_OFFSET_SHIFT) |
| |
| #define VFIO_FSL_MC_INDEX_TO_OFFSET(index) \ |
| <------>((u64)(index) << VFIO_FSL_MC_OFFSET_SHIFT) |
| |
| struct vfio_fsl_mc_irq { |
| <------>u32 flags; |
| <------>u32 count; |
| <------>struct eventfd_ctx *trigger; |
| <------>char *name; |
| }; |
| |
| struct vfio_fsl_mc_reflck { |
| <------>struct kref kref; |
| <------>struct mutex lock; |
| }; |
| |
| struct vfio_fsl_mc_region { |
| <------>u32 flags; |
| <------>u32 type; |
| <------>u64 addr; |
| <------>resource_size_t size; |
| <------>void __iomem *ioaddr; |
| }; |
| |
| struct vfio_fsl_mc_device { |
| <------>struct fsl_mc_device *mc_dev; |
| <------>struct notifier_block nb; |
| <------>int refcnt; |
| <------>struct vfio_fsl_mc_region *regions; |
| <------>struct vfio_fsl_mc_reflck *reflck; |
| <------>struct mutex igate; |
| <------>struct vfio_fsl_mc_irq *mc_irqs; |
| }; |
| |
| extern int vfio_fsl_mc_set_irqs_ioctl(struct vfio_fsl_mc_device *vdev, |
| <------><------><------> u32 flags, unsigned int index, |
| <------><------><------> unsigned int start, unsigned int count, |
| <------><------><------> void *data); |
| |
| void vfio_fsl_mc_irqs_cleanup(struct vfio_fsl_mc_device *vdev); |
| |
| #endif |
| |