/* Copyright 2018 The Fuchsia Authors. All rights reserved.
   Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file. */

/* NOTE: DO NOT EDIT THIS FILE! It is generated automatically by:
     //garnet/lib/magma/include/virtio/virtio_magma.h.gen.py */

#ifndef _LINUX_VIRTIO_MAGMA_H
#define _LINUX_VIRTIO_MAGMA_H

#include <linux/virtio_ids.h>
#include <linux/virtio_config.h>
#include <linux/virtmagma.h>

struct virtio_magma_config {
	__le64 dummy;
} __attribute((packed));

enum virtio_magma_ctrl_type {
	/* magma commands */
	VIRTIO_MAGMA_CMD_QUERY = 0x1001,
	VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER = 0x1002,
	VIRTIO_MAGMA_CMD_CREATE_CONNECTION = 0x1003,
	VIRTIO_MAGMA_CMD_RELEASE_CONNECTION = 0x1004,
	VIRTIO_MAGMA_CMD_GET_ERROR = 0x1005,
	VIRTIO_MAGMA_CMD_CREATE_CONTEXT = 0x1006,
	VIRTIO_MAGMA_CMD_RELEASE_CONTEXT = 0x1007,
	VIRTIO_MAGMA_CMD_CREATE_BUFFER = 0x1008,
	VIRTIO_MAGMA_CMD_RELEASE_BUFFER = 0x1009,
	VIRTIO_MAGMA_CMD_DUPLICATE_HANDLE = 0x100A,
	VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE = 0x100B,
	VIRTIO_MAGMA_CMD_GET_BUFFER_ID = 0x100C,
	VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE = 0x100D,
	VIRTIO_MAGMA_CMD_CLEAN_CACHE = 0x100E,
	VIRTIO_MAGMA_CMD_SET_CACHE_POLICY = 0x100F,
	VIRTIO_MAGMA_CMD_GET_BUFFER_CACHE_POLICY = 0x1010,
	VIRTIO_MAGMA_CMD_GET_BUFFER_IS_MAPPABLE = 0x1011,
	VIRTIO_MAGMA_CMD_SET_BUFFER_MAPPING_ADDRESS_RANGE = 0x1012,
	VIRTIO_MAGMA_CMD_MAP = 0x1013,
	VIRTIO_MAGMA_CMD_MAP_ALIGNED = 0x1014,
	VIRTIO_MAGMA_CMD_MAP_SPECIFIC = 0x1015,
	VIRTIO_MAGMA_CMD_UNMAP = 0x1016,
	VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU = 0x1017,
	VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU = 0x1018,
	VIRTIO_MAGMA_CMD_COMMIT_BUFFER = 0x1019,
	VIRTIO_MAGMA_CMD_EXPORT = 0x101A,
	VIRTIO_MAGMA_CMD_IMPORT = 0x101B,
	VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES = 0x101F,
	VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2 = 0x1021,
	VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE = 0x1022,
	VIRTIO_MAGMA_CMD_RELEASE_SEMAPHORE = 0x1023,
	VIRTIO_MAGMA_CMD_GET_SEMAPHORE_ID = 0x1024,
	VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE = 0x1025,
	VIRTIO_MAGMA_CMD_RESET_SEMAPHORE = 0x1026,
	VIRTIO_MAGMA_CMD_WAIT_SEMAPHORES = 0x1027,
	VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE = 0x1028,
	VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE = 0x1029,
	VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE = 0x102A,
	VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL = 0x102B,
	VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL = 0x102C,
	/* magma success responses */
	VIRTIO_MAGMA_RESP_QUERY = 0x2001,
	VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER = 0x2002,
	VIRTIO_MAGMA_RESP_CREATE_CONNECTION = 0x2003,
	VIRTIO_MAGMA_RESP_RELEASE_CONNECTION = 0x2004,
	VIRTIO_MAGMA_RESP_GET_ERROR = 0x2005,
	VIRTIO_MAGMA_RESP_CREATE_CONTEXT = 0x2006,
	VIRTIO_MAGMA_RESP_RELEASE_CONTEXT = 0x2007,
	VIRTIO_MAGMA_RESP_CREATE_BUFFER = 0x2008,
	VIRTIO_MAGMA_RESP_RELEASE_BUFFER = 0x2009,
	VIRTIO_MAGMA_RESP_DUPLICATE_HANDLE = 0x200A,
	VIRTIO_MAGMA_RESP_RELEASE_BUFFER_HANDLE = 0x200B,
	VIRTIO_MAGMA_RESP_GET_BUFFER_ID = 0x200C,
	VIRTIO_MAGMA_RESP_GET_BUFFER_SIZE = 0x200D,
	VIRTIO_MAGMA_RESP_CLEAN_CACHE = 0x200E,
	VIRTIO_MAGMA_RESP_SET_CACHE_POLICY = 0x200F,
	VIRTIO_MAGMA_RESP_GET_BUFFER_CACHE_POLICY = 0x2010,
	VIRTIO_MAGMA_RESP_GET_BUFFER_IS_MAPPABLE = 0x2011,
	VIRTIO_MAGMA_RESP_SET_BUFFER_MAPPING_ADDRESS_RANGE = 0x2012,
	VIRTIO_MAGMA_RESP_MAP = 0x2013,
	VIRTIO_MAGMA_RESP_MAP_ALIGNED = 0x2014,
	VIRTIO_MAGMA_RESP_MAP_SPECIFIC = 0x2015,
	VIRTIO_MAGMA_RESP_UNMAP = 0x2016,
	VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU = 0x2017,
	VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU = 0x2018,
	VIRTIO_MAGMA_RESP_COMMIT_BUFFER = 0x2019,
	VIRTIO_MAGMA_RESP_EXPORT = 0x201A,
	VIRTIO_MAGMA_RESP_IMPORT = 0x201B,
	VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES = 0x201F,
	VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2 = 0x2021,
	VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE = 0x2022,
	VIRTIO_MAGMA_RESP_RELEASE_SEMAPHORE = 0x2023,
	VIRTIO_MAGMA_RESP_GET_SEMAPHORE_ID = 0x2024,
	VIRTIO_MAGMA_RESP_SIGNAL_SEMAPHORE = 0x2025,
	VIRTIO_MAGMA_RESP_RESET_SEMAPHORE = 0x2026,
	VIRTIO_MAGMA_RESP_WAIT_SEMAPHORES = 0x2027,
	VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE = 0x2028,
	VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE = 0x2029,
	VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE = 0x202A,
	VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL = 0x202B,
	VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL = 0x202C,
	/* magma error responses */
	VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED = 0x3001,
	VIRTIO_MAGMA_RESP_ERR_INTERNAL = 0x3002,
	VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED = 0x3003,
	VIRTIO_MAGMA_RESP_ERR_OUT_OF_MEMORY = 0x3004,
	VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND = 0x3005,
	VIRTIO_MAGMA_RESP_ERR_INVALID_ARGUMENT = 0x3006,
} __attribute((packed));

