1*6f744ddeSBryan Venteicher /*- 2*6f744ddeSBryan Venteicher * This header is BSD licensed so anyone can use the definitions to implement 3*6f744ddeSBryan Venteicher * compatible drivers/servers. 4*6f744ddeSBryan Venteicher * 5*6f744ddeSBryan Venteicher * Redistribution and use in source and binary forms, with or without 6*6f744ddeSBryan Venteicher * modification, are permitted provided that the following conditions 7*6f744ddeSBryan Venteicher * are met: 8*6f744ddeSBryan Venteicher * 1. Redistributions of source code must retain the above copyright 9*6f744ddeSBryan Venteicher * notice, this list of conditions and the following disclaimer. 10*6f744ddeSBryan Venteicher * 2. Redistributions in binary form must reproduce the above copyright 11*6f744ddeSBryan Venteicher * notice, this list of conditions and the following disclaimer in the 12*6f744ddeSBryan Venteicher * documentation and/or other materials provided with the distribution. 13*6f744ddeSBryan Venteicher * 3. Neither the name of IBM nor the names of its contributors 14*6f744ddeSBryan Venteicher * may be used to endorse or promote products derived from this software 15*6f744ddeSBryan Venteicher * without specific prior written permission. 16*6f744ddeSBryan Venteicher * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND 17*6f744ddeSBryan Venteicher * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*6f744ddeSBryan Venteicher * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*6f744ddeSBryan Venteicher * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE 20*6f744ddeSBryan Venteicher * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21*6f744ddeSBryan Venteicher * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22*6f744ddeSBryan Venteicher * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23*6f744ddeSBryan Venteicher * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24*6f744ddeSBryan Venteicher * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25*6f744ddeSBryan Venteicher * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26*6f744ddeSBryan Venteicher * SUCH DAMAGE. 27*6f744ddeSBryan Venteicher * 28*6f744ddeSBryan Venteicher * Copyright (C) Red Hat, Inc., 2009, 2010, 2011 29*6f744ddeSBryan Venteicher * Copyright (C) Amit Shah <amit.shah@redhat.com>, 2009, 2010, 2011 30*6f744ddeSBryan Venteicher */ 31*6f744ddeSBryan Venteicher 32*6f744ddeSBryan Venteicher #ifndef _VIRTIO_CONSOLE_H 33*6f744ddeSBryan Venteicher #define _VIRTIO_CONSOLE_H 34*6f744ddeSBryan Venteicher 35*6f744ddeSBryan Venteicher /* Feature bits */ 36*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_F_SIZE 0x01 /* Console size */ 37*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_F_MULTIPORT 0x02 /* Multiple ports */ 38*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_F_EMERG_WRITE 0x04 /* Emergency write */ 39*6f744ddeSBryan Venteicher 40*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_BAD_ID (~(uint32_t)0) 41*6f744ddeSBryan Venteicher 42*6f744ddeSBryan Venteicher struct virtio_console_config { 43*6f744ddeSBryan Venteicher /* colums of the screens */ 44*6f744ddeSBryan Venteicher uint16_t cols; 45*6f744ddeSBryan Venteicher /* rows of the screens */ 46*6f744ddeSBryan Venteicher uint16_t rows; 47*6f744ddeSBryan Venteicher /* max. number of ports this device can hold */ 48*6f744ddeSBryan Venteicher uint32_t max_nr_ports; 49*6f744ddeSBryan Venteicher /* emergency write register */ 50*6f744ddeSBryan Venteicher uint32_t emerg_wr; 51*6f744ddeSBryan Venteicher } __packed; 52*6f744ddeSBryan Venteicher 53*6f744ddeSBryan Venteicher /* 54*6f744ddeSBryan Venteicher * A message that's passed between the Host and the Guest for a 55*6f744ddeSBryan Venteicher * particular port. 56*6f744ddeSBryan Venteicher */ 57*6f744ddeSBryan Venteicher struct virtio_console_control { 58*6f744ddeSBryan Venteicher uint32_t id; /* Port number */ 59*6f744ddeSBryan Venteicher uint16_t event; /* The kind of control event (see below) */ 60*6f744ddeSBryan Venteicher uint16_t value; /* Extra information for the key */ 61*6f744ddeSBryan Venteicher }; 62*6f744ddeSBryan Venteicher 63*6f744ddeSBryan Venteicher /* Some events for control messages */ 64*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_DEVICE_READY 0 65*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_PORT_ADD 1 66*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_PORT_REMOVE 2 67*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_PORT_READY 3 68*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_CONSOLE_PORT 4 69*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_RESIZE 5 70*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_PORT_OPEN 6 71*6f744ddeSBryan Venteicher #define VIRTIO_CONSOLE_PORT_NAME 7 72*6f744ddeSBryan Venteicher 73*6f744ddeSBryan Venteicher #endif /* _VIRTIO_CONSOLE_H */ 74