Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

sunkbd.c File Reference

#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/tty.h>
#include <linux/tty_flip.h>
#include <linux/mm.h>
#include <linux/ptrace.h>
#include <linux/signal.h>
#include <linux/string.h>
#include <linux/fcntl.h>
#include <linux/poll.h>
#include <linux/random.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/sysrq.h>
#include <asm/kbio.h>
#include <asm/vuid_event.h>
#include <asm/bitops.h>
#include <asm/oplib.h>
#include <asm/uaccess.h>
#include <linux/kbd_kern.h>
#include <linux/kbd_diacr.h>
#include <linux/vt_kern.h>
#include "sunkbd.h"

Include dependency graph for sunkbd.c:

Go to the source code of this file.

Data Structures

struct  ledptr

Defines

#define SIZE(x)   (sizeof(x)/sizeof((x)[0]))
#define KBD_MAJOR   11
#define KBD_REPORT_ERR
#define KBD_REPORT_UNKN
#define KBD_DEFMODE   ((1 << VC_REPEAT) | (1 << VC_META))
#define KBD_DEFLEDS   0
#define KBD_DEFLOCK   0
#define SUNKBD_TYPE2   0x02
#define SUNKBD_TYPE3   0x03
#define SUNKBD_TYPE4   0x04
#define SUNKBD_LOUT_TYP4   0x00
#define SUNKBD_LOUT_TYP5_MASK   0x20
#define SKBDCMD_RESET   0x1
#define SKBDCMD_GLAYOUT   0xf
#define SKBDCMD_BELLON   0x2
#define SKBDCMD_BELLOFF   0x3
#define SKBDCMD_SETLED   0xe
#define SKBDCMD_NOCLICK   0xb
#define SKBDCMD_CLICK   0xa
#define LED_NLOCK   0x1
#define LED_CMPOSE   0x2
#define LED_SCRLCK   0x4
#define LED_CLOCK   0x8
#define SKBD_RESET   0xff
#define SKBD_ALLUP   0x7f
#define SKBD_LYOUT   0xfe
#define SUNKBD_UBIT   0x80
#define SUNKBD_KMASK   0x7f
#define KEY_LSHIFT   0x81
#define KEY_RSHIFT   0x82
#define KEY_CONTROL   0x83
#define KEY_NILL   0x84
#define KEY_CAPSLOCK   0x85
#define KEY_ALT   0x86
#define KEY_L1   0x87
#define E0_KPENTER   96
#define E0_RCTRL   97
#define E0_KPSLASH   98
#define E0_PRSCR   99
#define E0_RALT   100
#define E0_BREAK   101
#define E0_HOME   102
#define E0_UP   103
#define E0_PGUP   104
#define E0_LEFT   105
#define E0_RIGHT   106
#define E0_END   107
#define E0_DOWN   108
#define E0_PGDN   109
#define E0_INS   110
#define E0_DEL   111
#define E1_PAUSE   119
#define SC_LIM   89
#define FOCUS_PF1   85
#define FOCUS_PF2   89
#define FOCUS_PF3   90
#define FOCUS_PF4   91
#define FOCUS_PF5   92
#define FOCUS_PF6   93
#define FOCUS_PF7   94
#define FOCUS_PF8   95
#define FOCUS_PF9   120
#define FOCUS_PF10   121
#define FOCUS_PF11   122
#define FOCUS_PF12   123
#define JAP_86   124
#define RGN1   124
#define RGN2   125
#define RGN3   126
#define RGN4   127
#define E0_MACRO   112
#define E0_F13   113
#define E0_F14   114
#define E0_HELP   115
#define E0_DO   116
#define E0_F17   117
#define E0_KPMINPLUS   118
#define E0_OK   124
#define E0_MSLW   125
#define E0_MSRW   126
#define E0_MSTM   127
#define A_GRAVE   '`'
#define A_ACUTE   '\''
#define A_CFLEX   '^'
#define A_TILDE   '~'
#define A_DIAER   '"'
#define A_CEDIL   ','
#define KBD_QSIZE   32

Typedefs

typedef void(* k_hand )(unsigned char value, char up_flag)
typedef void( k_handfn )(unsigned char value, char up_flag)
typedef void(* void_fnp )(void)
typedef void( void_fn )(void)