inline const char* virtio_magma_ctrl_type_string(enum virtio_magma_ctrl_type type) {
	switch (type) {
		case VIRTIO_MAGMA_CMD_QUERY: return "VIRTIO_MAGMA_CMD_QUERY";
		case VIRTIO_MAGMA_RESP_QUERY: return "VIRTIO_MAGMA_RESP_QUERY";
		case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER: return "VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER";
		case VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER: return "VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER";
		case VIRTIO_MAGMA_CMD_CREATE_CONNECTION: return "VIRTIO_MAGMA_CMD_CREATE_CONNECTION";
		case VIRTIO_MAGMA_RESP_CREATE_CONNECTION: return "VIRTIO_MAGMA_RESP_CREATE_CONNECTION";
		case VIRTIO_MAGMA_CMD_RELEASE_CONNECTION: return "VIRTIO_MAGMA_CMD_RELEASE_CONNECTION";
		case VIRTIO_MAGMA_RESP_RELEASE_CONNECTION: return "VIRTIO_MAGMA_RESP_RELEASE_CONNECTION";
		case VIRTIO_MAGMA_CMD_GET_ERROR: return "VIRTIO_MAGMA_CMD_GET_ERROR";
		case VIRTIO_MAGMA_RESP_GET_ERROR: return "VIRTIO_MAGMA_RESP_GET_ERROR";
		case VIRTIO_MAGMA_CMD_CREATE_CONTEXT: return "VIRTIO_MAGMA_CMD_CREATE_CONTEXT";
		case VIRTIO_MAGMA_RESP_CREATE_CONTEXT: return "VIRTIO_MAGMA_RESP_CREATE_CONTEXT";
		case VIRTIO_MAGMA_CMD_RELEASE_CONTEXT: return "VIRTIO_MAGMA_CMD_RELEASE_CONTEXT";
		case VIRTIO_MAGMA_RESP_RELEASE_CONTEXT: return "VIRTIO_MAGMA_RESP_RELEASE_CONTEXT";
		case VIRTIO_MAGMA_CMD_CREATE_BUFFER: return "VIRTIO_MAGMA_CMD_CREATE_BUFFER";
		case VIRTIO_MAGMA_RESP_CREATE_BUFFER: return "VIRTIO_MAGMA_RESP_CREATE_BUFFER";
		case VIRTIO_MAGMA_CMD_RELEASE_BUFFER: return "VIRTIO_MAGMA_CMD_RELEASE_BUFFER";
		case VIRTIO_MAGMA_RESP_RELEASE_BUFFER: return "VIRTIO_MAGMA_RESP_RELEASE_BUFFER";
		case VIRTIO_MAGMA_CMD_DUPLICATE_HANDLE: return "VIRTIO_MAGMA_CMD_DUPLICATE_HANDLE";
		case VIRTIO_MAGMA_RESP_DUPLICATE_HANDLE: return "VIRTIO_MAGMA_RESP_DUPLICATE_HANDLE";
		case VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE: return "VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE";
		case VIRTIO_MAGMA_RESP_RELEASE_BUFFER_HANDLE: return "VIRTIO_MAGMA_RESP_RELEASE_BUFFER_HANDLE";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_ID: return "VIRTIO_MAGMA_CMD_GET_BUFFER_ID";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_ID: return "VIRTIO_MAGMA_RESP_GET_BUFFER_ID";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE: return "VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_SIZE: return "VIRTIO_MAGMA_RESP_GET_BUFFER_SIZE";
		case VIRTIO_MAGMA_CMD_CLEAN_CACHE: return "VIRTIO_MAGMA_CMD_CLEAN_CACHE";
		case VIRTIO_MAGMA_RESP_CLEAN_CACHE: return "VIRTIO_MAGMA_RESP_CLEAN_CACHE";
		case VIRTIO_MAGMA_CMD_SET_CACHE_POLICY: return "VIRTIO_MAGMA_CMD_SET_CACHE_POLICY";
		case VIRTIO_MAGMA_RESP_SET_CACHE_POLICY: return "VIRTIO_MAGMA_RESP_SET_CACHE_POLICY";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_CACHE_POLICY: return "VIRTIO_MAGMA_CMD_GET_BUFFER_CACHE_POLICY";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_CACHE_POLICY: return "VIRTIO_MAGMA_RESP_GET_BUFFER_CACHE_POLICY";
		case VIRTIO_MAGMA_CMD_GET_BUFFER_IS_MAPPABLE: return "VIRTIO_MAGMA_CMD_GET_BUFFER_IS_MAPPABLE";
		case VIRTIO_MAGMA_RESP_GET_BUFFER_IS_MAPPABLE: return "VIRTIO_MAGMA_RESP_GET_BUFFER_IS_MAPPABLE";
		case VIRTIO_MAGMA_CMD_SET_BUFFER_MAPPING_ADDRESS_RANGE: return "VIRTIO_MAGMA_CMD_SET_BUFFER_MAPPING_ADDRESS_RANGE";
		case VIRTIO_MAGMA_RESP_SET_BUFFER_MAPPING_ADDRESS_RANGE: return "VIRTIO_MAGMA_RESP_SET_BUFFER_MAPPING_ADDRESS_RANGE";
		case VIRTIO_MAGMA_CMD_MAP: return "VIRTIO_MAGMA_CMD_MAP";
		case VIRTIO_MAGMA_RESP_MAP: return "VIRTIO_MAGMA_RESP_MAP";
		case VIRTIO_MAGMA_CMD_MAP_ALIGNED: return "VIRTIO_MAGMA_CMD_MAP_ALIGNED";
		case VIRTIO_MAGMA_RESP_MAP_ALIGNED: return "VIRTIO_MAGMA_RESP_MAP_ALIGNED";
		case VIRTIO_MAGMA_CMD_MAP_SPECIFIC: return "VIRTIO_MAGMA_CMD_MAP_SPECIFIC";
		case VIRTIO_MAGMA_RESP_MAP_SPECIFIC: return "VIRTIO_MAGMA_RESP_MAP_SPECIFIC";
		case VIRTIO_MAGMA_CMD_UNMAP: return "VIRTIO_MAGMA_CMD_UNMAP";
		case VIRTIO_MAGMA_RESP_UNMAP: return "VIRTIO_MAGMA_RESP_UNMAP";
		case VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU: return "VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU";
		case VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU: return "VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU";
		case VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU: return "VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU";
		case VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU: return "VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU";
		case VIRTIO_MAGMA_CMD_COMMIT_BUFFER: return "VIRTIO_MAGMA_CMD_COMMIT_BUFFER";
		case VIRTIO_MAGMA_RESP_COMMIT_BUFFER: return "VIRTIO_MAGMA_RESP_COMMIT_BUFFER";
		case VIRTIO_MAGMA_CMD_EXPORT: return "VIRTIO_MAGMA_CMD_EXPORT";
		case VIRTIO_MAGMA_RESP_EXPORT: return "VIRTIO_MAGMA_RESP_EXPORT";
		case VIRTIO_MAGMA_CMD_IMPORT: return "VIRTIO_MAGMA_CMD_IMPORT";
		case VIRTIO_MAGMA_RESP_IMPORT: return "VIRTIO_MAGMA_RESP_IMPORT";
		case VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES: return "VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES";
		case VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES: return "VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES";
		case VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2: return "VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2";
		case VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2: return "VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2";
		case VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE: return "VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE: return "VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_RELEASE_SEMAPHORE: return "VIRTIO_MAGMA_CMD_RELEASE_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_RELEASE_SEMAPHORE: return "VIRTIO_MAGMA_RESP_RELEASE_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_GET_SEMAPHORE_ID: return "VIRTIO_MAGMA_CMD_GET_SEMAPHORE_ID";
		case VIRTIO_MAGMA_RESP_GET_SEMAPHORE_ID: return "VIRTIO_MAGMA_RESP_GET_SEMAPHORE_ID";
		case VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE: return "VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_SIGNAL_SEMAPHORE: return "VIRTIO_MAGMA_RESP_SIGNAL_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_RESET_SEMAPHORE: return "VIRTIO_MAGMA_CMD_RESET_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_RESET_SEMAPHORE: return "VIRTIO_MAGMA_RESP_RESET_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_WAIT_SEMAPHORES: return "VIRTIO_MAGMA_CMD_WAIT_SEMAPHORES";
		case VIRTIO_MAGMA_RESP_WAIT_SEMAPHORES: return "VIRTIO_MAGMA_RESP_WAIT_SEMAPHORES";
		case VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE: return "VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE: return "VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE: return "VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE";
		case VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE: return "VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE";
		case VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE: return "VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE";
		case VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE: return "VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE";
		case VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL";
		case VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL";
		case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL";
		case VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL: return "VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL";
		case VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED: return "VIRTIO_MAGMA_RESP_ERR_UNIMPLEMENTED";
		case VIRTIO_MAGMA_RESP_ERR_INTERNAL: return "VIRTIO_MAGMA_RESP_ERR_INTERNAL";
		case VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED: return "VIRTIO_MAGMA_RESP_ERR_HOST_DISCONNECTED";
		case VIRTIO_MAGMA_RESP_ERR_OUT_OF_MEMORY: return "VIRTIO_MAGMA_RESP_ERR_OUT_OF_MEMORY";
		case VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND: return "VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND";
		case VIRTIO_MAGMA_RESP_ERR_INVALID_ARGUMENT: return "VIRTIO_MAGMA_RESP_ERR_INVALID_ARGUMENT";
		default: return "[invalid virtio_magma_ctrl_type]";
	}
}

