Psion patch for linux/drivers/ additional files

This patch contains updates to the following files:
./drivers/char/console.c
./drivers/char/keyboard.c
./drivers/char/keymap_psion_de.map
./drivers/char/keymap_psion_us.map
./drivers/char/keymap_psion_fr.map
./drivers/video/fbcon.c


diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/console.c linux-2.4.19-rmk2/drivers/char/console.c
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/console.c linux-2.4.19-rmk2/drivers/char/console.c
--- /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/console.c	2002-10-02 22:05:14.000000000 -0700
+++ linux-2.4.19-rmk2/drivers/char/console.c	2002-10-02 22:07:30.000000000 -0700
@@ -2508,7 +2508,14 @@
 		vc_cons[currcons].d->vc_palette[k++] = default_grn[j] ;
 		vc_cons[currcons].d->vc_palette[k++] = default_blu[j] ;
 	}
+
+#ifdef CONFIG_ARCH_PSIONW	/* PSIONW_NONSTANDARD */
+	/* setterm -foreground 9 should do, but doesn't */
+	def_color       = 0x0f;   /* really white */
+#else
 	def_color       = 0x07;   /* white */
+#endif
+
 	ulcolor		= 0x0f;   /* bold white */
 	halfcolor       = 0x08;   /* grey */
 	init_waitqueue_head(&vt_cons[currcons]->paste_wait);
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keyboard.c linux-2.4.19-rmk2/drivers/char/keyboard.c
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keyboard.c linux-2.4.19-rmk2/drivers/char/keyboard.c
--- /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keyboard.c	2002-10-02 22:05:14.000000000 -0700
+++ linux-2.4.19-rmk2/drivers/char/keyboard.c	2002-10-02 22:07:30.000000000 -0700
@@ -120,17 +120,17 @@
 static k_handfn
 	do_self, do_fn, do_spec, do_pad, do_dead, do_cons, do_cur, do_shift,
 	do_meta, do_ascii, do_lock, do_lowercase, do_slock, do_dead2,
-	do_ignore;
+	do_ignore, do_arch; /* PSIONW_NONSTANDARD */
 
 static k_hand key_handler[16] = {
 	do_self, do_fn, do_spec, do_pad, do_dead, do_cons, do_cur, do_shift,
 	do_meta, do_ascii, do_lock, do_lowercase, do_slock, do_dead2,
-	do_ignore, do_ignore
+	do_ignore, do_arch
 };
 
 /* Key types processed even in raw modes */
 
-#define TYPES_ALLOWED_IN_RAW_MODE ((1 << KT_SPEC) | (1 << KT_SHIFT))
+#define TYPES_ALLOWED_IN_RAW_MODE ((1 << KT_SPEC) | (1 << KT_CONS) | (1 << KT_SLOCK) | (1 << KT_SHIFT) | (1 << KT_ARCH1) | (1 << KT_ARCH2) | (1 << KT_ARCH3))
 
 typedef void (*void_fnp)(void);
 typedef void (void_fn)(void);
@@ -167,7 +167,7 @@
 struct pt_regs * kbd_pt_regs;
 
 #ifdef CONFIG_MAGIC_SYSRQ
-static int sysrq_pressed;
+int sysrq_pressed;
 #endif
 
 static struct pm_dev *pm_kbd;
@@ -352,8 +352,15 @@
 
 			if (type >= 0xf0) {
 			    type -= 0xf0;
-			    if (raw_mode && ! (TYPES_ALLOWED_IN_RAW_MODE & (1 << type)))
-				goto out;
+
+#if 0
+			    printk("keysym=0x%x type=0x%x 0x%x && 0x%x\n",
+				    keysym, type, raw_mode, !(TYPES_ALLOWED_IN_RAW_MODE & (1<<type)) );
+#endif
+			    if (raw_mode && ! (TYPES_ALLOWED_IN_RAW_MODE & (1 << type))) {
+				    //printk("Raw mode or type match failed\n");
+				    goto out;
+			    }
 			    if (type == KT_LETTER) {
 				type = KT_LATIN;
 				if (vc_kbd_led(kbd, VC_CAPSLOCK)) {
@@ -363,7 +370,9 @@
 				}
 			    }
 			    (*key_handler[type])(keysym & 0xff, up_flag);
-			    if (type != KT_SLOCK)
+
+			    /* We don't support sticky keys in raw mode */
+			    if (type != KT_SLOCK  || raw_mode)
 			      kbd->slockstate = 0;
 			} else {
 			    /* maybe only if (kbd->kbdmode == VC_UNICODE) ? */
@@ -608,6 +617,13 @@
 	compute_shiftstate();
 }
 
