Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux-block.git] / drivers / vfio / fsl-mc / vfio_fsl_mc_private.h
CommitLineData
fb1ff4c1
BB
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
7#ifndef VFIO_FSL_MC_PRIVATE_H
8#define VFIO_FSL_MC_PRIVATE_H
9
df747bcd
DC
10#define VFIO_FSL_MC_OFFSET_SHIFT 40
11#define VFIO_FSL_MC_OFFSET_MASK (((u64)(1) << VFIO_FSL_MC_OFFSET_SHIFT) - 1)
12
13#define VFIO_FSL_MC_OFFSET_TO_INDEX(off) ((off) >> VFIO_FSL_MC_OFFSET_SHIFT)
14
15#define VFIO_FSL_MC_INDEX_TO_OFFSET(index) \
16 ((u64)(index) << VFIO_FSL_MC_OFFSET_SHIFT)
17
cc0ee20b
DC
18struct vfio_fsl_mc_irq {
19 u32 flags;
20 u32 count;
21 struct eventfd_ctx *trigger;
22 char *name;
23};
24
df747bcd
DC
25struct vfio_fsl_mc_region {
26 u32 flags;
27 u32 type;
28 u64 addr;
29 resource_size_t size;
1bb141ed 30 void __iomem *ioaddr;
df747bcd
DC
31};
32
fb1ff4c1 33struct vfio_fsl_mc_device {
0ca78666 34 struct vfio_device vdev;
fb1ff4c1 35 struct fsl_mc_device *mc_dev;
704f5082 36 struct notifier_block nb;
df747bcd 37 struct vfio_fsl_mc_region *regions;
2e0d2956 38 struct mutex igate;
cc0ee20b 39 struct vfio_fsl_mc_irq *mc_irqs;
fb1ff4c1
BB
40};
41
d1877e63 42int vfio_fsl_mc_set_irqs_ioctl(struct vfio_fsl_mc_device *vdev,
2e0d2956
DC
43 u32 flags, unsigned int index,
44 unsigned int start, unsigned int count,
45 void *data);
46
cc0ee20b
DC
47void vfio_fsl_mc_irqs_cleanup(struct vfio_fsl_mc_device *vdev);
48
fb1ff4c1 49#endif /* VFIO_FSL_MC_PRIVATE_H */