root/drivers/platform/goldfish/goldfish_pipe_qemu.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * IMPORTANT: The following constants must match the ones used and defined in
   4  * external/qemu/include/hw/misc/goldfish_pipe.h
   5  */
   6 
   7 #ifndef GOLDFISH_PIPE_QEMU_H
   8 #define GOLDFISH_PIPE_QEMU_H
   9 
  10 /* List of bitflags returned in status of CMD_POLL command */
  11 enum PipePollFlags {
  12         PIPE_POLL_IN    = 1 << 0,
  13         PIPE_POLL_OUT   = 1 << 1,
  14         PIPE_POLL_HUP   = 1 << 2
  15 };
  16 
  17 /* Possible status values used to signal errors */
  18 enum PipeErrors {
  19         PIPE_ERROR_INVAL        = -1,
  20         PIPE_ERROR_AGAIN        = -2,
  21         PIPE_ERROR_NOMEM        = -3,
  22         PIPE_ERROR_IO           = -4
  23 };
  24 
  25 /* Bit-flags used to signal events from the emulator */
  26 enum PipeWakeFlags {
  27         /* emulator closed pipe */
  28         PIPE_WAKE_CLOSED                = 1 << 0,
  29 
  30         /* pipe can now be read from */
  31         PIPE_WAKE_READ                  = 1 << 1,
  32 
  33         /* pipe can now be written to */
  34         PIPE_WAKE_WRITE                 = 1 << 2,
  35 
  36         /* unlock this pipe's DMA buffer */
  37         PIPE_WAKE_UNLOCK_DMA            = 1 << 3,
  38 
  39         /* unlock DMA buffer of the pipe shared to this pipe */
  40         PIPE_WAKE_UNLOCK_DMA_SHARED     = 1 << 4,
  41 };
  42 
  43 /* Possible pipe closing reasons */
  44 enum PipeCloseReason {
  45         /* guest sent a close command */
  46         PIPE_CLOSE_GRACEFUL             = 0,
  47 
  48         /* guest rebooted, we're closing the pipes */
  49         PIPE_CLOSE_REBOOT               = 1,
  50 
  51         /* close old pipes on snapshot load */
  52         PIPE_CLOSE_LOAD_SNAPSHOT        = 2,
  53 
  54         /* some unrecoverable error on the pipe */
  55         PIPE_CLOSE_ERROR                = 3,
  56 };
  57 
  58 /* Bit flags for the 'flags' field */
  59 enum PipeFlagsBits {
  60         BIT_CLOSED_ON_HOST = 0,  /* pipe closed by host */
  61         BIT_WAKE_ON_WRITE  = 1,  /* want to be woken on writes */
  62         BIT_WAKE_ON_READ   = 2,  /* want to be woken on reads */
  63 };
  64 
  65 enum PipeRegs {
  66         PIPE_REG_CMD = 0,
  67 
  68         PIPE_REG_SIGNAL_BUFFER_HIGH = 4,
  69         PIPE_REG_SIGNAL_BUFFER = 8,
  70         PIPE_REG_SIGNAL_BUFFER_COUNT = 12,
  71 
  72         PIPE_REG_OPEN_BUFFER_HIGH = 20,
  73         PIPE_REG_OPEN_BUFFER = 24,
  74 
  75         PIPE_REG_VERSION = 36,
  76 
  77         PIPE_REG_GET_SIGNALLED = 48,
  78 };
  79 
  80 enum PipeCmdCode {
  81         /* to be used by the pipe device itself */
  82         PIPE_CMD_OPEN           = 1,
  83 
  84         PIPE_CMD_CLOSE,
  85         PIPE_CMD_POLL,
  86         PIPE_CMD_WRITE,
  87         PIPE_CMD_WAKE_ON_WRITE,
  88         PIPE_CMD_READ,
  89         PIPE_CMD_WAKE_ON_READ,
  90 
  91         /*
  92          * TODO(zyy): implement a deferred read/write execution to allow
  93          * parallel processing of pipe operations on the host.
  94          */
  95         PIPE_CMD_WAKE_ON_DONE_IO,
  96 };
  97 
  98 #endif /* GOLDFISH_PIPE_QEMU_H */

/* [<][>][^][v][top][bottom][index][help] */