vfio_fsl_mc_private.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
  2. /*
  3. * Copyright 2013-2016 Freescale Semiconductor Inc.
  4. * Copyright 2016,2019-2020 NXP
  5. */
  6. #ifndef VFIO_FSL_MC_PRIVATE_H
  7. #define VFIO_FSL_MC_PRIVATE_H
  8. #define VFIO_FSL_MC_OFFSET_SHIFT 40
  9. #define VFIO_FSL_MC_OFFSET_MASK (((u64)(1) << VFIO_FSL_MC_OFFSET_SHIFT) - 1)
  10. #define VFIO_FSL_MC_OFFSET_TO_INDEX(off) ((off) >> VFIO_FSL_MC_OFFSET_SHIFT)
  11. #define VFIO_FSL_MC_INDEX_TO_OFFSET(index) \
  12. ((u64)(index) << VFIO_FSL_MC_OFFSET_SHIFT)
  13. struct vfio_fsl_mc_irq {
  14. u32 flags;
  15. u32 count;
  16. struct eventfd_ctx *trigger;
  17. char *name;
  18. };
  19. struct vfio_fsl_mc_region {
  20. u32 flags;
  21. u32 type;
  22. u64 addr;
  23. resource_size_t size;
  24. void __iomem *ioaddr;
  25. };
  26. struct vfio_fsl_mc_device {
  27. struct vfio_device vdev;
  28. struct fsl_mc_device *mc_dev;
  29. struct notifier_block nb;
  30. struct vfio_fsl_mc_region *regions;
  31. struct mutex igate;
  32. struct vfio_fsl_mc_irq *mc_irqs;
  33. };
  34. int vfio_fsl_mc_set_irqs_ioctl(struct vfio_fsl_mc_device *vdev,
  35. u32 flags, unsigned int index,
  36. unsigned int start, unsigned int count,
  37. void *data);
  38. void vfio_fsl_mc_irqs_cleanup(struct vfio_fsl_mc_device *vdev);
  39. #endif /* VFIO_FSL_MC_PRIVATE_H */