162d95512SEric Auger /* 262d95512SEric Auger * AMD XGBE VFIO device 362d95512SEric Auger * 462d95512SEric Auger * Copyright Linaro Limited, 2015 562d95512SEric Auger * 662d95512SEric Auger * Authors: 762d95512SEric Auger * Eric Auger <eric.auger@linaro.org> 862d95512SEric Auger * 962d95512SEric Auger * This work is licensed under the terms of the GNU GPL, version 2. See 1062d95512SEric Auger * the COPYING file in the top-level directory. 1162d95512SEric Auger * 1262d95512SEric Auger */ 1362d95512SEric Auger 14974dc73dSPeter Maydell #include "qemu/osdep.h" 1562d95512SEric Auger #include "hw/vfio/vfio-amd-xgbe.h" 1662d95512SEric Auger 1762d95512SEric Auger static void amd_xgbe_realize(DeviceState *dev, Error **errp) 1862d95512SEric Auger { 1962d95512SEric Auger VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev); 2062d95512SEric Auger VFIOAmdXgbeDeviceClass *k = VFIO_AMD_XGBE_DEVICE_GET_CLASS(dev); 2162d95512SEric Auger 2262d95512SEric Auger vdev->compat = g_strdup("amd,xgbe-seattle-v1a"); 23a49531ebSEric Auger vdev->num_compat = 1; 2462d95512SEric Auger 2562d95512SEric Auger k->parent_realize(dev, errp); 2662d95512SEric Auger } 2762d95512SEric Auger 2862d95512SEric Auger static const VMStateDescription vfio_platform_amd_xgbe_vmstate = { 29*da56e330SLi Qiang .name = "vfio-amd-xgbe", 3062d95512SEric Auger .unmigratable = 1, 3162d95512SEric Auger }; 3262d95512SEric Auger 3362d95512SEric Auger static void vfio_amd_xgbe_class_init(ObjectClass *klass, void *data) 3462d95512SEric Auger { 3562d95512SEric Auger DeviceClass *dc = DEVICE_CLASS(klass); 3662d95512SEric Auger VFIOAmdXgbeDeviceClass *vcxc = 3762d95512SEric Auger VFIO_AMD_XGBE_DEVICE_CLASS(klass); 38bf853881SPhilippe Mathieu-Daudé device_class_set_parent_realize(dc, amd_xgbe_realize, 39bf853881SPhilippe Mathieu-Daudé &vcxc->parent_realize); 4062d95512SEric Auger dc->desc = "VFIO AMD XGBE"; 4162d95512SEric Auger dc->vmsd = &vfio_platform_amd_xgbe_vmstate; 42e4f4fb1eSEduardo Habkost /* Supported by TYPE_VIRT_MACHINE */ 43e4f4fb1eSEduardo Habkost dc->user_creatable = true; 4462d95512SEric Auger } 4562d95512SEric Auger 4662d95512SEric Auger static const TypeInfo vfio_amd_xgbe_dev_info = { 4762d95512SEric Auger .name = TYPE_VFIO_AMD_XGBE, 4862d95512SEric Auger .parent = TYPE_VFIO_PLATFORM, 4962d95512SEric Auger .instance_size = sizeof(VFIOAmdXgbeDevice), 5062d95512SEric Auger .class_init = vfio_amd_xgbe_class_init, 5162d95512SEric Auger .class_size = sizeof(VFIOAmdXgbeDeviceClass), 5262d95512SEric Auger }; 5362d95512SEric Auger 5462d95512SEric Auger static void register_amd_xgbe_dev_type(void) 5562d95512SEric Auger { 5662d95512SEric Auger type_register_static(&vfio_amd_xgbe_dev_info); 5762d95512SEric Auger } 5862d95512SEric Auger 5962d95512SEric Auger type_init(register_amd_xgbe_dev_type) 60