⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i8042-sparcio.h

📁 QQ2440板子
💻 H
字号:
#ifndef _I8042_SPARCIO_H#define _I8042_SPARCIO_H#include <linux/config.h>#include <asm/io.h>#ifdef CONFIG_PCI#include <asm/oplib.h>#include <asm/ebus.h>#endifstatic int i8042_kbd_irq = -1;static int i8042_aux_irq = -1;#define I8042_KBD_IRQ i8042_kbd_irq#define I8042_AUX_IRQ i8042_aux_irq#define I8042_KBD_PHYS_DESC "sparcps2/serio0"#define I8042_AUX_PHYS_DESC "sparcps2/serio1"#define I8042_MUX_PHYS_DESC "sparcps2/serio%d"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);}#define OBP_PS2KBD_NAME1	"kb_ps2"#define OBP_PS2KBD_NAME2	"keyboard"#define OBP_PS2MS_NAME1		"kdmouse"#define OBP_PS2MS_NAME2		"mouse"static int i8042_platform_init(void){#ifndef CONFIG_PCI	return -1;#else	char prop[128];	int len;	len = prom_getproperty(prom_root_node, "name", prop, sizeof(prop));	if (len < 0) {		printk("i8042: Cannot get name property of root OBP node.\n");		return -1;	}	if (strncmp(prop, "SUNW,JavaStation-1", len) == 0) {		/* Hardcoded values for MrCoffee.  */		i8042_kbd_irq = i8042_aux_irq = 13 | 0x20;		kbd_iobase = ioremap(0x71300060, 8);		if (!kbd_iobase)			return -1;	} else {		struct linux_ebus *ebus;		struct linux_ebus_device *edev;		struct linux_ebus_child *child;		for_each_ebus(ebus) {			for_each_ebusdev(edev, ebus) {				if (!strcmp(edev->prom_name, "8042"))					goto edev_found;			}		}		return -1;	edev_found:		for_each_edevchild(edev, child) {			if (!strcmp(child->prom_name, OBP_PS2KBD_NAME1) ||			    !strcmp(child->prom_name, OBP_PS2KBD_NAME2)) {				i8042_kbd_irq = child->irqs[0];				kbd_iobase =					ioremap(child->resource[0].start, 8);			}			if (!strcmp(child->prom_name, OBP_PS2MS_NAME1) ||			    !strcmp(child->prom_name, OBP_PS2MS_NAME2))				i8042_aux_irq = child->irqs[0];		}		if (i8042_kbd_irq == -1 ||		    i8042_aux_irq == -1) {			printk("i8042: Error, 8042 device lacks both kbd and "			       "mouse nodes.\n");			return -1;		}	}	i8042_reset = 1;	return 0;#endif /* CONFIG_PCI */}static inline void i8042_platform_exit(void){#ifdef CONFIG_PCI	iounmap(kbd_iobase);#endif}#endif /* _I8042_SPARCIO_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -