1 /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
3 * Copyright 2013-2016 Freescale Semiconductor Inc.
4 * Copyright 2016,2019-2020 NXP
7 #ifndef VFIO_FSL_MC_PRIVATE_H
8 #define VFIO_FSL_MC_PRIVATE_H
10 #define VFIO_FSL_MC_OFFSET_SHIFT 40
11 #define VFIO_FSL_MC_OFFSET_MASK (((u64)(1) << VFIO_FSL_MC_OFFSET_SHIFT) - 1)
13 #define VFIO_FSL_MC_OFFSET_TO_INDEX(off) ((off) >> VFIO_FSL_MC_OFFSET_SHIFT)
15 #define VFIO_FSL_MC_INDEX_TO_OFFSET(index) \
16 ((u64)(index) << VFIO_FSL_MC_OFFSET_SHIFT)
18 struct vfio_fsl_mc_irq
{
21 struct eventfd_ctx
*trigger
;
25 struct vfio_fsl_mc_region
{
33 struct vfio_fsl_mc_device
{
34 struct vfio_device vdev
;
35 struct fsl_mc_device
*mc_dev
;
36 struct notifier_block nb
;
37 struct vfio_fsl_mc_region
*regions
;
39 struct vfio_fsl_mc_irq
*mc_irqs
;
42 int vfio_fsl_mc_set_irqs_ioctl(struct vfio_fsl_mc_device
*vdev
,
43 u32 flags
, unsigned int index
,
44 unsigned int start
, unsigned int count
,
47 void vfio_fsl_mc_irqs_cleanup(struct vfio_fsl_mc_device
*vdev
);
49 #endif /* VFIO_FSL_MC_PRIVATE_H */