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 */ 23static int i8042_kbd_irq; 24static int i8042_aux_irq; 25#define I8042_KBD_IRQ i8042_kbd_irq 26#define I8042_AUX_IRQ i8042_aux_irq 27 28static void __iomem *kbd_iobase; 29 30#define I8042_COMMAND_REG (kbd_iobase + 0x64UL) 31#define I8042_DATA_REG (kbd_iobase + 0x60UL) 32 33static inline int i8042_read_data(void) 34{ 35 return readb(kbd_iobase + 0x60UL); 36} 37 38static inline int i8042_read_status(void) 39{ 40 return readb(kbd_iobase + 0x64UL); 41} 42 43static inline void i8042_write_data(int val) 44{ 45 writeb(val, kbd_iobase + 0x60UL); 46} 47 48static inline void i8042_write_command(int val) 49{ 50 writeb(val, kbd_iobase + 0x64UL); 51} 52static 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 70static inline void i8042_platform_exit(void) 71{ 72 73} 74 75#endif /* _I8042_SNIRM_H */ 76