| #ifndef _I8042_PPCIO_H | 
 | #define _I8042_PPCIO_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. | 
 |  */ | 
 |  | 
 | #if defined(CONFIG_WALNUT) | 
 |  | 
 | #define I8042_KBD_IRQ 25 | 
 | #define I8042_AUX_IRQ 26 | 
 |  | 
 | #define I8042_KBD_PHYS_DESC "walnutps2/serio0" | 
 | #define I8042_AUX_PHYS_DESC "walnutps2/serio1" | 
 | #define I8042_MUX_PHYS_DESC "walnutps2/serio%d" | 
 |  | 
 | extern void *kb_cs; | 
 | extern void *kb_data; | 
 |  | 
 | #define I8042_COMMAND_REG (*(int *)kb_cs) | 
 | #define I8042_DATA_REG (*(int *)kb_data) | 
 |  | 
 | static inline int i8042_read_data(void) | 
 | { | 
 | 	return readb(kb_data); | 
 | } | 
 |  | 
 | static inline int i8042_read_status(void) | 
 | { | 
 | 	return readb(kb_cs); | 
 | } | 
 |  | 
 | static inline void i8042_write_data(int val) | 
 | { | 
 | 	writeb(val, kb_data); | 
 | } | 
 |  | 
 | static inline void i8042_write_command(int val) | 
 | { | 
 | 	writeb(val, kb_cs); | 
 | } | 
 |  | 
 | static inline int i8042_platform_init(void) | 
 | { | 
 | 	i8042_reset = 1; | 
 | 	return 0; | 
 | } | 
 |  | 
 | static inline void i8042_platform_exit(void) | 
 | { | 
 | } | 
 |  | 
 | #elif defined(CONFIG_SPRUCE) | 
 |  | 
 | #define I8042_KBD_IRQ 22 | 
 | #define I8042_AUX_IRQ 21 | 
 |  | 
 | #define I8042_KBD_PHYS_DESC "spruceps2/serio0" | 
 | #define I8042_AUX_PHYS_DESC "spruceps2/serio1" | 
 | #define I8042_MUX_PHYS_DESC "spruceps2/serio%d" | 
 |  | 
 | #define I8042_COMMAND_REG 0xff810000 | 
 | #define I8042_DATA_REG 0xff810001 | 
 |  | 
 | static inline int i8042_read_data(void) | 
 | { | 
 | 	unsigned long kbd_data; | 
 |  | 
 | 	__raw_writel(0x00000088, 0xff500008); | 
 | 	eieio(); | 
 |  | 
 | 	__raw_writel(0x03000000, 0xff50000c); | 
 | 	eieio(); | 
 |  | 
 | 	asm volatile("lis     7,0xff88        \n\ | 
 | 		      lswi    6,7,0x8         \n\ | 
 | 		      mr      %0,6" | 
 | 	              : "=r" (kbd_data) :: "6", "7"); | 
 |  | 
 | 	__raw_writel(0x00000000, 0xff50000c); | 
 | 	eieio(); | 
 |  | 
 | 	return (unsigned char)(kbd_data >> 24); | 
 | } | 
 |  | 
 | static inline int i8042_read_status(void) | 
 | { | 
 | 	unsigned long kbd_status; | 
 |  | 
 | 	__raw_writel(0x00000088, 0xff500008); | 
 | 	eieio(); | 
 |  | 
 | 	__raw_writel(0x03000000, 0xff50000c); | 
 | 	eieio(); | 
 |  | 
 | 	asm volatile("lis     7,0xff88        \n\ | 
 | 		      ori     7,7,0x8         \n\ | 
 | 		      lswi    6,7,0x8         \n\ | 
 | 		      mr      %0,6" | 
 | 		      : "=r" (kbd_status) :: "6", "7"); | 
 |  | 
 | 	__raw_writel(0x00000000, 0xff50000c); | 
 | 	eieio(); | 
 |  | 
 | 	return (unsigned char)(kbd_status >> 24); | 
 | } | 
 |  | 
 | static inline void i8042_write_data(int val) | 
 | { | 
 | 	*((unsigned char *)0xff810000) = (char)val; | 
 | } | 
 |  | 
 | static inline void i8042_write_command(int val) | 
 | { | 
 | 	*((unsigned char *)0xff810001) = (char)val; | 
 | } | 
 |  | 
 | static inline int i8042_platform_init(void) | 
 | { | 
 | 	i8042_reset = 1; | 
 | 	return 0; | 
 | } | 
 |  | 
 | static inline void i8042_platform_exit(void) | 
 | { | 
 | } | 
 |  | 
 | #else | 
 |  | 
 | #include "i8042-io.h" | 
 |  | 
 | #endif | 
 |  | 
 | #endif /* _I8042_PPCIO_H */ |