sortix-mirror/kernel/include/sortix/display.h

184 lines
4.1 KiB
C

/*
* Copyright (c) 2012, 2014, 2016 Jonas 'Sortie' Termansen.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* sortix/display.h
* Display message declarations.
*/
#ifndef _INCLUDE_SORTIX_DISPLAY_H
#define _INCLUDE_SORTIX_DISPLAY_H
#include <sys/cdefs.h>
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
static const uint32_t DISPMSG_CONTROL_VALID = 1 << 0;
static const uint32_t DISPMSG_CONTROL_VGA = 1 << 1;
static const uint32_t DISPMSG_CONTROL_OTHER_RESOLUTIONS = 1 << 2;
static const uint32_t DISPMSG_CONTROL_FALLBACK = 1 << 3;
static const uint32_t DISPMSG_CONTROL_DEFAULT = 1 << 4;
static const uint32_t DISPMSG_CONTROL_GOOD_DEFAULT = 1 << 5;
static const uint32_t DISPMSG_CONTROL_VM_AUTO_SCALE = 1 << 6;
struct dispmsg_string
{
size_t byte_size; /* Including the terminating NUL-byte. */
char* str;
};
struct dispmsg_crtc_mode
{
uint64_t driver_index;
uint64_t magic;
uint32_t control;
uint32_t fb_format;
uint32_t view_xres;
uint32_t view_yres;
uint64_t fb_location;
uint64_t pitch;
uint32_t surf_off_x;
uint32_t surf_off_y;
uint32_t start_x;
uint32_t start_y;
uint32_t end_x;
uint32_t end_y;
uint32_t desktop_height;
};
struct dispmsg_header
{
uint64_t msgid; /* in */
};
#define DISPMSG_ENUMERATE_DEVICES 0x00
struct dispmsg_enumerate_devices
{
uint64_t msgid; /* in */
size_t devices_length; /* in, out */
uint64_t* devices; /* in, *out */
};
#define DISPMSG_GET_DRIVER_COUNT 0x01
struct dispmsg_get_driver_count
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t driver_count; /* out */
};
#define DISPMSG_GET_DRIVER_NAME 0x02
struct dispmsg_get_driver_name
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t driver_index; /* in */
struct dispmsg_string name; /* out */
};
#define DISPMSG_GET_DRIVER 0x03
struct dispmsg_get_driver
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t driver_index; /* out */
};
#define DISPMSG_SET_DRIVER 0x04
struct dispmsg_set_driver
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t driver_index; /* in */
};
#define DISPMSG_SET_CRTC_MODE 0x05
struct dispmsg_set_crtc_mode
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t connector; /* in */
struct dispmsg_crtc_mode mode; /* in */
};
#define DISPMSG_GET_CRTC_MODE 0x06
struct dispmsg_get_crtc_mode
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t connector; /* in */
struct dispmsg_crtc_mode mode; /* out */
};
#define DISPMSG_GET_CRTC_MODES 0x07
struct dispmsg_get_crtc_modes
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t connector; /* in */
size_t modes_length; /* in, out */
struct dispmsg_crtc_mode* modes; /* in, *out */
};
#define DISPMSG_GET_MEMORY_SIZE 0x08
struct dispmsg_get_memory_size
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t memory_size; /* out */
};
#define DISPMSG_WRITE_MEMORY 0x09
struct dispmsg_write_memory
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t offset; /* in */
size_t size; /* in */
uint8_t* src; /* in, *in */
};
#define DISPMSG_READ_MEMORY 0x0A
struct dispmsg_read_memory
{
uint64_t msgid; /* in */
uint64_t device; /* in */
uint64_t offset; /* in */
size_t size; /* in */
uint8_t* dst; /* in, *out */
};
struct tiocgdisplay
{
uint64_t device;
uint64_t connector;
};
struct tiocgdisplays
{
size_t count; /* in, out */
struct tiocgdisplay* displays; /* in, *out */
};
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif