2 * drivers/s390/char/hwc_rw.h
3 * interface to the HWC-read/write driver
6 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
7 * Author(s): Martin Peschke <mpeschke@de.ibm.com>
13 #include <linux/ioctl.h>
17 void (*move_input) (unsigned char *, unsigned int);
19 void (*wake_up) (void);
20 } hwc_high_level_calls_t;
24 typedef void hwc_callback_t (struct _hwc_request *);
26 typedef struct _hwc_request {
29 hwc_callback_t *callback;
31 } __attribute__ ((packed))
35 #define HWC_ASCEBC(x) ((MACHINE_IS_VM ? _ascebc[x] : _ascebc_500[x]))
37 #define HWC_EBCASC_STR(s,c) ((MACHINE_IS_VM ? EBCASC(s,c) : EBCASC_500(s,c)))
39 #define HWC_ASCEBC_STR(s,c) ((MACHINE_IS_VM ? ASCEBC(s,c) : ASCEBC_500(s,c)))
42 #define IN_WRITE_BUF 2
43 #define IN_BUFS_TOTAL (IN_HWCB | IN_WRITE_BUF)
45 typedef unsigned short int ioctl_htab_t;
46 typedef unsigned char ioctl_echo_t;
47 typedef unsigned short int ioctl_cols_t;
48 typedef signed char ioctl_nl_t;
49 typedef unsigned short int ioctl_obuf_t;
50 typedef unsigned char ioctl_case_t;
51 typedef unsigned char ioctl_delim_t;
54 ioctl_htab_t width_htab;
58 ioctl_obuf_t max_hwcb;
59 ioctl_obuf_t kmem_hwcb;
64 static hwc_ioctls_t _hwc_ioctls;
66 #define HWC_IOCTL_LETTER 'B'
68 #define TIOCHWCSHTAB _IOW(HWC_IOCTL_LETTER, 0, _hwc_ioctls.width_htab)
70 #define TIOCHWCSECHO _IOW(HWC_IOCTL_LETTER, 1, _hwc_ioctls.echo)
72 #define TIOCHWCSCOLS _IOW(HWC_IOCTL_LETTER, 2, _hwc_ioctls.columns)
74 #define TIOCHWCSNL _IOW(HWC_IOCTL_LETTER, 4, _hwc_ioctls.final_nl)
76 #define TIOCHWCSOBUF _IOW(HWC_IOCTL_LETTER, 5, _hwc_ioctls.max_hwcb)
78 #define TIOCHWCSINIT _IO(HWC_IOCTL_LETTER, 6)
80 #define TIOCHWCSCASE _IOW(HWC_IOCTL_LETTER, 7, _hwc_ioctls.tolower)
82 #define TIOCHWCSDELIM _IOW(HWC_IOCTL_LETTER, 9, _hwc_ioctls.delim)
84 #define TIOCHWCGHTAB _IOR(HWC_IOCTL_LETTER, 10, _hwc_ioctls.width_htab)
86 #define TIOCHWCGECHO _IOR(HWC_IOCTL_LETTER, 11, _hwc_ioctls.echo)
88 #define TIOCHWCGCOLS _IOR(HWC_IOCTL_LETTER, 12, _hwc_ioctls.columns)
90 #define TIOCHWCGNL _IOR(HWC_IOCTL_LETTER, 14, _hwc_ioctls.final_nl)
92 #define TIOCHWCGOBUF _IOR(HWC_IOCTL_LETTER, 15, _hwc_ioctls.max_hwcb)
94 #define TIOCHWCGINIT _IOR(HWC_IOCTL_LETTER, 16, _hwc_ioctls)
96 #define TIOCHWCGCASE _IOR(HWC_IOCTL_LETTER, 17, _hwc_ioctls.tolower)
98 #define TIOCHWCGDELIM _IOR(HWC_IOCTL_LETTER, 19, _hwc_ioctls.delim)
100 #define TIOCHWCGKBUF _IOR(HWC_IOCTL_LETTER, 20, _hwc_ioctls.max_hwcb)
102 #define TIOCHWCGCURR _IOR(HWC_IOCTL_LETTER, 21, _hwc_ioctls)
106 extern int hwc_init (void);
108 extern int hwc_write (int from_user, const unsigned char *, unsigned int);
110 extern unsigned int hwc_chars_in_buffer (unsigned char);
112 extern unsigned int hwc_write_room (unsigned char);
114 extern void hwc_flush_buffer (unsigned char);
116 extern void hwc_unblank (void);
118 extern signed int hwc_ioctl (unsigned int, unsigned long);
120 extern void do_hwc_interrupt (void);
122 extern int hwc_printk (const char *,...);
124 extern signed int hwc_register_calls (hwc_high_level_calls_t *);
126 extern signed int hwc_unregister_calls (hwc_high_level_calls_t *);
128 extern int hwc_send (hwc_request_t *);