inline enum virtio_magma_ctrl_type virtio_magma_expected_response_type(enum virtio_magma_ctrl_type type) {
	switch (type) {
		case VIRTIO_MAGMA_CMD_QUERY: return VIRTIO_MAGMA_RESP_QUERY;
		case VIRTIO_MAGMA_CMD_QUERY_RETURNS_BUFFER: return VIRTIO_MAGMA_RESP_QUERY_RETURNS_BUFFER;
		case VIRTIO_MAGMA_CMD_CREATE_CONNECTION: return VIRTIO_MAGMA_RESP_CREATE_CONNECTION;
		case VIRTIO_MAGMA_CMD_RELEASE_CONNECTION: return VIRTIO_MAGMA_RESP_RELEASE_CONNECTION;
		case VIRTIO_MAGMA_CMD_GET_ERROR: return VIRTIO_MAGMA_RESP_GET_ERROR;
		case VIRTIO_MAGMA_CMD_CREATE_CONTEXT: return VIRTIO_MAGMA_RESP_CREATE_CONTEXT;
		case VIRTIO_MAGMA_CMD_RELEASE_CONTEXT: return VIRTIO_MAGMA_RESP_RELEASE_CONTEXT;
		case VIRTIO_MAGMA_CMD_CREATE_BUFFER: return VIRTIO_MAGMA_RESP_CREATE_BUFFER;
		case VIRTIO_MAGMA_CMD_RELEASE_BUFFER: return VIRTIO_MAGMA_RESP_RELEASE_BUFFER;
		case VIRTIO_MAGMA_CMD_DUPLICATE_HANDLE: return VIRTIO_MAGMA_RESP_DUPLICATE_HANDLE;
		case VIRTIO_MAGMA_CMD_RELEASE_BUFFER_HANDLE: return VIRTIO_MAGMA_RESP_RELEASE_BUFFER_HANDLE;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_ID: return VIRTIO_MAGMA_RESP_GET_BUFFER_ID;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_SIZE: return VIRTIO_MAGMA_RESP_GET_BUFFER_SIZE;
		case VIRTIO_MAGMA_CMD_CLEAN_CACHE: return VIRTIO_MAGMA_RESP_CLEAN_CACHE;
		case VIRTIO_MAGMA_CMD_SET_CACHE_POLICY: return VIRTIO_MAGMA_RESP_SET_CACHE_POLICY;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_CACHE_POLICY: return VIRTIO_MAGMA_RESP_GET_BUFFER_CACHE_POLICY;
		case VIRTIO_MAGMA_CMD_GET_BUFFER_IS_MAPPABLE: return VIRTIO_MAGMA_RESP_GET_BUFFER_IS_MAPPABLE;
		case VIRTIO_MAGMA_CMD_SET_BUFFER_MAPPING_ADDRESS_RANGE: return VIRTIO_MAGMA_RESP_SET_BUFFER_MAPPING_ADDRESS_RANGE;
		case VIRTIO_MAGMA_CMD_MAP: return VIRTIO_MAGMA_RESP_MAP;
		case VIRTIO_MAGMA_CMD_MAP_ALIGNED: return VIRTIO_MAGMA_RESP_MAP_ALIGNED;
		case VIRTIO_MAGMA_CMD_MAP_SPECIFIC: return VIRTIO_MAGMA_RESP_MAP_SPECIFIC;
		case VIRTIO_MAGMA_CMD_UNMAP: return VIRTIO_MAGMA_RESP_UNMAP;
		case VIRTIO_MAGMA_CMD_MAP_BUFFER_GPU: return VIRTIO_MAGMA_RESP_MAP_BUFFER_GPU;
		case VIRTIO_MAGMA_CMD_UNMAP_BUFFER_GPU: return VIRTIO_MAGMA_RESP_UNMAP_BUFFER_GPU;
		case VIRTIO_MAGMA_CMD_COMMIT_BUFFER: return VIRTIO_MAGMA_RESP_COMMIT_BUFFER;
		case VIRTIO_MAGMA_CMD_EXPORT: return VIRTIO_MAGMA_RESP_EXPORT;
		case VIRTIO_MAGMA_CMD_IMPORT: return VIRTIO_MAGMA_RESP_IMPORT;
		case VIRTIO_MAGMA_CMD_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES: return VIRTIO_MAGMA_RESP_EXECUTE_COMMAND_BUFFER_WITH_RESOURCES;
		case VIRTIO_MAGMA_CMD_EXECUTE_IMMEDIATE_COMMANDS2: return VIRTIO_MAGMA_RESP_EXECUTE_IMMEDIATE_COMMANDS2;
		case VIRTIO_MAGMA_CMD_CREATE_SEMAPHORE: return VIRTIO_MAGMA_RESP_CREATE_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_RELEASE_SEMAPHORE: return VIRTIO_MAGMA_RESP_RELEASE_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_GET_SEMAPHORE_ID: return VIRTIO_MAGMA_RESP_GET_SEMAPHORE_ID;
		case VIRTIO_MAGMA_CMD_SIGNAL_SEMAPHORE: return VIRTIO_MAGMA_RESP_SIGNAL_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_RESET_SEMAPHORE: return VIRTIO_MAGMA_RESP_RESET_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_WAIT_SEMAPHORES: return VIRTIO_MAGMA_RESP_WAIT_SEMAPHORES;
		case VIRTIO_MAGMA_CMD_EXPORT_SEMAPHORE: return VIRTIO_MAGMA_RESP_EXPORT_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_IMPORT_SEMAPHORE: return VIRTIO_MAGMA_RESP_IMPORT_SEMAPHORE;
		case VIRTIO_MAGMA_CMD_GET_NOTIFICATION_CHANNEL_HANDLE: return VIRTIO_MAGMA_RESP_GET_NOTIFICATION_CHANNEL_HANDLE;
		case VIRTIO_MAGMA_CMD_WAIT_NOTIFICATION_CHANNEL: return VIRTIO_MAGMA_RESP_WAIT_NOTIFICATION_CHANNEL;
		case VIRTIO_MAGMA_CMD_READ_NOTIFICATION_CHANNEL: return VIRTIO_MAGMA_RESP_READ_NOTIFICATION_CHANNEL;
		default: return VIRTIO_MAGMA_RESP_ERR_INVALID_COMMAND;
	}
}

