| #ifndef _I8042_SNIRM_H |
| #define _I8042_SNIRM_H |
| |
| #include <asm/sni.h> |
| |
| /* |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 as published by |
| * the Free Software Foundation. |
| */ |
| |
| /* |
| * Names. |
| */ |
| |
| #define I8042_KBD_PHYS_DESC "onboard/serio0" |
| #define I8042_AUX_PHYS_DESC "onboard/serio1" |
| #define I8042_MUX_PHYS_DESC "onboard/serio%d" |
| |
| /* |
| * IRQs. |
| */ |
| static int i8042_kbd_irq; |
| static int i8042_aux_irq; |
| #define I8042_KBD_IRQ i8042_kbd_irq |
| #define I8042_AUX_IRQ i8042_aux_irq |
| |
| static void __iomem *kbd_iobase; |
| |
| #define I8042_COMMAND_REG (kbd_iobase + 0x64UL) |
| #define I8042_DATA_REG (kbd_iobase + 0x60UL) |
| |
| static inline int i8042_read_data(void) |
| { |
| return readb(kbd_iobase + 0x60UL); |
| } |
| |
| static inline int i8042_read_status(void) |
| { |
| return readb(kbd_iobase + 0x64UL); |
| } |
| |
| static inline void i8042_write_data(int val) |
| { |
| writeb(val, kbd_iobase + 0x60UL); |
| } |
| |
| static inline void i8042_write_command(int val) |
| { |
| writeb(val, kbd_iobase + 0x64UL); |
| } |
| static inline int i8042_platform_init(void) |
| { |
| /* RM200 is strange ... */ |
| if (sni_brd_type == SNI_BRD_RM200) { |
| kbd_iobase = ioremap(0x16000000, 4); |
| i8042_kbd_irq = 33; |
| i8042_aux_irq = 44; |
| } else { |
| kbd_iobase = ioremap(0x14000000, 4); |
| i8042_kbd_irq = 1; |
| i8042_aux_irq = 12; |
| } |
| if (!kbd_iobase) |
| return -ENOMEM; |
| |
| return 0; |
| } |
| |
| static inline void i8042_platform_exit(void) |
| { |
| |
| } |
| |
| #endif /* _I8042_SNIRM_H */ |