xref: /OK3568_Linux_fs/kernel/include/uapi/linux/kd.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*4882a593Smuzhiyun #ifndef _UAPI_LINUX_KD_H
3*4882a593Smuzhiyun #define _UAPI_LINUX_KD_H
4*4882a593Smuzhiyun #include <linux/types.h>
5*4882a593Smuzhiyun #include <linux/compiler.h>
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun /* 0x4B is 'K', to avoid collision with termios and vt */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #define GIO_FONT	0x4B60	/* gets font in expanded form */
10*4882a593Smuzhiyun #define PIO_FONT	0x4B61	/* use font in expanded form */
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define GIO_FONTX	0x4B6B	/* get font using struct consolefontdesc */
13*4882a593Smuzhiyun #define PIO_FONTX	0x4B6C	/* set font using struct consolefontdesc */
14*4882a593Smuzhiyun struct consolefontdesc {
15*4882a593Smuzhiyun 	unsigned short charcount;	/* characters in font (256 or 512) */
16*4882a593Smuzhiyun 	unsigned short charheight;	/* scan lines per character (1-32) */
17*4882a593Smuzhiyun 	char __user *chardata;		/* font data in expanded form */
18*4882a593Smuzhiyun };
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define PIO_FONTRESET   0x4B6D	/* reset to default font */
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun #define GIO_CMAP	0x4B70	/* gets colour palette on VGA+ */
23*4882a593Smuzhiyun #define PIO_CMAP	0x4B71	/* sets colour palette on VGA+ */
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #define KIOCSOUND	0x4B2F	/* start sound generation (0 for off) */
26*4882a593Smuzhiyun #define KDMKTONE	0x4B30	/* generate tone */
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #define KDGETLED	0x4B31	/* return current led state */
29*4882a593Smuzhiyun #define KDSETLED	0x4B32	/* set led state [lights, not flags] */
30*4882a593Smuzhiyun #define 	LED_SCR		0x01	/* scroll lock led */
31*4882a593Smuzhiyun #define 	LED_NUM		0x02	/* num lock led */
32*4882a593Smuzhiyun #define 	LED_CAP		0x04	/* caps lock led */
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define KDGKBTYPE	0x4B33	/* get keyboard type */
35*4882a593Smuzhiyun #define 	KB_84		0x01
36*4882a593Smuzhiyun #define 	KB_101		0x02 	/* this is what we always answer */
37*4882a593Smuzhiyun #define 	KB_OTHER	0x03
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #define KDADDIO		0x4B34	/* add i/o port as valid */
40*4882a593Smuzhiyun #define KDDELIO		0x4B35	/* del i/o port as valid */
41*4882a593Smuzhiyun #define KDENABIO	0x4B36	/* enable i/o to video board */
42*4882a593Smuzhiyun #define KDDISABIO	0x4B37	/* disable i/o to video board */
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun #define KDSETMODE	0x4B3A	/* set text/graphics mode */
45*4882a593Smuzhiyun #define		KD_TEXT		0x00
46*4882a593Smuzhiyun #define		KD_GRAPHICS	0x01
47*4882a593Smuzhiyun #define		KD_TEXT0	0x02	/* obsolete */
48*4882a593Smuzhiyun #define		KD_TEXT1	0x03	/* obsolete */
49*4882a593Smuzhiyun #define KDGETMODE	0x4B3B	/* get current mode */
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun #define KDMAPDISP	0x4B3C	/* map display into address space */
52*4882a593Smuzhiyun #define KDUNMAPDISP	0x4B3D	/* unmap display from address space */
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun typedef char scrnmap_t;
55*4882a593Smuzhiyun #define		E_TABSZ		256
56*4882a593Smuzhiyun #define GIO_SCRNMAP	0x4B40	/* get screen mapping from kernel */
57*4882a593Smuzhiyun #define PIO_SCRNMAP	0x4B41	/* put screen mapping table in kernel */
58*4882a593Smuzhiyun #define GIO_UNISCRNMAP  0x4B69	/* get full Unicode screen mapping */
59*4882a593Smuzhiyun #define PIO_UNISCRNMAP  0x4B6A  /* set full Unicode screen mapping */
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun #define GIO_UNIMAP	0x4B66	/* get unicode-to-font mapping from kernel */
62*4882a593Smuzhiyun struct unipair {
63*4882a593Smuzhiyun 	unsigned short unicode;
64*4882a593Smuzhiyun 	unsigned short fontpos;
65*4882a593Smuzhiyun };
66*4882a593Smuzhiyun struct unimapdesc {
67*4882a593Smuzhiyun 	unsigned short entry_ct;
68*4882a593Smuzhiyun 	struct unipair __user *entries;
69*4882a593Smuzhiyun };
70*4882a593Smuzhiyun #define PIO_UNIMAP	0x4B67	/* put unicode-to-font mapping in kernel */
71*4882a593Smuzhiyun #define PIO_UNIMAPCLR	0x4B68	/* clear table, possibly advise hash algorithm */
72*4882a593Smuzhiyun struct unimapinit {
73*4882a593Smuzhiyun 	unsigned short advised_hashsize;  /* 0 if no opinion */
74*4882a593Smuzhiyun 	unsigned short advised_hashstep;  /* 0 if no opinion */
75*4882a593Smuzhiyun 	unsigned short advised_hashlevel; /* 0 if no opinion */
76*4882a593Smuzhiyun };
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #define UNI_DIRECT_BASE 0xF000	/* start of Direct Font Region */
79*4882a593Smuzhiyun #define UNI_DIRECT_MASK 0x01FF	/* Direct Font Region bitmask */
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun #define		K_RAW		0x00
82*4882a593Smuzhiyun #define		K_XLATE		0x01
83*4882a593Smuzhiyun #define		K_MEDIUMRAW	0x02
84*4882a593Smuzhiyun #define		K_UNICODE	0x03
85*4882a593Smuzhiyun #define		K_OFF		0x04
86*4882a593Smuzhiyun #define KDGKBMODE	0x4B44	/* gets current keyboard mode */
87*4882a593Smuzhiyun #define KDSKBMODE	0x4B45	/* sets current keyboard mode */
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun #define		K_METABIT	0x03
90*4882a593Smuzhiyun #define		K_ESCPREFIX	0x04
91*4882a593Smuzhiyun #define KDGKBMETA	0x4B62	/* gets meta key handling mode */
92*4882a593Smuzhiyun #define KDSKBMETA	0x4B63	/* sets meta key handling mode */
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #define		K_SCROLLLOCK	0x01
95*4882a593Smuzhiyun #define		K_NUMLOCK	0x02
96*4882a593Smuzhiyun #define		K_CAPSLOCK	0x04
97*4882a593Smuzhiyun #define	KDGKBLED	0x4B64	/* get led flags (not lights) */
98*4882a593Smuzhiyun #define	KDSKBLED	0x4B65	/* set led flags (not lights) */
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun struct kbentry {
101*4882a593Smuzhiyun 	unsigned char kb_table;
102*4882a593Smuzhiyun 	unsigned char kb_index;
103*4882a593Smuzhiyun 	unsigned short kb_value;
104*4882a593Smuzhiyun };
105*4882a593Smuzhiyun #define		K_NORMTAB	0x00
106*4882a593Smuzhiyun #define		K_SHIFTTAB	0x01
107*4882a593Smuzhiyun #define		K_ALTTAB	0x02
108*4882a593Smuzhiyun #define		K_ALTSHIFTTAB	0x03
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #define KDGKBENT	0x4B46	/* gets one entry in translation table */
111*4882a593Smuzhiyun #define KDSKBENT	0x4B47	/* sets one entry in translation table */
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun struct kbsentry {
114*4882a593Smuzhiyun 	unsigned char kb_func;
115*4882a593Smuzhiyun 	unsigned char kb_string[512];
116*4882a593Smuzhiyun };
117*4882a593Smuzhiyun #define KDGKBSENT	0x4B48	/* gets one function key string entry */
118*4882a593Smuzhiyun #define KDSKBSENT	0x4B49	/* sets one function key string entry */
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun struct kbdiacr {
121*4882a593Smuzhiyun         unsigned char diacr, base, result;
122*4882a593Smuzhiyun };
123*4882a593Smuzhiyun struct kbdiacrs {
124*4882a593Smuzhiyun         unsigned int kb_cnt;    /* number of entries in following array */
125*4882a593Smuzhiyun 	struct kbdiacr kbdiacr[256];    /* MAX_DIACR from keyboard.h */
126*4882a593Smuzhiyun };
127*4882a593Smuzhiyun #define KDGKBDIACR      0x4B4A  /* read kernel accent table */
128*4882a593Smuzhiyun #define KDSKBDIACR      0x4B4B  /* write kernel accent table */
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun struct kbdiacruc {
131*4882a593Smuzhiyun 	unsigned int diacr, base, result;
132*4882a593Smuzhiyun };
133*4882a593Smuzhiyun struct kbdiacrsuc {
134*4882a593Smuzhiyun         unsigned int kb_cnt;    /* number of entries in following array */
135*4882a593Smuzhiyun 	struct kbdiacruc kbdiacruc[256];    /* MAX_DIACR from keyboard.h */
136*4882a593Smuzhiyun };
137*4882a593Smuzhiyun #define KDGKBDIACRUC    0x4BFA  /* read kernel accent table - UCS */
138*4882a593Smuzhiyun #define KDSKBDIACRUC    0x4BFB  /* write kernel accent table - UCS */
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun struct kbkeycode {
141*4882a593Smuzhiyun 	unsigned int scancode, keycode;
142*4882a593Smuzhiyun };
143*4882a593Smuzhiyun #define KDGETKEYCODE	0x4B4C	/* read kernel keycode table entry */
144*4882a593Smuzhiyun #define KDSETKEYCODE	0x4B4D	/* write kernel keycode table entry */
145*4882a593Smuzhiyun 
146*4882a593Smuzhiyun #define KDSIGACCEPT	0x4B4E	/* accept kbd generated signals */
147*4882a593Smuzhiyun 
148*4882a593Smuzhiyun struct kbd_repeat {
149*4882a593Smuzhiyun 	int delay;	/* in msec; <= 0: don't change */
150*4882a593Smuzhiyun 	int period;	/* in msec; <= 0: don't change */
151*4882a593Smuzhiyun 			/* earlier this field was misnamed "rate" */
152*4882a593Smuzhiyun };
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun #define KDKBDREP        0x4B52  /* set keyboard delay/repeat rate;
155*4882a593Smuzhiyun 				 * actually used values are returned */
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun #define KDFONTOP	0x4B72	/* font operations */
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun struct console_font_op {
160*4882a593Smuzhiyun 	unsigned int op;	/* operation code KD_FONT_OP_* */
161*4882a593Smuzhiyun 	unsigned int flags;	/* KD_FONT_FLAG_* */
162*4882a593Smuzhiyun 	unsigned int width, height;	/* font size */
163*4882a593Smuzhiyun 	unsigned int charcount;
164*4882a593Smuzhiyun 	unsigned char __user *data;	/* font data with height fixed to 32 */
165*4882a593Smuzhiyun };
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun struct console_font {
168*4882a593Smuzhiyun 	unsigned int width, height;	/* font size */
169*4882a593Smuzhiyun 	unsigned int charcount;
170*4882a593Smuzhiyun 	unsigned char *data;	/* font data with height fixed to 32 */
171*4882a593Smuzhiyun };
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #define KD_FONT_OP_SET		0	/* Set font */
174*4882a593Smuzhiyun #define KD_FONT_OP_GET		1	/* Get font */
175*4882a593Smuzhiyun #define KD_FONT_OP_SET_DEFAULT	2	/* Set font to default, data points to name / NULL */
176*4882a593Smuzhiyun #define KD_FONT_OP_COPY		3	/* Copy from another console */
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun #define KD_FONT_FLAG_DONT_RECALC 	1	/* Don't recalculate hw charcell size [compat] */
179*4882a593Smuzhiyun 
180*4882a593Smuzhiyun /* note: 0x4B00-0x4B4E all have had a value at some time;
181*4882a593Smuzhiyun    don't reuse for the time being */
182*4882a593Smuzhiyun /* note: 0x4B60-0x4B6D, 0x4B70-0x4B72 used above */
183*4882a593Smuzhiyun 
184*4882a593Smuzhiyun #endif /* _UAPI_LINUX_KD_H */
185