blob: 3063fe9e1820ae4cd66d01892d1a3c490cb89b9c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
/*
* Freescale Management Complex VFIO private declarations
*
* Copyright (C) 2013-2016 Freescale Semiconductor, Inc.
* Copyright 2016 NXP
* Author: Bharat Bhushan <bharat.bhushan@nxp.com>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
#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 vfio_fsl_mc_region {
u32 flags;
#define VFIO_FSL_MC_REGION_TYPE_MMIO 1
#define VFIO_FSL_MC_REGION_TYPE_CACHEABLE 2
u32 type;
u64 addr;
resource_size_t size;
};
struct vfio_fsl_mc_device {
struct fsl_mc_device *mc_dev;
int refcnt;
u32 num_regions;
struct vfio_fsl_mc_region *regions;
struct vfio_fsl_mc_irq *mc_irqs;
};
int vfio_fsl_mc_irqs_init(struct vfio_fsl_mc_device *vdev);
void vfio_fsl_mc_irqs_cleanup(struct vfio_fsl_mc_device *vdev);
int vfio_fsl_mc_set_irqs_ioctl(struct vfio_fsl_mc_device *vdev,
uint32_t flags, unsigned int index,
unsigned int start, unsigned int count,
void *data);
#endif /* VFIO_PCI_PRIVATE_H */
|