1177633Sdfr// Copyright 2017 The Fuchsia Authors. All rights reserved. 2177633Sdfr// Use of this source code is governed by a BSD-style license that can be 3177633Sdfr// found in the LICENSE file. 4177633Sdfr 5177633Sdfr#pragma once 6177633Sdfr 7177633Sdfr#include <zircon/compiler.h> 8177633Sdfr 9177633Sdfr// clang-format off 10177633Sdfr 11177633Sdfrstruct virtio_mmio_config { 12177633Sdfr /* 0x00 */ 13177633Sdfr uint32_t magic; 14177633Sdfr uint32_t version; 15177633Sdfr uint32_t device_id; 16177633Sdfr uint32_t vendor_id; 17177633Sdfr /* 0x10 */ 18177633Sdfr uint32_t device_features; 19177633Sdfr uint32_t device_features_sel; 20177633Sdfr uint32_t __reserved0[2]; 21177633Sdfr /* 0x20 */ 22177633Sdfr uint32_t driver_features; 23177633Sdfr uint32_t driver_features_sel; 24177633Sdfr uint32_t guest_page_size; 25177633Sdfr uint32_t __reserved1[1]; 26177633Sdfr /* 0x30 */ 27177633Sdfr uint32_t queue_sel; 28177633Sdfr uint32_t queue_num_max; 29177633Sdfr uint32_t queue_num; 30177633Sdfr uint32_t queue_align; 31177633Sdfr /* 0x40 */ 32177633Sdfr uint32_t queue_pfn; 33177633Sdfr uint32_t __reserved2[3]; 34177633Sdfr /* 0x50 */ 35177633Sdfr uint32_t queue_notify; 36177633Sdfr uint32_t __reserved3[3]; 37177633Sdfr /* 0x60 */ 38177633Sdfr uint32_t interrupt_status; 39177633Sdfr uint32_t interrupt_ack; 40177633Sdfr uint32_t __reserved4[2]; 41177633Sdfr /* 0x70 */ 42177633Sdfr uint32_t status; 43177633Sdfr uint8_t __reserved5[0x8c]; 44177633Sdfr /* 0x100 */ 45177633Sdfr uint32_t config[0]; 46177633Sdfr}; 47177633Sdfr 48177633Sdfrstatic_assert(sizeof(struct virtio_mmio_config) == 0x100, ""); 49177633Sdfr 50177633Sdfr#define VIRTIO_MMIO_MAGIC 0x74726976 // 'virt' 51177633Sdfr