struct virtio_magma_ctrl_hdr {
	__le32 type;
	__le32 flags;
} __attribute((packed));

struct virtio_magma_query_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 file_descriptor;
	__le64 id;
} __attribute((packed));

struct virtio_magma_query_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 value_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_query_returns_buffer_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 file_descriptor;
	__le64 id;
} __attribute((packed));

struct virtio_magma_query_returns_buffer_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_create_connection_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 file_descriptor;
} __attribute((packed));

struct virtio_magma_create_connection_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_release_connection_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_release_connection_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_get_error_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_get_error_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_create_context_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_create_context_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 context_id_out;
} __attribute((packed));

struct virtio_magma_release_context_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 context_id;
} __attribute((packed));

struct virtio_magma_release_context_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_create_buffer_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 size;
} __attribute((packed));

struct virtio_magma_create_buffer_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 size_out;
	__le64 buffer_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_release_buffer_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_release_buffer_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_duplicate_handle_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 buffer_handle;
} __attribute((packed));

struct virtio_magma_duplicate_handle_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer_handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_release_buffer_handle_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 buffer_handle;
} __attribute((packed));

struct virtio_magma_release_buffer_handle_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_id_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_get_buffer_id_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_size_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_get_buffer_size_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_clean_cache_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
	__le64 offset;
	__le64 size;
	__le64 operation;
} __attribute((packed));

