summaryrefslogtreecommitdiff
path: root/roms/SLOF/lib/libvirtio/virtio.c
diff options
context:
space:
mode:
Diffstat (limited to 'roms/SLOF/lib/libvirtio/virtio.c')
-rw-r--r--roms/SLOF/lib/libvirtio/virtio.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/roms/SLOF/lib/libvirtio/virtio.c b/roms/SLOF/lib/libvirtio/virtio.c
index 29d5dd35d..249f8039c 100644
--- a/roms/SLOF/lib/libvirtio/virtio.c
+++ b/roms/SLOF/lib/libvirtio/virtio.c
@@ -128,6 +128,21 @@ void virtio_queue_notify(struct virtio_device *dev, int queue)
}
}
+/**
+ * Set queue address
+ */
+void virtio_set_qaddr(struct virtio_device *dev, int queue, unsigned int qaddr)
+{
+ if (dev->type == VIRTIO_TYPE_PCI) {
+ uint32_t val = qaddr;
+ val = val >> 12;
+ ci_write_16(dev->base+VIRTIOHDR_QUEUE_SELECT,
+ cpu_to_le16(queue));
+ eieio();
+ ci_write_32(dev->base+VIRTIOHDR_QUEUE_ADDRESS,
+ cpu_to_le32(val));
+ }
+}
/**
* Set device status bits