1/* 2 * Copyright 2019, Data61, CSIRO (ABN 41 687 119 230) 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 * 6 */ 7syntax = "proto3"; 8 9enum Action { 10 ALLOCATE = 0; 11 FREE = 1; 12}; 13 14/* allocate a memory region */ 15message MemoryAllocMessage { 16 uint64 address = 1; 17 uint64 size_bits = 2; 18 uint64 type = 3; 19 Action action = 4; 20}; 21 22/* allocate IRQs */ 23/* x86 MSI IRQs */ 24message IrqAllocMessagex86_MSI { 25 uint64 pci_bus = 1; 26 uint64 pci_dev = 2; 27 uint64 pci_func = 3; 28 uint64 handle = 4; 29 uint64 vector = 5; 30}; 31 32/* x86 IOAPIC IRQs */ 33message IrqAllocMessagex86_IOAPIC { 34 uint64 ioapic = 1; 35 uint64 pin = 2; 36 uint64 level = 3; 37 uint64 polarity = 4; 38 uint64 vector = 5; 39}; 40 41/* IRQs represented only by a number, and also ARM IRQs with a trigger. */ 42message IrqAllocMessageSimple { 43 bool setTrigger = 1; 44 uint64 irq = 2; 45 uint64 trigger = 3; 46}; 47 48/* contains all IRQ messages */ 49message IrqAllocMessage { 50 oneof type { 51 IrqAllocMessagex86_MSI msi = 1; 52 IrqAllocMessagex86_IOAPIC ioapic = 2; 53 IrqAllocMessageSimple simple = 3; 54 }; 55}; 56 57/* allocate IO port ranges */ 58message IOPortMessage { 59 uint32 start = 1; 60 uint32 end = 2; 61}; 62 63message ReturnMessage { 64 uint32 errorCode = 1; 65 uint64 cookie = 2; 66}; 67 68/* 69 * this is the only message type that's actually sent, 70 * all the other messages are just contained within 71 * this one. 72 */ 73message RpcMessage { 74 oneof msg { 75 ReturnMessage ret = 1; 76 MemoryAllocMessage memory = 2; 77 IrqAllocMessage irq = 3; 78 IOPortMessage ioport = 4; 79 }; 80}; 81