Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef _I8042_PPCIO_H
  2 #define _I8042_PPCIO_H
  3 
  4 /*
  5  * This program is free software; you can redistribute it and/or modify it
  6  * under the terms of the GNU General Public License version 2 as published by
  7  * the Free Software Foundation.
  8  */
  9 
 10 #if defined(CONFIG_WALNUT)
 11 
 12 #define I8042_KBD_IRQ 25
 13 #define I8042_AUX_IRQ 26
 14 
 15 #define I8042_KBD_PHYS_DESC "walnutps2/serio0"
 16 #define I8042_AUX_PHYS_DESC "walnutps2/serio1"
 17 #define I8042_MUX_PHYS_DESC "walnutps2/serio%d"
 18 
 19 extern void *kb_cs;
 20 extern void *kb_data;
 21 
 22 #define I8042_COMMAND_REG (*(int *)kb_cs)
 23 #define I8042_DATA_REG (*(int *)kb_data)
 24 
 25 static inline int i8042_read_data(void)
 26 {
 27         return readb(kb_data);
 28 }
 29 
 30 static inline int i8042_read_status(void)
 31 {
 32         return readb(kb_cs);
 33 }
 34 
 35 static inline void i8042_write_data(int val)
 36 {
 37         writeb(val, kb_data);
 38 }
 39 
 40 static inline void i8042_write_command(int val)
 41 {
 42         writeb(val, kb_cs);
 43 }
 44 
 45 static inline int i8042_platform_init(void)
 46 {
 47         i8042_reset = 1;
 48         return 0;
 49 }
 50 
 51 static inline void i8042_platform_exit(void)
 52 {
 53 }
 54 
 55 #elif defined(CONFIG_SPRUCE)
 56 
 57 #define I8042_KBD_IRQ 22
 58 #define I8042_AUX_IRQ 21
 59 
 60 #define I8042_KBD_PHYS_DESC "spruceps2/serio0"
 61 #define I8042_AUX_PHYS_DESC "spruceps2/serio1"
 62 #define I8042_MUX_PHYS_DESC "spruceps2/serio%d"
 63 
 64 #define I8042_COMMAND_REG 0xff810000
 65 #define I8042_DATA_REG 0xff810001
 66 
 67 static inline int i8042_read_data(void)
 68 {
 69         unsigned long kbd_data;
 70 
 71         __raw_writel(0x00000088, 0xff500008);
 72         eieio();
 73 
 74         __raw_writel(0x03000000, 0xff50000c);
 75         eieio();
 76 
 77         asm volatile("lis     7,0xff88        \n\
 78                       lswi    6,7,0x8         \n\
 79                       mr      %0,6"
 80                       : "=r" (kbd_data) :: "6", "7");
 81 
 82         __raw_writel(0x00000000, 0xff50000c);
 83         eieio();
 84 
 85         return (unsigned char)(kbd_data >> 24);
 86 }
 87 
 88 static inline int i8042_read_status(void)
 89 {
 90         unsigned long kbd_status;
 91 
 92         __raw_writel(0x00000088, 0xff500008);
 93         eieio();
 94 
 95         __raw_writel(0x03000000, 0xff50000c);
 96         eieio();
 97 
 98         asm volatile("lis     7,0xff88        \n\
 99                       ori     7,7,0x8         \n\
100                       lswi    6,7,0x8         \n\
101                       mr      %0,6"
102                       : "=r" (kbd_status) :: "6", "7");
103 
104         __raw_writel(0x00000000, 0xff50000c);
105         eieio();
106 
107         return (unsigned char)(kbd_status >> 24);
108 }
109 
110 static inline void i8042_write_data(int val)
111 {
112         *((unsigned char *)0xff810000) = (char)val;
113 }
114 
115 static inline void i8042_write_command(int val)
116 {
117         *((unsigned char *)0xff810001) = (char)val;
118 }
119 
120 static inline int i8042_platform_init(void)
121 {
122         i8042_reset = 1;
123         return 0;
124 }
125 
126 static inline void i8042_platform_exit(void)
127 {
128 }
129 
130 #else
131 
132 #include "i8042-io.h"
133 
134 #endif
135 
136 #endif /* _I8042_PPCIO_H */
137 
  This page was automatically generated by the LXR engine.