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