struct virtio_magma_clean_cache_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_set_cache_policy_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
	__le64 policy;
} __attribute((packed));

struct virtio_magma_set_cache_policy_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_cache_policy_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_get_buffer_cache_policy_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 cache_policy_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_buffer_is_mappable_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
	__le32 flags;
} __attribute((packed));

struct virtio_magma_get_buffer_is_mappable_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 is_mappable_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_set_buffer_mapping_address_range_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer;
	__le32 handle;
} __attribute((packed));

struct virtio_magma_set_buffer_mapping_address_range_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_map_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_map_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 addr_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_map_aligned_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 alignment;
} __attribute((packed));

struct virtio_magma_map_aligned_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 addr_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_map_specific_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 addr;
	__le64 offset;
	__le64 length;
} __attribute((packed));

struct virtio_magma_map_specific_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_unmap_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_unmap_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_map_buffer_gpu_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 page_offset;
	__le64 page_count;
	__le64 gpu_va;
	__le64 map_flags;
} __attribute((packed));

struct virtio_magma_map_buffer_gpu_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_unmap_buffer_gpu_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 gpu_va;
} __attribute((packed));

struct virtio_magma_unmap_buffer_gpu_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_commit_buffer_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 page_offset;
	__le64 page_count;
} __attribute((packed));

