aos/devices/virtio/virtio_pci.dev
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

128 lines
3.2 KiB
Plaintext

/*
* Copyright (c) 2012, ETH Zurich. All rights reserved.
*
* This file is distributed under the terms in the attached LICENSE file.
* If you do not find this file, copies can be found by writing to:
* ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
*/
/*
* virtio_pci.dev
*
* 4.1 Virtio Over PCI Bus
*/
device virtio_pci lsbfirst ( addr base, addr common ) "Virtio PCI Device Specification" {
constants vendor_id width(4) "VirtIO PCI vendor" {
virtio_vendor = 0x1AF4;
};
/*
* cap_vndr 0x09;
*/
register vendor addr(base, 0x0) "Identifies a vendor-specific capability." {
vndr 8 "Vendor ID";
};
register next addr(base, 0x1) "Next Pointer" {
next 8 "Link to next capability in the capability list." ;
};
register length addr(base, 0x2) "Length of this capability structure" {
len 8 "Length";
};
constants config_type width(8) "Configuration types" {
common = 1 "Common configuration";
notify = 2 "Notifications";
isr = 3 "ISR Status";
devspec = 4 "Device specific configuration";
pci_cfg = 5 "PCI configuration access";
};
register config addr(base, 0x3) "identifies the structure" {
cfg_type 8 "configuration type";
};
register bar addr(base, 0x4) "Base Address register (BAR) belonging to the function located beginning" {
bar 8 "Base Address register (BAR)";
};
register offset addr(base, 0x8) "beginning of the structure relative to the base address" {
off 32 "Offset";
};
register length2 addr(base, 0xC) "indicates the length of the structure." {
len 32 "Length";
};
register device_feature_select addr(common, 0x0) "" {
reg 32 "todo";
};
register device_feature addr(common, 0x4) "" {
reg 32 "todo";
};
register driver_feature_select addr(common, 0x8) "" {
reg 32 "todo";
};
register driver addr(common, 0xC) "" {
reg 32 "todo";
};
register msix_config addr(common, 0x10) {
reg 16 "todo";
};
register num_queues addr(common, 0x12) {
reg 16 "todo";
};
register device_status addr(common, 0x14) {
reg 8 "todo";
};
register config_generation addr(common, 0x15) {
reg 8 "todo";
};
register queue_select addr(common, 0x16) {
val 16 "";
};
register queue_size addr(common, 0x18){
val 16 "";
};
register queue_msix_vector addr(common, 0x1A){
val 16 "";
};
register queue_enable addr(common, 0x1C){
val 16 "";
};
register queue_notify_off addr(common, 0x1E){
val 16 "";
};
register queue_desc addr(common, 0x20){
val 64 "";
};
register queue_avail addr(common, 0x28){
val 64 "";
};
register queue_used addr(common, 0x30){
val 64 "";
};
};