xref: /qemu/include/hw/vfio/vfio-amd-xgbe.h (revision 62d9551247a2db3937d99e5495bc36b32abb41be)
1*62d95512SEric Auger /*
2*62d95512SEric Auger  * VFIO AMD XGBE device
3*62d95512SEric Auger  *
4*62d95512SEric Auger  * Copyright Linaro Limited, 2015
5*62d95512SEric Auger  *
6*62d95512SEric Auger  * Authors:
7*62d95512SEric Auger  *  Eric Auger <eric.auger@linaro.org>
8*62d95512SEric Auger  *
9*62d95512SEric Auger  * This work is licensed under the terms of the GNU GPL, version 2.  See
10*62d95512SEric Auger  * the COPYING file in the top-level directory.
11*62d95512SEric Auger  *
12*62d95512SEric Auger  */
13*62d95512SEric Auger 
14*62d95512SEric Auger #ifndef HW_VFIO_VFIO_AMD_XGBE_H
15*62d95512SEric Auger #define HW_VFIO_VFIO_AMD_XGBE_H
16*62d95512SEric Auger 
17*62d95512SEric Auger #include "hw/vfio/vfio-platform.h"
18*62d95512SEric Auger 
19*62d95512SEric Auger #define TYPE_VFIO_AMD_XGBE "vfio-amd-xgbe"
20*62d95512SEric Auger 
21*62d95512SEric Auger /**
22*62d95512SEric Auger  * This device exposes:
23*62d95512SEric Auger  * - 5 MMIO regions: MAC, PCS, SerDes Rx/Tx regs,
24*62d95512SEric Auger      SerDes Integration Registers 1/2 & 2/2
25*62d95512SEric Auger  * - 2 level sensitive IRQs and optional DMA channel IRQs
26*62d95512SEric Auger  */
27*62d95512SEric Auger struct VFIOAmdXgbeDevice {
28*62d95512SEric Auger     VFIOPlatformDevice vdev;
29*62d95512SEric Auger };
30*62d95512SEric Auger 
31*62d95512SEric Auger typedef struct VFIOAmdXgbeDevice VFIOAmdXgbeDevice;
32*62d95512SEric Auger 
33*62d95512SEric Auger struct VFIOAmdXgbeDeviceClass {
34*62d95512SEric Auger     /*< private >*/
35*62d95512SEric Auger     VFIOPlatformDeviceClass parent_class;
36*62d95512SEric Auger     /*< public >*/
37*62d95512SEric Auger     DeviceRealize parent_realize;
38*62d95512SEric Auger };
39*62d95512SEric Auger 
40*62d95512SEric Auger typedef struct VFIOAmdXgbeDeviceClass VFIOAmdXgbeDeviceClass;
41*62d95512SEric Auger 
42*62d95512SEric Auger #define VFIO_AMD_XGBE_DEVICE(obj) \
43*62d95512SEric Auger      OBJECT_CHECK(VFIOAmdXgbeDevice, (obj), TYPE_VFIO_AMD_XGBE)
44*62d95512SEric Auger #define VFIO_AMD_XGBE_DEVICE_CLASS(klass) \
45*62d95512SEric Auger      OBJECT_CLASS_CHECK(VFIOAmdXgbeDeviceClass, (klass), \
46*62d95512SEric Auger                         TYPE_VFIO_AMD_XGBE)
47*62d95512SEric Auger #define VFIO_AMD_XGBE_DEVICE_GET_CLASS(obj) \
48*62d95512SEric Auger      OBJECT_GET_CLASS(VFIOAmdXgbeDeviceClass, (obj), \
49*62d95512SEric Auger                       TYPE_VFIO_AMD_XGBE)
50*62d95512SEric Auger 
51*62d95512SEric Auger #endif
52