Functions

void poke_blanked_console (void)
void ctrl_alt_del (void)
void reset_vc (unsigned int new_console)
void scrollback (int)
void scrollfront (int)
void kbd_reset_setup (char *str, int *ints)
int keyboard_wait_for_keypress (struct console *co)
void push_kbd (int scan)
void sun_compute_shiftstate (void)
static void put_queue (int)
static unsigned char handle_diacr (unsigned char)
static void nop_kbd_put_char (unsigned char c)
static void send_cmd (unsigned char c)
static unsigned char vcleds_to_sunkbd (unsigned char vcleds)
int sun_setkeycode (unsigned int scancode, unsigned int keycode)
int sun_getkeycode (unsigned int scancode)
void sunkbd_inchar (unsigned char ch, struct pt_regs *regs)
static void keyboard_timer (unsigned long ignored)
static void puts_queue (char *cp)
static void applkey (int key, char mode)
static void enter (void)
static void caps_toggle (void)
static void caps_on (void)
static void show_ptregs (void)
static void hold (void)
static void num (void)
static void bare_num (void)
static void lastcons (void)
static void decr_console (void)
static void incr_console (void)
static void send_intr (void)
static void scroll_forw (void)
static void scroll_back (void)
static void boot_it (void)
static void compose (void)
static void spawn_console (void)
static void SAK (void)
static void do_ignore (unsigned char value, char up_flag)
static void do_null ()
static void do_spec (unsigned char value, char up_flag)
static void do_lowercase (unsigned char value, char up_flag)
static void do_self (unsigned char value, char up_flag)
static void do_dead (unsigned char value, char up_flag)
static void do_cons (unsigned char value, char up_flag)
static void do_fn (unsigned char value, char up_flag)
static void do_pad (unsigned char value, char up_flag)
static void do_cur (unsigned char value, char up_flag)
static void do_shift (unsigned char value, char up_flag)
static void do_meta (unsigned char value, char up_flag)
static void do_ascii (unsigned char value, char up_flag)
static void do_lock (unsigned char value, char up_flag)
unsigned char sun_getledstate (void)
void sun_setledstate (struct kbd_struct *kbd, unsigned int led)
void register_leds (int console, unsigned int led, unsigned int *addr, unsigned int mask)
static unsigned char getleds (void)
static void kbd_bh (void)
static void sunkbd_kd_nosound (unsigned long __unused)
static void sunkbd_kd_mksound (unsigned int hz, unsigned int ticks)
 __initfunc (int sun_kbd_init(void))
static ssize_t kbd_read (struct file *f, char *buffer, size_t count, loff_t *ppos)
static int kbd_fasync (int fd, struct file *filp, int on)
static unsigned int kbd_poll (struct file *f, poll_table *wait)
static int kbd_ioctl (struct inode *i, struct file *f, unsigned int cmd, unsigned long arg)
static int kbd_open (struct inode *i, struct file *f)
static int kbd_close (struct inode *i, struct file *f)
 __initfunc (void keyboard_zsinit(void(*put_char)(unsigned char)))

Variables

