1 /* 2 * Virtio platform device driver 3 * 4 * Copyright 2011, ARM Ltd. 5 * 6 * Based on Virtio PCI driver by Anthony Liguori, copyright IBM Corp. 2007 7 * 8 * This header is BSD licensed so anyone can use the definitions to implement 9 * compatible drivers/servers. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions and the following disclaimer. 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in the 18 * documentation and/or other materials provided with the distribution. 19 * 3. Neither the name of IBM nor the names of its contributors 20 * may be used to endorse or promote products derived from this software 21 * without specific prior written permission. 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND 23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25 * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 */ 34 35 #ifndef _LINUX_VIRTIO_MMIO_H 36 #define _LINUX_VIRTIO_MMIO_H 37 38 /* 39 * Control registers 40 */ 41 42 /* Magic value ("virt" string) - Read Only */ 43 #define VIRTIO_MMIO_MAGIC_VALUE 0x000 44 45 /* Virtio device version - Read Only */ 46 #define VIRTIO_MMIO_VERSION 0x004 47 48 /* Virtio device ID - Read Only */ 49 #define VIRTIO_MMIO_DEVICE_ID 0x008 50 51 /* Virtio vendor ID - Read Only */ 52 #define VIRTIO_MMIO_VENDOR_ID 0x00c 53 54 /* Bitmask of the features supported by the host 55 * (32 bits per set) - Read Only */ 56 #define VIRTIO_MMIO_HOST_FEATURES 0x010 57 58 /* Host features set selector - Write Only */ 59 #define VIRTIO_MMIO_HOST_FEATURES_SEL 0x014 60 61 /* Bitmask of features activated by the guest 62 * (32 bits per set) - Write Only */ 63 #define VIRTIO_MMIO_GUEST_FEATURES 0x020 64 65 /* Activated features set selector - Write Only */ 66 #define VIRTIO_MMIO_GUEST_FEATURES_SEL 0x024 67 68 /* Guest's memory page size in bytes - Write Only */ 69 #define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028 70 71 /* Queue selector - Write Only */ 72 #define VIRTIO_MMIO_QUEUE_SEL 0x030 73 74 /* Maximum size of the currently selected queue - Read Only */ 75 #define VIRTIO_MMIO_QUEUE_NUM_MAX 0x034 76 77 /* Queue size for the currently selected queue - Write Only */ 78 #define VIRTIO_MMIO_QUEUE_NUM 0x038 79 80 /* Used Ring alignment for the currently selected queue - Write Only */ 81 #define VIRTIO_MMIO_QUEUE_ALIGN 0x03c 82 83 /* Guest's PFN for the currently selected queue - Read Write */ 84 #define VIRTIO_MMIO_QUEUE_PFN 0x040 85 86 /* Queue notifier - Write Only */ 87 #define VIRTIO_MMIO_QUEUE_NOTIFY 0x050 88 89 /* Interrupt status - Read Only */ 90 #define VIRTIO_MMIO_INTERRUPT_STATUS 0x060 91 92 /* Interrupt acknowledge - Write Only */ 93 #define VIRTIO_MMIO_INTERRUPT_ACK 0x064 94 95 /* Device status register - Read Write */ 96 #define VIRTIO_MMIO_STATUS 0x070 97 98 /* The config space is defined by each driver as 99 * the per-driver configuration space - Read Write */ 100 #define VIRTIO_MMIO_CONFIG 0x100 101 102 103 104 /* 105 * Interrupt flags (re: interrupt status & acknowledge registers) 106 */ 107 108 #define VIRTIO_MMIO_INT_VRING (1 << 0) 109 #define VIRTIO_MMIO_INT_CONFIG (1 << 1) 110 111 #endif 112