diff -ruP linux-2.6.5.orig/drivers/input/serio/i8042-sparcio.h linux-2.6.5/drivers/input/serio/i8042-sparcio.h --- linux-2.6.5.orig/drivers/input/serio/i8042-sparcio.h Sun Apr 4 05:38:23 2004 +++ linux-2.6.5/drivers/input/serio/i8042-sparcio.h Thu Apr 22 21:59:43 2004 @@ -9,6 +9,8 @@ #include #endif +#define JAVASTATION_HACKS + static int i8042_kbd_irq = -1; static int i8042_aux_irq = -1; #define I8042_KBD_IRQ i8042_kbd_irq @@ -20,27 +22,32 @@ static unsigned long kbd_iobase; -#define I8042_COMMAND_REG (kbd_iobase + 0x64UL) -#define I8042_DATA_REG (kbd_iobase + 0x60UL) +#ifndef JAVASTATION_HACKS + #define I8042_COMMAND_REG (kbd_iobase + 0x64UL) + #define I8042_DATA_REG (kbd_iobase + 0x60UL) +#else + #define I8042_COMMAND_REG (kbd_iobase + 0x04UL) + #define I8042_DATA_REG (kbd_iobase + 0x00UL) +#endif static inline int i8042_read_data(void) { - return readb(kbd_iobase + 0x60UL); + return readb(I8042_DATA_REG); } static inline int i8042_read_status(void) { - return readb(kbd_iobase + 0x64UL); + return readb(I8042_COMMAND_REG); } static inline void i8042_write_data(int val) { - writeb(val, kbd_iobase + 0x60UL); + writeb(val, I8042_DATA_REG); } static inline void i8042_write_command(int val) { - writeb(val, kbd_iobase + 0x64UL); + writeb(val, I8042_COMMAND_REG); } #define OBP_PS2KBD_NAME1 "kb_ps2" @@ -85,8 +92,13 @@ if (!strcmp(child->prom_name, OBP_PS2KBD_NAME1) || !strcmp(child->prom_name, OBP_PS2KBD_NAME2)) { i8042_kbd_irq = child->irqs[0]; +#ifndef JAVASTATION_HACKS kbd_iobase = (unsigned long) ioremap(child->resource[0].start, 8); +#else + kbd_iobase = (unsigned long) + child->resource[0].start; +#endif } if (!strcmp(child->prom_name, OBP_PS2MS_NAME1) || !strcmp(child->prom_name, OBP_PS2MS_NAME2))