+static void do_arch(unsigned char value, char up_flag)
+{
+#ifdef kbd_arch_handler
+	kbd_arch_handler(value,up_flag);
+#endif
+}
+
 static void do_spec(unsigned char value, char up_flag)
 {
 	if (up_flag)
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_de.map linux-2.4.19-rmk2/drivers/char/keymap_psion_de.map
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_de.map linux-2.4.19-rmk2/drivers/char/keymap_psion_de.map
--- /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_de.map	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.19-rmk2/drivers/char/keymap_psion_de.map	2002-10-02 22:07:30.000000000 -0700
@@ -0,0 +1,321 @@
+# arch/arm/drivers/char/keymap_psion_de.map 
+#
+# Written 1999 by Ian E. Morgan
+#
+# largely based on keymap_psion.map by Werner Almesberger
+# for UK keyboard layout
+#
+# based on keymap_geo.map, string and compose def's taken from
+# drivers/char/defkeymap.map
+#
+# Special keys:
+# F13	REC		F14	STOP		F15	PLAY
+# F16	Contrast--	F17	Contrast++	F18	Backlight
+
+
+# IEM: This is the mapping of US keyboard to keycodes:
+#
+# esc 1 2 3 4 5 6 7  8  9  0  del
+# 23  6 5 4 3 2 1 14 13 12 11 10
+#
+# q  w  e  r  t  y  u  i  o  p  enter
+# 22 21 20 19 18 17 30 29 28 27 25
+#
+# tab a  s  d  f  g  h  j  k  l  :
+# 38  37 36 35 34 33 46 45 44 26 9
+#
+# shift z  x  c  v  b  n  m  .  up shift
+# 55    54 53 52 51 50 49 43 42 60 63
+#
+# ctrl fn menu space ,  left down right
+# 39   47 31   61    59 58   41   47
+
+
+# Default kernel keymap. This uses 7 modifier combinations.
+keymaps 0-2,4-5,8,12
+
+	keycode	  1 = six		ampersand
+alt	keycode	  1 = Console_6
+altgr	keycode	  1 = greater
+
+	keycode	  2 = five		percent
+alt	keycode	  2 = Console_5
+altgr	keycode	  2 = less
+
+	keycode	  3 = four		dollar
+alt	keycode	  3 = Console_4
+altgr	keycode	  3 = asciitilde
+
+	keycode	  4 = three		section
+alt	keycode	  4 = Console_3
+altgr	keycode	  4 = backslash
+control	keycode	  4 = Control_backslash
+
+	keycode	  5 = two		quotedbl
+alt	keycode	  5 = Console_2
+altgr	keycode	  5 = slash
+
+	keycode	  6 = one		exclam
+alt	keycode	  6 = Console_1
+altgr	keycode	  6 = underscore
+control	keycode	  6 = Control_underscore
+
+	keycode   7 = F13				# REC
+
+	keycode   8 = VoidSymbol
+
+	keycode	  9 = numbersign	asterisk
+altgr	keycode	  9 = equal
+
+	keycode	 10 = Delete
+alt	keycode	 10 = Remove
+altgr	keycode  10 = grave
+control alt keycode 10 = Boot
+
+	keycode	 11 = zero		apostrophe
+alt	keycode	 11 = Console_10
+altgr	keycode  11 = braceright
+
+	keycode  12 = nine		parenright
+alt	keycode	 12 = Console_9
+altgr	keycode  12 = braceleft
+
+	keycode  13 = eight		parenleft
+alt	keycode	 13 = Console_8
+altgr	keycode  13 = bracketright
+control	keycode  13 = Control_bracketright
+
+	keycode  14 = seven		question
+alt	keycode	 14 = Console_7
+altgr	keycode  14 = bracketleft
+control	keycode  14 = Escape
+
+	keycode	 15 = F15				# PLAY
+
+	keycode  16 = VoidSymbol
+
+	keycode	 17 = z
+
+	keycode	 18 = t
+altgr	keycode	 18 = bar
+
+	keycode	 19 = r
+altgr	keycode	 19 = masculine
+
+	keycode	 20 = e
+altgr	keycode	 20 = currency
+
+	keycode	 21 = w
+altgr	keycode	 21 = asciicircum 
+
+	keycode	 22 = q
+altgr	keycode	 22 = at 
+
+	keycode	 23 = Escape		Escape
+alt	keycode	 23 = Meta_Escape
+altgr	keycode  23 = 0xf02				# OFF
+
+	keycode  24 = VoidSymbol
+
+	keycode	 25 = Return
+
+	keycode  26 = l
+altgr	keycode	 26 = minus 
+
+	keycode  27 = p
+altgr	keycode  27 = ssharp
+
+	keycode  28 = o
+altgr	keycode  28 = odiaeresis
+
+	keycode  29 = i
+altgr	keycode  29 = mu
+
+	keycode  30 = u
+altgr	keycode  30 = udiaeresis 
+
+	keycode	 31 = SAlt				# Menu
+
+	keycode  32 = VoidSymbol
+
+	keycode	 33 = g
+
+	keycode	 34 = f
+
+	keycode	 35 = d
+
+	keycode	 36 = s
+
+	keycode	 37 = a
+altgr	keycode  37 = adiaeresis 
+
+	keycode	 38 = Tab
+altgr	keycode	 38 = Caps_Lock
+
+	keycode	 39 = SControl
+
+	keycode  40 = VoidSymbol
+
+	keycode  41 = Down		Scroll_Backward
+altgr	keycode	 41 = Next
+
+	keycode	 42 = comma		semicolon
+altgr	keycode  42 = 0xf05				# Contrast++
+
+	keycode	 43 = m
+altgr	keycode	 43 = 0xf04				# Contrast--
+
+	keycode	 44 = k
+altgr	keycode	 44 = plus
+
+	keycode	 45 = j
+altgr	keycode	 45 = division 
+
+	keycode	 46 = h
+altgr	keycode	 46 = multiply 
+
+	keycode	 47 = SAltGr				# Fn
+
+	keycode  48 = VoidSymbol
+
+	keycode	 49 = n
+control alt keycode 49 = 0xf0b				# Debug 5
+
+	keycode	 50 = b
+altgr	keycode	 50 = dead_caron 
+control alt keycode 50 = 0xf0a				# Debug 4
+
+	keycode	 51 = v
+altgr	keycode	 51 = dead_breve 
+control alt keycode 51 = 0xf09				# Debug 3
+
+	keycode	 52 = c
+altgr	keycode	 52 = acute 
+control alt keycode 52 = 0xf08				# Debug 2
+
+	keycode	 53 = x
+altgr	keycode	 53 = grave 
+control alt keycode 53 = 0xf07				# Debug 1
+
+	keycode	 54 = y
+altgr	keycode	 54 = diaeresis 
+control alt keycode 54 = 0xf06				# Debug 0
+
+	keycode	 55 = SShift
+
+	keycode  56 = VoidSymbol
+
+	keycode	 57 = Right
+altgr	keycode  57 = Select				# End
+
+	keycode  58 = Left
+altgr	keycode  58 = Find				# Home
+
+	keycode  59 = period		colon
+control alt keycode 59 = 0xf01				# SysRq
+
+	keycode  60 = Up		Scroll_Forward
+altgr	keycode  60 = Prior
+
+	keycode	 61 = space
+altgr	keycode  61 = 0xf03				# Backlight
+
+	keycode  62 = F14				# STOP
+	keycode  63 = SShift
+
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
+string Macro = "\033[M"
+string Pause = "\033[P"
+compose '`' 'A' to 'À'
+compose '`' 'a' to 'à'
+compose '\'' 'A' to 'Á'
+compose '\'' 'a' to 'á'
+compose '^' 'A' to 'Â'
+compose '^' 'a' to 'â'
+compose '~' 'A' to 'Ã'
+compose '~' 'a' to 'ã'
+compose '"' 'A' to 'Ä'
+compose '"' 'a' to 'ä'
+compose 'O' 'A' to 'Å'
+compose 'o' 'a' to 'å'
+compose '0' 'A' to 'Å'
+compose '0' 'a' to 'å'
+compose 'A' 'A' to 'Å'
+compose 'a' 'a' to 'å'
+compose 'A' 'E' to 'Æ'
+compose 'a' 'e' to 'æ'
+compose ',' 'C' to 'Ç'
+compose ',' 'c' to 'ç'
+compose '`' 'E' to 'È'
+compose '`' 'e' to 'è'
+compose '\'' 'E' to 'É'
+compose '\'' 'e' to 'é'
+compose '^' 'E' to 'Ê'
+compose '^' 'e' to 'ê'
+compose '"' 'E' to 'Ë'
+compose '"' 'e' to 'ë'
+compose '`' 'I' to 'Ì'
+compose '`' 'i' to 'ì'
+compose '\'' 'I' to 'Í'
+compose '\'' 'i' to 'í'
+compose '^' 'I' to 'Î'
+compose '^' 'i' to 'î'
+compose '"' 'I' to 'Ï'
+compose '"' 'i' to 'ï'
+compose '-' 'D' to 'Ð'
+compose '-' 'd' to 'ð'
+compose '~' 'N' to 'Ñ'
+compose '~' 'n' to 'ñ'
+compose '`' 'O' to 'Ò'
+compose '`' 'o' to 'ò'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'o' to 'ó'
+compose '^' 'O' to 'Ô'
+compose '^' 'o' to 'ô'
+compose '~' 'O' to 'Õ'
+compose '~' 'o' to 'õ'
+compose '"' 'O' to 'Ö'
+compose '"' 'o' to 'ö'
+compose '/' 'O' to 'Ø'
+compose '/' 'o' to 'ø'
+compose '`' 'U' to 'Ù'
+compose '`' 'u' to 'ù'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'u' to 'ú'
+compose '^' 'U' to 'Û'
+compose '^' 'u' to 'û'
+compose '"' 'U' to 'Ü'
+compose '"' 'u' to 'ü'
+compose '\'' 'Y' to 'Ý'
+compose '\'' 'y' to 'ý'
+compose 'T' 'H' to 'Þ'
+compose 't' 'h' to 'þ'
+compose 's' 's' to 'ß'
+compose '"' 'y' to 'ÿ'
+compose 's' 'z' to 'ß'
+compose 'i' 'j' to 'ÿ'
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_us.map linux-2.4.19-rmk2/drivers/char/keymap_psion_us.map
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_us.map linux-2.4.19-rmk2/drivers/char/keymap_psion_us.map
--- /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_us.map	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.19-rmk2/drivers/char/keymap_psion_us.map	2002-10-02 22:07:30.000000000 -0700
@@ -0,0 +1,311 @@
+# arch/arm/drivers/char/keymap_psion_us.map 
+#
+# Written 1999 by Ian E. Morgan
+#
+# largely based on keymap_psion.map by Werner Almesberger
+# for UK keyboard layout
+#
+# based on keymap_geo.map, string and compose def's taken from
+# drivers/char/defkeymap.map
+#
+# Special keys:
+# F13	REC		F14	STOP		F15	PLAY
+# F16	Contrast--	F17	Contrast++	F18	Backlight
+
+
+# IEM: This is the mapping of US keyboard to keycodes:
+#
+# esc 1 2 3 4 5 6 7  8  9  0  del
+# 23  6 5 4 3 2 1 14 13 12 11 10
+#
+# q  w  e  r  t  y  u  i  o  p  enter
+# 22 21 20 19 18 17 30 29 28 27 25
+#
+# tab a  s  d  f  g  h  j  k  l  :
+# 38  37 36 35 34 33 46 45 44 26 9
+#
+# shift z  x  c  v  b  n  m  .  up shift
+# 63    54 53 52 51 50 49 43 42 60 55
+#
+# ctrl fn menu space ,  left down right
+# 39   47 31   61    59 58   41   47
+
+
+# Default kernel keymap. This uses 7 modifier combinations.
+keymaps 0-2,4-5,8,12
+
+	keycode	  1 = six		asciicircum
+alt	keycode	  1 = Console_6
+altgr	keycode	  1 = greater
+control	keycode	  1 = Control_asciicircum
+
+	keycode	  2 = five		percent
+alt	keycode	  2 = Console_5
+altgr	keycode	  2 = less
+
+	keycode	  3 = four		dollar
+alt	keycode	  3 = Console_4
+altgr	keycode	  3 = slash
+
+	keycode	  4 = three		numbersign
+alt	keycode	  4 = Console_3
+altgr	keycode	  4 = backslash
+control	keycode	  4 = Control_backslash
+
+	keycode	  5 = two		at
+alt	keycode	  5 = Console_2
+altgr	keycode	  5 = asciitilde
+
+	keycode	  6 = one		exclam
+alt	keycode	  6 = Console_1
+altgr	keycode	  6 = underscore
+control	keycode	  6 = Control_underscore
+
+	keycode   7 = F13				# REC
+
+	keycode   8 = VoidSymbol
+
+	keycode	  9 = colon	quotedbl
+altgr	keycode	  9 = semicolon
+
+	keycode	 10 = Delete
+alt	keycode	 10 = Remove
+altgr	keycode  10 = grave
+control alt keycode 10 = Boot
+
+	keycode	 11 = zero		parenright
+alt	keycode	 11 = Console_10
+altgr	keycode  11 = braceright
+
+	keycode  12 = nine		parenleft
+alt	keycode	 12 = Console_9
+altgr	keycode  12 = braceleft
+
+	keycode  13 = eight		asterisk
+alt	keycode	 13 = Console_8
+altgr	keycode  13 = bracketright
+control	keycode  13 = Control_bracketright
+
+	keycode  14 = seven		ampersand
+alt	keycode	 14 = Console_7
+altgr	keycode  14 = bracketleft
+control	keycode  14 = Escape
+
+	keycode	 15 = F15				# PLAY
+
+	keycode  16 = VoidSymbol
+
+	keycode	 17 = y
+altgr	keycode  17 = KP_Multiply
+
+	keycode	 18 = t
+altgr	keycode	 18 = bar
+
+	keycode	 19 = r
+
+	keycode	 20 = e
+
+	keycode	 21 = w
+
+	keycode	 22 = q
+
+	keycode	 23 = Escape		Escape
+alt	keycode	 23 = Meta_Escape
+altgr	keycode  23 = 0xf02				# OFF
+
+	keycode  24 = VoidSymbol
+
+	keycode	 25 = Return
+
+	keycode  26 = l
+
+	keycode  27 = p
+altgr	keycode  27 = equal
+
+	keycode  28 = o
+altgr	keycode  28 = minus
+
+	keycode  29 = i
+altgr	keycode  29 = plus
+
+	keycode  30 = u
+altgr	keycode  30 = KP_Divide
+
+	keycode	 31 = SAlt				# Menu
+
+	keycode  32 = VoidSymbol
+
+	keycode	 33 = g
+
+	keycode	 34 = f
+
+	keycode	 35 = d
+
+	keycode	 36 = s
+
+	keycode	 37 = a
+
+	keycode	 38 = Tab
+altgr	keycode	 38 = Caps_Lock
+
+	keycode	 39 = SControl
+
+	keycode  40 = VoidSymbol
+
+	keycode  41 = Down		Scroll_Backward
+altgr	keycode	 41 = Next
+
+	keycode	 42 = period		apostrophe
+altgr	keycode  42 = 0xf05				# Contrast++
+
+	keycode	 43 = m
+altgr	keycode	 43 = 0xf04				# Contrast--
+
+	keycode	 44 = k
+
+	keycode	 45 = j
+
+	keycode	 46 = h
+
+	keycode	 47 = SAltGr				# Fn
+
+	keycode  48 = VoidSymbol
+
+	keycode	 49 = n
+control alt keycode 49 = 0xf0b				# Debug 5
+
+	keycode	 50 = b
+control alt keycode 50 = 0xf0a				# Debug 4
+
+	keycode	 51 = v
+control alt keycode 51 = 0xf09				# Debug 3, ARCHKEY_9
+
+	keycode	 52 = c
+control alt keycode 52 = 0xf08				# Debug 2, ARCHKEY_8
+
+	keycode	 53 = x
+control alt keycode 53 = 0xf07				# Debug 1, ARCHKEY_7
+
+	keycode	 54 = z
+control alt keycode 54 = 0xf06				# Debug 0, ARCHKEY_6
+
+	keycode	 55 = SShift
+altgr	keycode  55 = slash
+
+	keycode  56 = VoidSymbol
+
+	keycode	 57 = Right
+altgr	keycode  57 = Select				# End
+
+	keycode  58 = Left
+altgr	keycode  58 = Find				# Home
+
+	keycode  59 = comma		question
+control alt keycode 59 = 0xf01				# SysRq
+
+	keycode  60 = Up		Scroll_Forward
+altgr	keycode  60 = Prior
+
+	keycode	 61 = space
+altgr	keycode  61 = 0xf03				# Backlight
+
+	keycode  62 = F14				# STOP
+
+	keycode  63 = SShift
+
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
+string Macro = "\033[M"
+string Pause = "\033[P"
+compose '`' 'A' to 'À'
+compose '`' 'a' to 'à'
+compose '\'' 'A' to 'Á'
+compose '\'' 'a' to 'á'
+compose '^' 'A' to 'Â'
+compose '^' 'a' to 'â'
+compose '~' 'A' to 'Ã'
+compose '~' 'a' to 'ã'
+compose '"' 'A' to 'Ä'
+compose '"' 'a' to 'ä'
+compose 'O' 'A' to 'Å'
+compose 'o' 'a' to 'å'
+compose '0' 'A' to 'Å'
+compose '0' 'a' to 'å'
+compose 'A' 'A' to 'Å'
+compose 'a' 'a' to 'å'
+compose 'A' 'E' to 'Æ'
+compose 'a' 'e' to 'æ'
+compose ',' 'C' to 'Ç'
+compose ',' 'c' to 'ç'
+compose '`' 'E' to 'È'
+compose '`' 'e' to 'è'
+compose '\'' 'E' to 'É'
+compose '\'' 'e' to 'é'
+compose '^' 'E' to 'Ê'
+compose '^' 'e' to 'ê'
+compose '"' 'E' to 'Ë'
+compose '"' 'e' to 'ë'
+compose '`' 'I' to 'Ì'
+compose '`' 'i' to 'ì'
+compose '\'' 'I' to 'Í'
+compose '\'' 'i' to 'í'
+compose '^' 'I' to 'Î'
+compose '^' 'i' to 'î'
+compose '"' 'I' to 'Ï'
+compose '"' 'i' to 'ï'
+compose '-' 'D' to 'Ð'
+compose '-' 'd' to 'ð'
+compose '~' 'N' to 'Ñ'
+compose '~' 'n' to 'ñ'
+compose '`' 'O' to 'Ò'
+compose '`' 'o' to 'ò'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'o' to 'ó'
+compose '^' 'O' to 'Ô'
+compose '^' 'o' to 'ô'
+compose '~' 'O' to 'Õ'
+compose '~' 'o' to 'õ'
+compose '"' 'O' to 'Ö'
+compose '"' 'o' to 'ö'
+compose '/' 'O' to 'Ø'
+compose '/' 'o' to 'ø'
+compose '`' 'U' to 'Ù'
+compose '`' 'u' to 'ù'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'u' to 'ú'
+compose '^' 'U' to 'Û'
+compose '^' 'u' to 'û'
+compose '"' 'U' to 'Ü'
+compose '"' 'u' to 'ü'
+compose '\'' 'Y' to 'Ý'
+compose '\'' 'y' to 'ý'
+compose 'T' 'H' to 'Þ'
+compose 't' 'h' to 'þ'
+compose 's' 's' to 'ß'
+compose '"' 'y' to 'ÿ'
+compose 's' 'z' to 'ß'
+compose 'i' 'j' to 'ÿ'
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_fr.map linux-2.4.19-rmk2/drivers/char/keymap_psion_fr.map
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_fr.map linux-2.4.19-rmk2/drivers/char/keymap_psion_fr.map
--- /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/char/keymap_psion_fr.map	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.4.19-rmk2/drivers/char/keymap_psion_fr.map	2002-10-06 15:03:48.000000000 -0700
@@ -0,0 +1,274 @@
+keymaps 0-2,4-5,8,12
+    
+	keycode   1 = parenright        six      dollar          Control_bracketright
+alt	keycode   1 = Console_6       
+
+	keycode   2 = parenleft        five      degree            
+alt	keycode   2 = Console_5       
+
+	keycode   3 = apostrophe        four      dead_tilde
+alt 	keycode   3 = Console_4       
+
+	keycode   4 = quotedbl          three     numbersign    Escape
+alt	keycode   4 = Console_3       
+
+	keycode   5 = eacute            two       percent      
+alt	keycode   5 = Console_2       
+
+	keycode   6 = ampersand         one       exclam      
+alt	keycode   6 = Console_1       
+
+	keycode   7 = F13             
+
+	keycode   8 = VoidSymbol
+
+	keycode   9 = m                  
+AltGr	keycode   9 = minus
+
+	keycode  10 = Delete          
+alt	keycode  10 = Remove          
+control	alt keycode  10 = Boot            
+
+	keycode  11 = agrave             zero       at      
+alt	keycode  11 = Console_10      
+
+	keycode  12 = ccedilla nine  dead_circumflex
+alt	keycode  12 = Console_9       
+
+	keycode  13 = underscore eight   backslash  Control_backslash
+alt	keycode  13 = Console_8       
+
+	keycode  14 = eacute  seven sterling     
+alt	keycode  14 = Console_7       
+
+	keycode  15 = F15             
+
+	keycode  16 = VoidSymbol
+
+	keycode  17 = y 
+AltGr   keycode  17 = braceright
+
+	keycode  18 = t 
+AltGr   keycode  18 = braceleft 
+
+	keycode  19 = r  
+AltGr   keycode  19 = bracketright
+
+	keycode  20 = e 
+AltGr   keycode  20 = bracketleft
+
+	keycode  21 = z  
+AltGr   keycode  21 = greater
+
+	keycode  22 = a
+altgr	keycode  22 = less
+
+	keycode  23 = Escape           Escape          
+alt	keycode  23 = Meta_Escape     
+altgr	keycode  23 = 0xf02				# OFF
+
+	keycode  24 = VoidSymbol
+
+	keycode  25 = Return          
+
+	keycode  26 = l  
+altgr	keycode  26 = plus
+
+	keycode  27 = p
+altgr	keycode  27 = equal 
+
+	keycode  28 = o
+altgr	keycode  28  = KP_Multiply
+
+	keycode  29 = i
+altgr	keycode  29 = bar   
+
+	keycode  30 = u 
+altgr	keycode  30 = ugrave
+
+	keycode  31 = SAlt				# Menu          
+
+	keycode  32 = VoidSymbol
+
+	keycode  33 = g               
+
+	keycode  34 = f               
+
+	keycode  35 = d               
+
+	keycode  36 = s               
+
+	keycode  37 = q               
+
+	keycode  38 = Tab             
+altgr	keycode  38 = Caps_Lock       
+
+	keycode  39 = SControl          
+
+	keycode  40 = VoidSymbol
+
+	keycode  41 = Down             Scroll_Backward  
+AltGr   keycode  41 = Next            
+
+	keycode  42 = semicolon  period    
+AltGr   keycode  42 = slash   
+
+	keycode  43 = comma question 
+AltGr   keycode  43 = KP_Multiply              
+
+	keycode  44 = k             
+AltGr   keycode  44 = KP_Divide
+
+	keycode  45 = j
+altgr	keycode  45 = 0xf05				# Contrast++
+
+	keycode  46 = h               
+altgr	keycode	 46 = 0xf04				# Contrast--
+
+	keycode  47 = SAltGr				# Fn
+
+	keycode  48 = VoidSymbol
+
+	keycode  49 = n               
+control alt keycode 49 = 0xf0b				# Debug 5
+
+	keycode  50 = b               
+AltGr   keycode  50 = dead_circumflex
+control alt keycode 50 = 0xf0a				# Debug 4
+
+	keycode  51 = v               
+AltGr   keycode  51 = dead_tilde
+control alt keycode 51 = 0xf09				# Debug 3, ARCHKEY_9
+
+	keycode  52 = c               
+AltGr   keycode  52 = apostrophe
+control alt keycode 52 = 0xf08				# Debug 2, ARCHKEY_8
+
+	keycode  53 = x               
+AltGr   keycode  53 = grave
+control alt keycode 53 = 0xf07				# Debug 1, ARCHKEY_7
+
+	keycode  54 = w 
+AltGr   keycode  54 = dead_diaeresis
+control alt keycode 54 = 0xf06				# Debug 0, ARCHKEY_6
+
+	keycode  55 = SShift          
+altgr	keycode  55 = slash           
+
+	keycode  56 = VoidSymbol
+
+	keycode  57 = Right           
+altgr	keycode  57 = Select          
+
+	keycode  58 = Left            
+altgr	keycode  58 = Find            
+
+	keycode  59 = colon      mu   
+control alt keycode 59 = 0xf01				# SysRq
+
+	keycode  60 = Up               Scroll_Forward   
+altgr	keycode  60 = Prior           
+
+	keycode  61 = space           
+altgr	keycode  61 = 0xf03				# Backlight
+
+	keycode  62 = F14             
+	keycode  63 = SShift         
+
+
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
+string Macro = "\033[M"
+string Pause = "\033[P"
+compose '`' 'A' to 'À'
+compose '`' 'a' to 'à'
+compose '\'' 'A' to 'Á'
+compose '\'' 'a' to 'á'
+compose '^' 'A' to 'Â'
+compose '^' 'a' to 'â'
+compose '~' 'A' to 'Ã'
+compose '~' 'a' to 'ã'
+compose '"' 'A' to 'Ä'
+compose '"' 'a' to 'ä'
+compose 'O' 'A' to 'Å'
+compose 'o' 'a' to 'å'
+compose '0' 'A' to 'Å'
+compose '0' 'a' to 'å'
+compose 'A' 'A' to 'Å'
+compose 'a' 'a' to 'å'
+compose 'A' 'E' to 'Æ'
+compose 'a' 'e' to 'æ'
+compose ',' 'C' to 'Ç'
+compose ',' 'c' to 'ç'
+compose '`' 'E' to 'È'
+compose '`' 'e' to 'è'
+compose '\'' 'E' to 'É'
+compose '\'' 'e' to 'é'
+compose '^' 'E' to 'Ê'
+compose '^' 'e' to 'ê'
+compose '"' 'E' to 'Ë'
+compose '"' 'e' to 'ë'
+compose '`' 'I' to 'Ì'
+compose '`' 'i' to 'ì'
+compose '\'' 'I' to 'Í'
+compose '\'' 'i' to 'í'
+compose '^' 'I' to 'Î'
+compose '^' 'i' to 'î'
+compose '"' 'I' to 'Ï'
+compose '"' 'i' to 'ï'
+compose '-' 'D' to 'Ð'
+compose '-' 'd' to 'ð'
+compose '~' 'N' to 'Ñ'
+compose '~' 'n' to 'ñ'
+compose '`' 'O' to 'Ò'
+compose '`' 'o' to 'ò'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'o' to 'ó'
+compose '^' 'O' to 'Ô'
+compose '^' 'o' to 'ô'
+compose '~' 'O' to 'Õ'
+compose '~' 'o' to 'õ'
+compose '"' 'O' to 'Ö'
+compose '"' 'o' to 'ö'
+compose '/' 'O' to 'Ø'
+compose '/' 'o' to 'ø'
+compose '`' 'U' to 'Ù'
+compose '`' 'u' to 'ù'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'u' to 'ú'
+compose '^' 'U' to 'Û'
+compose '^' 'u' to 'û'
+compose '"' 'U' to 'Ü'
+compose '"' 'u' to 'ü'
+compose '\'' 'Y' to 'Ý'
+compose '\'' 'y' to 'ý'
+compose 'T' 'H' to 'Þ'
+compose 't' 'h' to 'þ'
+compose 's' 's' to 'ß'
+compose '"' 'y' to 'ÿ'
+compose 's' 'z' to 'ß'
+compose 'i' 'j' to 'ÿ'
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/video/fbcon.c linux-2.4.19-rmk2/drivers/video/fbcon.c
diff -urN -X /home/arm/dontdiff_tml_arm /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/video/fbcon.c linux-2.4.19-rmk2/drivers/video/fbcon.c
--- /home/download/kernels/linux-2.4.19-rmk2-vanilla/drivers/video/fbcon.c	2002-10-02 22:05:15.000000000 -0700
+++ linux-2.4.19-rmk2/drivers/video/fbcon.c	2002-10-02 22:07:30.000000000 -0700
@@ -2344,6 +2344,56 @@
 	    done = 1;
 	}
 #endif
