~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/drivers/char/hp600_keyb.c

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *      $Id: hp600_keyb.c,v 1.1 2000/06/10 21:45:30 yaegashi Exp $
  3  *      Copyright (C) 2000 YAEGASHI Takeshi
  4  *      HP600 keyboard scan routine and translate table
  5  */
  6 
  7 #include <linux/kernel.h>
  8 #include <linux/sched.h>
  9 #include <linux/init.h>
 10 #include <linux/delay.h>
 11 #include <asm/io.h>
 12 #include "scan_keyb.h"
 13 
 14 #define PCDR 0xa4000124
 15 #define PDDR 0xa4000126
 16 #define PEDR 0xa4000128
 17 #define PFDR 0xa400012a
 18 #define PGDR 0xa400012c
 19 #define PHDR 0xa400012e
 20 
 21 static const unsigned char hp690_japanese_table[]={
 22         0x00, 0x00, 0x00, 0x01, 0x00, 0x29, 0x70, 0x3a,
 23         0x3f, 0x3e, 0x40, 0x41, 0x42, 0x3d, 0x3c, 0x3b,
 24 
 25         0x00, 0x00, 0x00, 0x2c, 0x00, 0x1c, 0x28, 0x35,
 26         0x31, 0x30, 0x32, 0x33, 0x34, 0x2f, 0x2e, 0x2d,
 27 
 28         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x50,
 29         0x7b, 0x38, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00,
 30 
 31         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 32         0x00, 0x00, 0xf9, 0x73, 0x53, 0x39, 0x00, 0x1d,
 33 
 34         0x00, 0x00, 0x00, 0x1e, 0x00, 0x2b, 0x1b, 0x27,
 35         0x23, 0x22, 0x24, 0x25, 0x26, 0x21, 0x20, 0x1f,
 36 
 37         0x00, 0x00, 0x00, 0x0f, 0x00, 0x36, 0x7d, 0x48,
 38         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00,
 39 
 40         0x00, 0x00, 0x00, 0x10, 0x00, 0x0e, 0x1a, 0x19,
 41         0x15, 0x14, 0x16, 0x17, 0x18, 0x13, 0x12, 0x11,
 42 
 43         0x00, 0x00, 0x00, 0x02, 0x00, 0x0d, 0x0c, 0x0b,
 44         0x07, 0x06, 0x08, 0x09, 0x0a, 0x05, 0x04, 0x03,
 45 
 46         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 47         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 48 };
 49 
 50 
 51 static const unsigned char hp690_switch[]= {
 52         0xfd, 0xff,
 53         0xdf, 0xff,
 54         0x7f, 0xff,
 55         0xff, 0xfe,
 56         0xff, 0xfd,
 57         0xff, 0xf7,
 58         0xff, 0xbf,
 59         0xff, 0x7f,
 60 };
 61 
 62 
 63 static void hp690_japanese_scan_kbd(unsigned char *s)
 64 {
 65         int i;
 66         unsigned const char *t=hp690_switch;
 67 
 68         for(i=0; i<9; i++) {
 69                 ctrl_outb(*t++, PDDR);
 70                 ctrl_outb(*t++, PEDR);
 71                 *s++=ctrl_inb(PCDR);
 72                 *s++=ctrl_inb(PFDR);
 73         }
 74 
 75         ctrl_outb(0xff, PDDR);
 76         ctrl_outb(0xff, PEDR);
 77 
 78         *s++=ctrl_inb(PGDR);
 79         *s++=ctrl_inb(PHDR);
 80 }
 81 
 82 
 83 void __init hp600_kbd_init_hw(void)
 84 {
 85         scan_kbd_init();
 86         register_scan_keyboard(hp690_japanese_scan_kbd,
 87                                hp690_japanese_table, 18);
 88         printk(KERN_INFO "HP600 matrix scan keyboard registered\n");
 89 }
 90 
 91 
 92 /****************************************************************
 93 HP Jornada 690(Japanese version) keyboard scan matrix
 94 
 95         PTC7    PTC6    PTC5    PTC4    PTC3    PTC2    PTC1    PTC0    
 96 PTD1    REC                     Escape  on/off  Han/Zen Hira    Eisu    
 97 PTD5    REC                     Z       on/off  Enter   :       /       
 98 PTD7    REC                                             Right   Down    
 99 PTE0    REC                     Windows on/off                          
100 PTE1    REC                     A       on/off  ]       [       ;       
101 PTE3    REC                     Tab     on/off  ShirtR  \       Up      
102 PTE6    REC                     Q       on/off  BS      @       P       
103 PTE7    REC                     1       on/off  ^       -       0       
104 
105 
106         PTF7    PTF6    PTF5    PTF4    PTF3    PTF2    PTF1    PTF0
107 PTD1    F5      F4      F6      F7      F8      F3      F2      F1      
108 PTD5    N       B       M       ,       .       V       C       X       
109 PTD7    Muhen   Alt                     Left                            
110 PTE0                    Henkan  _       Del     Space           Ctrl    
111 PTE1    H       G       J       K       L       F       D       S       
112 PTE3                                                    ShiftL          
113 PTE6    Y       T       U       I       O       R       E       W       
114 PTE7    6       5       7       8       9       4       3       2       
115 
116         PTG5    PTG4    PTG3    PTG0    PTH0
117 *       REC     REW     FWW     Cover   on/off
118 
119 
120                 7       6       5       4       3       2       1       0
121 C: 0xffff 0xdf  IP      IP      IP      IP      IP      IP      IP      IP
122 D: 0x6786 0x59  O       I       O       IP      I       F       O       I
123 E: 0x5045 0x00  O       O       F       F       O       F       O       O
124 F: 0xffff 0xff  IP      IP      IP      IP      IP      IP      IP      IP
125 G: 0xaffe 0xfd  I       I       IP      IP      IP      IP      IP      I
126 H: 0x70f2 0x49  O       IP      F       F       IP      IP      F       I
127 J: 0x0704 0x22  F       F       O       IP      F       F       O       F
128 K: 0x0100 0x10  F       F       F       O       F       F       F       F
129 L: 0x0c3c 0x26  F       F       IP      F       F       IP      IP      F
130 
131 ****************************************************************/
132 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.