serio.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _SERIO_H
  2. #define _SERIO_H
  3. /*
  4.  * $Id: serio.h,v 1.11 2001/05/29 02:58:50 jsimmons Exp $
  5.  *
  6.  * Copyright (C) 1999 Vojtech Pavlik
  7.  *
  8.  * Sponsored by SuSE
  9.  */
  10. /*
  11.  * This program is free software; you can redistribute it and/or modify
  12.  * it under the terms of the GNU General Public License as published by
  13.  * the Free Software Foundation; either version 2 of the License, or 
  14.  * (at your option) any later version.
  15.  * 
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  * 
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  24.  * 
  25.  * Should you need to contact me, the author, you can do so either by
  26.  * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
  27.  * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
  28.  */
  29. /*
  30.  * The serial port set type ioctl.
  31.  */
  32. #include <linux/ioctl.h>
  33. #define SPIOCSTYPE _IOW('q', 0x01, unsigned long)
  34. struct serio;
  35. struct serio {
  36. void *private;
  37. void *driver;
  38. unsigned long type;
  39. int number;
  40. int (*write)(struct serio *, unsigned char);
  41. int (*open)(struct serio *);
  42. void (*close)(struct serio *);
  43. struct serio_dev *dev;
  44. struct serio *next;
  45. };
  46. struct serio_dev {
  47. void *private;
  48. void (*interrupt)(struct serio *, unsigned char, unsigned int);
  49. void (*connect)(struct serio *, struct serio_dev *dev);
  50. void (*disconnect)(struct serio *);
  51. struct serio_dev *next;
  52. };
  53. int serio_open(struct serio *serio, struct serio_dev *dev);
  54. void serio_close(struct serio *serio);
  55. void serio_rescan(struct serio *serio);
  56. void serio_register_port(struct serio *serio);
  57. void serio_unregister_port(struct serio *serio);
  58. void serio_register_device(struct serio_dev *dev);
  59. void serio_unregister_device(struct serio_dev *dev);
  60. static __inline__ int serio_write(struct serio *serio, unsigned char data)
  61. {
  62. return serio->write(serio, data);
  63. }
  64. #define SERIO_TIMEOUT 1
  65. #define SERIO_PARITY 2
  66. #define SERIO_TYPE 0xff000000UL
  67. #define SERIO_XT 0x00000000UL
  68. #define SERIO_8042 0x01000000UL
  69. #define SERIO_RS232 0x02000000UL
  70. #define SERIO_HIL_MLC 0x03000000UL
  71. #define SERIO_PROTO 0xFFUL
  72. #define SERIO_MSC 0x01
  73. #define SERIO_SUN 0x02
  74. #define SERIO_MS 0x03
  75. #define SERIO_MP 0x04
  76. #define SERIO_MZ 0x05
  77. #define SERIO_MZP 0x06
  78. #define SERIO_MZPP 0x07
  79. #define SERIO_SUNKBD 0x10
  80. #define SERIO_WARRIOR 0x18
  81. #define SERIO_SPACEORB 0x19
  82. #define SERIO_MAGELLAN 0x1a
  83. #define SERIO_SPACEBALL 0x1b
  84. #define SERIO_GUNZE 0x1c
  85. #define SERIO_IFORCE 0x1d
  86. #define SERIO_STINGER 0x1e
  87. #define SERIO_NEWTON 0x1f
  88. #define SERIO_STOWAWAY 0x20
  89. #define SERIO_H3600 0x21
  90. #define SERIO_PS2SER 0x22
  91. #define SERIO_HIL 0x25
  92. #define SERIO_ID 0xff00UL
  93. #define SERIO_EXTRA 0xff0000UL
  94. #endif