l1a_kbd_state l1a_state = { 0, 0 }
wait_queue * keypress_wait = NULL
static unsigned char k_down [NR_SHIFT] = {0, }
static unsigned long key_down [256/BITS_PER_LONG] = { 0, }
int kbd_redirected = 0
static int dead_key_next = 0
int shift_state = 0
static int npadch = -1
static unsigned char diacr = 0
static char rep = 0
kbd_struct kbd_table [MAX_NR_CONSOLES]
static struct tty_struct ** ttytab
static struct kbd_structkbd = kbd_table
static struct tty_struct * tty = NULL
static int compose_led_on = 0
static int kbd_delay_ticks = HZ / 5
static int kbd_rate_ticks = HZ / 20
static k_handfn do_self
static k_handfn do_fn
static k_handfn do_spec
static k_handfn do_pad
static k_handfn do_dead
static k_handfn do_cons
static k_handfn do_cur
static k_handfn do_shift
static k_handfn do_meta
static k_handfn do_ascii
static k_handfn do_lock
static k_handfn do_lowercase
static k_handfn do_ignore
static k_hand key_handler [16]
static void_fn do_null
static void_fn enter
static void_fn show_ptregs
static void_fn send_intr
static void_fn lastcons
static void_fn caps_toggle
static void_fn num
static void_fn hold
static void_fn scroll_forw
static void_fn scroll_back
static void_fn boot_it
static void_fn caps_on
static void_fn compose
static void_fn SAK
static void_fn decr_console
static void_fn incr_console
static void_fn spawn_console
static void_fn bare_num
static void_fnp spec_fn_table []
const int max_vals []
const int NR_TYPES = SIZE(max_vals)
static struct pt_regspt_regs
volatile unsigned char sunkbd_layout
volatile unsigned char sunkbd_type
volatile int kbd_reset_pending
volatile int kbd_layout_pending
static unsigned char sunkbd_clickp
static void(* kbd_put_char )(unsigned char) = nop_kbd_put_char
static unsigned char high_keys [128-SC_LIM]
static unsigned char e0_keys [128]
static unsigned char norepeat_keys [128]
static struct timer_list auto_repeat_timer = { NULL, NULL, 0, 0, keyboard_timer }
static unsigned char last_keycode
int spawnpid
int spawnsig
static unsigned char ret_diacr [NR_DEAD]
static unsigned char ledstate = 0xff
static unsigned char sunkbd_ledstate = 0xff
static unsigned char ledioctl
static struct ledptr ledptrs [3]
void(* kd_mksound )(unsigned int hz, unsigned int ticks)
static Firm_event kbd_queue [KBD_QSIZE]
static int kbd_head
static int kbd_tail
char kbd_opened
static int kbd_active = 0
static struct wait_queue * kbd_wait
static struct fasync_struct * kb_fasync
static struct file_operations kbd_fops


Define Documentation

#define A_ACUTE   '\''
 

Definition at line 851 of file sunkbd.c.

#define A_CEDIL   ','
 

Definition at line 855 of file sunkbd.c.

#define A_CFLEX   '^'
 

Definition at line 852 of file sunkbd.c.

#define A_DIAER   '"'
 

Definition at line 854 of file sunkbd.c.

#define A_GRAVE   '`'
 

Definition at line 850 of file sunkbd.c.

#define A_TILDE   '~'
 

Definition at line 853 of file sunkbd.c.

#define E0_BREAK   101
 

Definition at line 305 of file sunkbd.c.

#define E0_DEL   111
 

Definition at line 315 of file sunkbd.c.

#define E0_DO   116
 

Definition at line 368 of file sunkbd.c.

#define E0_DOWN   108
 

Definition at line 312 of file sunkbd.c.

#define E0_END   107
 

Definition at line 311 of file sunkbd.c.

#define E0_F13   113
 

Definition at line 365 of file sunkbd.c.

#define E0_F14   114
 

Definition at line 366 of file sunkbd.c.

#define E0_F17   117
 

Definition at line 369 of file sunkbd.c.

#define E0_HELP   115
 

Definition at line 367 of file sunkbd.c.

#define E0_HOME   102
 

Definition at line 306 of file sunkbd.c.

#define E0_INS   110
 

Definition at line 314 of file sunkbd.c.

#define E0_KPENTER   96
 

Definition at line 300 of file sunkbd.c.

#define E0_KPMINPLUS   118
 

Definition at line 370 of file sunkbd.c.

#define E0_KPSLASH   98
 

Definition at line 302 of file sunkbd.c.

#define E0_LEFT   105
 

Definition at line 309 of file sunkbd.c.

#define E0_MACRO   112
 

Definition at line 363 of file sunkbd.c.

#define E0_MSLW   125
 

Definition at line 382 of file sunkbd.c.

#define E0_MSRW   126
 

Definition at line 383 of file sunkbd.c.

#define E0_MSTM   127
 

Definition at line 384 of file sunkbd.c.

#define E0_OK   124
 

Definition at line 375 of file sunkbd.c.

#define E0_PGDN   109
 

Definition at line 313 of file sunkbd.c.

#define E0_PGUP   104
 

Definition at line 308 of file sunkbd.c.

#define E0_PRSCR   99
 

Definition at line 303 of file sunkbd.c.

#define E0_RALT   100
 

Definition at line 304 of file sunkbd.c.

#define E0_RCTRL   97
 

Definition at line 301 of file sunkbd.c.

