1fb1ff4c1SBharat Bhushan /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ 2fb1ff4c1SBharat Bhushan /* 3fb1ff4c1SBharat Bhushan * Copyright 2013-2016 Freescale Semiconductor Inc. 4fb1ff4c1SBharat Bhushan * Copyright 2016,2019-2020 NXP 5fb1ff4c1SBharat Bhushan */ 6fb1ff4c1SBharat Bhushan 7fb1ff4c1SBharat Bhushan #ifndef VFIO_FSL_MC_PRIVATE_H 8fb1ff4c1SBharat Bhushan #define VFIO_FSL_MC_PRIVATE_H 9fb1ff4c1SBharat Bhushan 10df747bcdSDiana Craciun #define VFIO_FSL_MC_OFFSET_SHIFT 40 11df747bcdSDiana Craciun #define VFIO_FSL_MC_OFFSET_MASK (((u64)(1) << VFIO_FSL_MC_OFFSET_SHIFT) - 1) 12df747bcdSDiana Craciun 13df747bcdSDiana Craciun #define VFIO_FSL_MC_OFFSET_TO_INDEX(off) ((off) >> VFIO_FSL_MC_OFFSET_SHIFT) 14df747bcdSDiana Craciun 15df747bcdSDiana Craciun #define VFIO_FSL_MC_INDEX_TO_OFFSET(index) \ 16df747bcdSDiana Craciun ((u64)(index) << VFIO_FSL_MC_OFFSET_SHIFT) 17df747bcdSDiana Craciun 18cc0ee20bSDiana Craciun struct vfio_fsl_mc_irq { 19cc0ee20bSDiana Craciun u32 flags; 20cc0ee20bSDiana Craciun u32 count; 21cc0ee20bSDiana Craciun struct eventfd_ctx *trigger; 22cc0ee20bSDiana Craciun char *name; 23cc0ee20bSDiana Craciun }; 24cc0ee20bSDiana Craciun 25df747bcdSDiana Craciun struct vfio_fsl_mc_region { 26df747bcdSDiana Craciun u32 flags; 27df747bcdSDiana Craciun u32 type; 28df747bcdSDiana Craciun u64 addr; 29df747bcdSDiana Craciun resource_size_t size; 301bb141edSDiana Craciun void __iomem *ioaddr; 31df747bcdSDiana Craciun }; 32df747bcdSDiana Craciun 33fb1ff4c1SBharat Bhushan struct vfio_fsl_mc_device { 340ca78666SJason Gunthorpe struct vfio_device vdev; 35fb1ff4c1SBharat Bhushan struct fsl_mc_device *mc_dev; 36704f5082SDiana Craciun struct notifier_block nb; 37df747bcdSDiana Craciun struct vfio_fsl_mc_region *regions; 382e0d2956SDiana Craciun struct mutex igate; 39cc0ee20bSDiana Craciun struct vfio_fsl_mc_irq *mc_irqs; 40fb1ff4c1SBharat Bhushan }; 41fb1ff4c1SBharat Bhushan 42*d1877e63SAlex Williamson int vfio_fsl_mc_set_irqs_ioctl(struct vfio_fsl_mc_device *vdev, 432e0d2956SDiana Craciun u32 flags, unsigned int index, 442e0d2956SDiana Craciun unsigned int start, unsigned int count, 452e0d2956SDiana Craciun void *data); 462e0d2956SDiana Craciun 47cc0ee20bSDiana Craciun void vfio_fsl_mc_irqs_cleanup(struct vfio_fsl_mc_device *vdev); 48cc0ee20bSDiana Craciun 49fb1ff4c1SBharat Bhushan #endif /* VFIO_FSL_MC_PRIVATE_H */ 50