struct virtio_magma_commit_buffer_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_export_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
} __attribute((packed));

struct virtio_magma_export_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer_handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_import_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 buffer_handle;
} __attribute((packed));

struct virtio_magma_import_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_execute_command_buffer_with_resources_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 context_id;
	__le64 command_buffer;
	__le64 resources;
	__le64 semaphore_ids;
} __attribute((packed));

struct virtio_magma_execute_command_buffer_with_resources_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_execute_immediate_commands2_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 context_id;
	__le64 command_count;
	__le64 command_buffers;
} __attribute((packed));

struct virtio_magma_execute_immediate_commands2_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_create_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_create_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_release_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_release_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_get_semaphore_id_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_get_semaphore_id_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_signal_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_signal_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_reset_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_reset_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
} __attribute((packed));

struct virtio_magma_wait_semaphores_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphores;
	__le32 count;
	__le64 timeout_ms;
	u8 wait_all;
} __attribute((packed));

struct virtio_magma_wait_semaphores_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_export_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 semaphore;
} __attribute((packed));

struct virtio_magma_export_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore_handle_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_import_semaphore_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le32 semaphore_handle;
} __attribute((packed));

struct virtio_magma_import_semaphore_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 semaphore_out;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_get_notification_channel_handle_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
} __attribute((packed));

struct virtio_magma_get_notification_channel_handle_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le32 result_return;
} __attribute((packed));

struct virtio_magma_wait_notification_channel_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 timeout_ns;
} __attribute((packed));

struct virtio_magma_wait_notification_channel_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 result_return;
} __attribute((packed));

struct virtio_magma_read_notification_channel_ctrl {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 connection;
	__le64 buffer;
	__le64 buffer_size;
} __attribute((packed));

struct virtio_magma_read_notification_channel_resp {
	struct virtio_magma_ctrl_hdr hdr;
	__le64 buffer_size_out;
	__le64 result_return;
} __attribute((packed));

#endif /* _LINUX_VIRTIO_MAGMA_H */