#define E0_RIGHT   106
 

Definition at line 310 of file sunkbd.c.

#define E0_UP   103
 

Definition at line 307 of file sunkbd.c.

#define E1_PAUSE   119
 

Definition at line 317 of file sunkbd.c.

#define FOCUS_PF1   85
 

Definition at line 328 of file sunkbd.c.

#define FOCUS_PF10   121
 

Definition at line 337 of file sunkbd.c.

#define FOCUS_PF11   122
 

Definition at line 338 of file sunkbd.c.

#define FOCUS_PF12   123
 

Definition at line 339 of file sunkbd.c.

#define FOCUS_PF2   89
 

Definition at line 329 of file sunkbd.c.

#define FOCUS_PF3   90
 

Definition at line 330 of file sunkbd.c.

#define FOCUS_PF4   91
 

Definition at line 331 of file sunkbd.c.

#define FOCUS_PF5   92
 

Definition at line 332 of file sunkbd.c.

#define FOCUS_PF6   93
 

Definition at line 333 of file sunkbd.c.

#define FOCUS_PF7   94
 

Definition at line 334 of file sunkbd.c.

#define FOCUS_PF8   95
 

Definition at line 335 of file sunkbd.c.

#define FOCUS_PF9   120
 

Definition at line 336 of file sunkbd.c.

#define JAP_86   124
 

Definition at line 341 of file sunkbd.c.

#define KBD_DEFLEDS   0
 

Definition at line 67 of file sunkbd.c.

#define KBD_DEFLOCK   0
 

Definition at line 71 of file sunkbd.c.

#define KBD_DEFMODE   ((1 << VC_REPEAT) | (1 << VC_META))
 

Definition at line 59 of file sunkbd.c.

#define KBD_MAJOR   11
 

Definition at line 53 of file sunkbd.c.

Referenced by __initfunc().

#define KBD_QSIZE   32
 

Definition at line 1259 of file sunkbd.c.

Referenced by kbd_ioctl(), kbd_read(), and push_kbd().

#define KBD_REPORT_ERR
 

Definition at line 55 of file sunkbd.c.

#define KBD_REPORT_UNKN
 

Definition at line 56 of file sunkbd.c.

#define KEY_ALT   0x86
 

Definition at line 245 of file sunkbd.c.

#define KEY_CAPSLOCK   0x85
 

Definition at line 244 of file sunkbd.c.

Referenced by adbhid_input_keycode().

#define KEY_CONTROL   0x83
 

Definition at line 242 of file sunkbd.c.

#define KEY_L1   0x87
 

Definition at line 246 of file sunkbd.c.

#define KEY_LSHIFT   0x81
 

Definition at line 240 of file sunkbd.c.

#define KEY_NILL   0x84
 

Definition at line 243 of file sunkbd.c.

#define KEY_RSHIFT   0x82
 

Definition at line 241 of file sunkbd.c.

#define LED_CLOCK   0x8
 

Definition at line 221 of file sunkbd.c.

Referenced by kbd_ioctl(), and vcleds_to_sunkbd().

#define LED_CMPOSE   0x2
 

Definition at line 219 of file sunkbd.c.

Referenced by kbd_ioctl(), and vcleds_to_sunkbd().

#define LED_NLOCK   0x1
 

Definition at line 218 of file sunkbd.c.

Referenced by kbd_ioctl(), and vcleds_to_sunkbd().

#define LED_SCRLCK   0x4
 

Definition at line 220 of file sunkbd.c.

Referenced by kbd_ioctl(), and vcleds_to_sunkbd().

#define RGN1   124
 

Definition at line 348 of file sunkbd.c.

#define RGN2   125
 

Definition at line 349 of file sunkbd.c.

#define RGN3   126
 

Definition at line 350 of file sunkbd.c.

#define RGN4   127
 

Definition at line 351 of file sunkbd.c.

#define SC_LIM   89
 

Definition at line 326 of file sunkbd.c.

#define SIZE x   )     (sizeof(x)/sizeof((x)[0]))
 

Definition at line 46 of file sunkbd.c.

#define SKBD_ALLUP   0x7f
 

Definition at line 225 of file sunkbd.c.

Referenced by sunkbd_inchar().

#define SKBD_LYOUT   0xfe
 

