Linux Audio

Check our new training course

Loading...
v6.2
 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 */
11enum 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 */
18enum 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 */
26enum 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 */
44enum 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 */
59enum 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
65enum 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
80enum 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 */
v5.4
 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 */
11enum 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 */
18enum 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 */
26enum 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 */
44enum 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 */
59enum 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
65enum 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
80enum 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 */