+#if defined(CONFIG_FBCON_CFB2)
+	if (depth == 2 && p->type == FB_TYPE_PACKED_PIXELS) {
+	    /* 
+	     * Depth 2, created for Psion 5mx, not very efficient
+	     * not tested on other platforms
+	     */
+	    u8 arrv, bit1, bit2, outv, prev, scnd;
+	    arrv = 0;
+	    outv = 0;
+	    scnd = 0;
+	    src = logo;
+	    for( y1 = 0; y1 < LOGO_H; y1++ ) {
+		dst = fb + y1*line + x/8;
+		for( x1 = 0; x1 < LOGO_W/2; x1++ ) {
+			arrv = *src++;
+			bit1 = (arrv / 16);
+			bit2 = arrv & 0xf;
+			/* Add 2 to make rounding work */
+			bit1 = (bit1 + 2) / 4;
+#ifndef __LITTLE_ENDIAN
+			bit1 = (bit1 << 2);
+#endif
+			/* Add 2 to  make rounding work */
+			bit2 = (bit2 + 2) / 4;
+#ifdef __LITTLE_ENDIAN
+			bit2 = (bit2 << 2);
+#endif
+			outv = bit1 | bit2;
+			/* We write out only every second time */
+			if (scnd >= 1) {
+#ifdef __LITTLE_ENDIAN
+				outv = (outv * 16);
+#endif
+				outv = prev + outv;
+				/* Write out previous and current value */
+				fb_writeb (outv, dst++);
+				prev = 0;
+				scnd = 0;
+			} else {
+				prev = outv;
+#ifndef __LITTLE_ENDIAN
+				prev = (prev * 16);
+#endif
+				scnd++;
+			}
+		}
+	    }
+	    done = 1;
+	}
+#endif
 #if defined(CONFIG_FBCON_AFB) || defined(CONFIG_FBCON_ILBM) || \
     defined(CONFIG_FBCON_IPLAN2P2) || defined(CONFIG_FBCON_IPLAN2P4) || \
     defined(CONFIG_FBCON_IPLAN2P8)
