1*62d95512SEric Auger /* 2*62d95512SEric Auger * AMD XGBE VFIO 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 #include "hw/vfio/vfio-amd-xgbe.h" 15*62d95512SEric Auger 16*62d95512SEric Auger static void amd_xgbe_realize(DeviceState *dev, Error **errp) 17*62d95512SEric Auger { 18*62d95512SEric Auger VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev); 19*62d95512SEric Auger VFIOAmdXgbeDeviceClass *k = VFIO_AMD_XGBE_DEVICE_GET_CLASS(dev); 20*62d95512SEric Auger 21*62d95512SEric Auger vdev->compat = g_strdup("amd,xgbe-seattle-v1a"); 22*62d95512SEric Auger 23*62d95512SEric Auger k->parent_realize(dev, errp); 24*62d95512SEric Auger } 25*62d95512SEric Auger 26*62d95512SEric Auger static const VMStateDescription vfio_platform_amd_xgbe_vmstate = { 27*62d95512SEric Auger .name = TYPE_VFIO_AMD_XGBE, 28*62d95512SEric Auger .unmigratable = 1, 29*62d95512SEric Auger }; 30*62d95512SEric Auger 31*62d95512SEric Auger static void vfio_amd_xgbe_class_init(ObjectClass *klass, void *data) 32*62d95512SEric Auger { 33*62d95512SEric Auger DeviceClass *dc = DEVICE_CLASS(klass); 34*62d95512SEric Auger VFIOAmdXgbeDeviceClass *vcxc = 35*62d95512SEric Auger VFIO_AMD_XGBE_DEVICE_CLASS(klass); 36*62d95512SEric Auger vcxc->parent_realize = dc->realize; 37*62d95512SEric Auger dc->realize = amd_xgbe_realize; 38*62d95512SEric Auger dc->desc = "VFIO AMD XGBE"; 39*62d95512SEric Auger dc->vmsd = &vfio_platform_amd_xgbe_vmstate; 40*62d95512SEric Auger } 41*62d95512SEric Auger 42*62d95512SEric Auger static const TypeInfo vfio_amd_xgbe_dev_info = { 43*62d95512SEric Auger .name = TYPE_VFIO_AMD_XGBE, 44*62d95512SEric Auger .parent = TYPE_VFIO_PLATFORM, 45*62d95512SEric Auger .instance_size = sizeof(VFIOAmdXgbeDevice), 46*62d95512SEric Auger .class_init = vfio_amd_xgbe_class_init, 47*62d95512SEric Auger .class_size = sizeof(VFIOAmdXgbeDeviceClass), 48*62d95512SEric Auger }; 49*62d95512SEric Auger 50*62d95512SEric Auger static void register_amd_xgbe_dev_type(void) 51*62d95512SEric Auger { 52*62d95512SEric Auger type_register_static(&vfio_amd_xgbe_dev_info); 53*62d95512SEric Auger } 54*62d95512SEric Auger 55*62d95512SEric Auger type_init(register_amd_xgbe_dev_type) 56