1// Copyright 2017 The Fuchsia Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#pragma once 6 7#include <zircon/compiler.h> 8 9// clang-format off 10 11struct virtio_mmio_config { 12 /* 0x00 */ 13 uint32_t magic; 14 uint32_t version; 15 uint32_t device_id; 16 uint32_t vendor_id; 17 /* 0x10 */ 18 uint32_t device_features; 19 uint32_t device_features_sel; 20 uint32_t __reserved0[2]; 21 /* 0x20 */ 22 uint32_t driver_features; 23 uint32_t driver_features_sel; 24 uint32_t guest_page_size; 25 uint32_t __reserved1[1]; 26 /* 0x30 */ 27 uint32_t queue_sel; 28 uint32_t queue_num_max; 29 uint32_t queue_num; 30 uint32_t queue_align; 31 /* 0x40 */ 32 uint32_t queue_pfn; 33 uint32_t __reserved2[3]; 34 /* 0x50 */ 35 uint32_t queue_notify; 36 uint32_t __reserved3[3]; 37 /* 0x60 */ 38 uint32_t interrupt_status; 39 uint32_t interrupt_ack; 40 uint32_t __reserved4[2]; 41 /* 0x70 */ 42 uint32_t status; 43 uint8_t __reserved5[0x8c]; 44 /* 0x100 */ 45 uint32_t config[0]; 46}; 47 48static_assert(sizeof(struct virtio_mmio_config) == 0x100, ""); 49 50#define VIRTIO_MMIO_MAGIC 0x74726976 // 'virt' 51