1 #ifndef _I8042_SNIRM_H 2 #define _I8042_SNIRM_H 3 4 #include <asm/sni.h> 5 6 /* 7 * This program is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License version 2 as published by 9 * the Free Software Foundation. 10 */ 11 12 /* 13 * Names. 14 */ 15 16 #define I8042_KBD_PHYS_DESC "onboard/serio0" 17 #define I8042_AUX_PHYS_DESC "onboard/serio1" 18 #define I8042_MUX_PHYS_DESC "onboard/serio%d" 19 20 /* 21 * IRQs. 22 */ 23 static int i8042_kbd_irq; 24 static int i8042_aux_irq; 25 #define I8042_KBD_IRQ i8042_kbd_irq 26 #define I8042_AUX_IRQ i8042_aux_irq 27 28 static void __iomem *kbd_iobase; 29 30 #define I8042_COMMAND_REG (kbd_iobase + 0x64UL) 31 #define I8042_DATA_REG (kbd_iobase + 0x60UL) 32 33 static inline int i8042_read_data(void) 34 { 35 return readb(kbd_iobase + 0x60UL); 36 } 37 38 static inline int i8042_read_status(void) 39 { 40 return readb(kbd_iobase + 0x64UL); 41 } 42 43 static inline void i8042_write_data(int val) 44 { 45 writeb(val, kbd_iobase + 0x60UL); 46 } 47 48 static inline void i8042_write_command(int val) 49 { 50 writeb(val, kbd_iobase + 0x64UL); 51 } 52 static inline int i8042_platform_init(void) 53 { 54 /* RM200 is strange ... */ 55 if (sni_brd_type == SNI_BRD_RM200) { 56 kbd_iobase = ioremap(0x16000000, 4); 57 i8042_kbd_irq = 33; 58 i8042_aux_irq = 44; 59 } else { 60 kbd_iobase = ioremap(0x14000000, 4); 61 i8042_kbd_irq = 1; 62 i8042_aux_irq = 12; 63 } 64 if (!kbd_iobase) 65 return -ENOMEM; 66 67 return 0; 68 } 69 70 static inline void i8042_platform_exit(void) 71 { 72 73 } 74 75 #endif /* _I8042_SNIRM_H */ 76