Definition at line 226 of file sunkbd.c.

Referenced by sunkbd_inchar().

#define SKBD_RESET   0xff
 

Definition at line 224 of file sunkbd.c.

Referenced by sunkbd_inchar().

#define SKBDCMD_BELLOFF   0x3
 

Definition at line 207 of file sunkbd.c.

Referenced by kbd_ioctl(), sunkbd_kd_mksound(), and sunkbd_kd_nosound().

#define SKBDCMD_BELLON   0x2
 

Definition at line 206 of file sunkbd.c.

Referenced by kbd_ioctl(), and sunkbd_kd_mksound().

#define SKBDCMD_CLICK   0xa
 

Definition at line 210 of file sunkbd.c.

Referenced by __initfunc(), and kbd_ioctl().

#define SKBDCMD_GLAYOUT   0xf
 

Definition at line 205 of file sunkbd.c.

Referenced by sunkbd_inchar().

#define SKBDCMD_NOCLICK   0xb
 

Definition at line 209 of file sunkbd.c.

Referenced by __initfunc(), and kbd_ioctl().

#define SKBDCMD_RESET   0x1
 

Definition at line 204 of file sunkbd.c.

Referenced by __initfunc().

#define SKBDCMD_SETLED   0xe
 

Definition at line 208 of file sunkbd.c.

Referenced by __initfunc(), and kbd_bh().

#define SUNKBD_KMASK   0x7f
 

Definition at line 238 of file sunkbd.c.

Referenced by sunkbd_inchar().

#define SUNKBD_LOUT_TYP4   0x00
 

Definition at line 197 of file sunkbd.c.

#define SUNKBD_LOUT_TYP5_MASK   0x20
 

Definition at line 198 of file sunkbd.c.

Referenced by __initfunc().

#define SUNKBD_TYPE2   0x02
 

Definition at line 193 of file sunkbd.c.

Referenced by __initfunc().

#define SUNKBD_TYPE3   0x03
 

Definition at line 194 of file sunkbd.c.

#define SUNKBD_TYPE4   0x04
 

Definition at line 195 of file sunkbd.c.

Referenced by __initfunc(), and sunkbd_inchar().

#define SUNKBD_UBIT   0x80
 

Definition at line 237 of file sunkbd.c.

Referenced by sunkbd_inchar().


Typedef Documentation

typedef void(* k_hand)(unsigned char value, char up_flag)
 

Definition at line 133 of file sunkbd.c.

typedef void( k_handfn)(unsigned char value, char up_flag)
 

Definition at line 134 of file sunkbd.c.

typedef void( void_fn)(void)
 

Definition at line 147 of file sunkbd.c.

typedef void(* void_fnp)(void)
 

Definition at line 146 of file sunkbd.c.


Function Documentation

__initfunc void   keyboard_zsinit(void(*put_char)(unsigned char))  ) 
 

Definition at line 1510 of file sunkbd.c.

References KBD_MAJOR, kbd_put_char, panic(), printk, register_chrdev(), send_cmd(), SKBDCMD_CLICK, SKBDCMD_NOCLICK, SKBDCMD_RESET, SKBDCMD_SETLED, sunkbd_clickp, sunkbd_layout, SUNKBD_LOUT_TYP5_MASK, sunkbd_type, SUNKBD_TYPE2, SUNKBD_TYPE4, timeout, udelay, x0, and xf.

Here is the call graph for this function:

__initfunc int   sun_kbd_init(void)  ) 
 

Definition at line 1220 of file sunkbd.c.

References kbd_struct::default_ledflagstate, i, init_bh(), kbd_bh(), KBD_DEFLEDS, KBD_DEFLOCK, KBD_DEFMODE, kbd_struct::kbdmode, kd_mksound, KEYBOARD_BH, LED_SHOW_FLAGS, kbd_struct::ledflagstate, kbd_struct::ledmode, kbd_struct::lockstate, mark_bh, kbd_struct::modeflags, prom_getchild(), prom_getintdefault(), prom_root_node, prom_searchsiblings(), kbd_struct::slockstate, sparc_cpu_model, sun4, sunkbd_clickp, sunkbd_kd_mksound(), tty_driver::table, ttytab, and VC_XLATE.

Here is the call graph for this function: