linux/include/linux/i8042.h
<<
>>
Prefs
   1#ifndef _LINUX_I8042_H
   2#define _LINUX_I8042_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#include <linux/types.h>
  11
  12/*
  13 * Standard commands.
  14 */
  15
  16#define I8042_CMD_CTL_RCTR      0x0120
  17#define I8042_CMD_CTL_WCTR      0x1060
  18#define I8042_CMD_CTL_TEST      0x01aa
  19
  20#define I8042_CMD_KBD_DISABLE   0x00ad
  21#define I8042_CMD_KBD_ENABLE    0x00ae
  22#define I8042_CMD_KBD_TEST      0x01ab
  23#define I8042_CMD_KBD_LOOP      0x11d2
  24
  25#define I8042_CMD_AUX_DISABLE   0x00a7
  26#define I8042_CMD_AUX_ENABLE    0x00a8
  27#define I8042_CMD_AUX_TEST      0x01a9
  28#define I8042_CMD_AUX_SEND      0x10d4
  29#define I8042_CMD_AUX_LOOP      0x11d3
  30
  31#define I8042_CMD_MUX_PFX       0x0090
  32#define I8042_CMD_MUX_SEND      0x1090
  33
  34/*
  35 * Status register bits.
  36 */
  37
  38#define I8042_STR_PARITY        0x80
  39#define I8042_STR_TIMEOUT       0x40
  40#define I8042_STR_AUXDATA       0x20
  41#define I8042_STR_KEYLOCK       0x10
  42#define I8042_STR_CMDDAT        0x08
  43#define I8042_STR_MUXERR        0x04
  44#define I8042_STR_IBF           0x02
  45#define I8042_STR_OBF           0x01
  46
  47/*
  48 * Control register bits.
  49 */
  50
  51#define I8042_CTR_KBDINT        0x01
  52#define I8042_CTR_AUXINT        0x02
  53#define I8042_CTR_IGNKEYLOCK    0x08
  54#define I8042_CTR_KBDDIS        0x10
  55#define I8042_CTR_AUXDIS        0x20
  56#define I8042_CTR_XLATE         0x40
  57
  58struct serio;
  59
  60#if defined(CONFIG_SERIO_I8042) || defined(CONFIG_SERIO_I8042_MODULE)
  61
  62void i8042_lock_chip(void);
  63void i8042_unlock_chip(void);
  64int i8042_command(unsigned char *param, int command);
  65bool i8042_check_port_owner(const struct serio *);
  66int i8042_install_filter(bool (*filter)(unsigned char data, unsigned char str,
  67                                        struct serio *serio));
  68int i8042_remove_filter(bool (*filter)(unsigned char data, unsigned char str,
  69                                       struct serio *serio));
  70
  71#else
  72
  73static inline void i8042_lock_chip(void)
  74{
  75}
  76
  77static inline void i8042_unlock_chip(void)
  78{
  79}
  80
  81static inline int i8042_command(unsigned char *param, int command)
  82{
  83        return -ENODEV;
  84}
  85
  86static inline bool i8042_check_port_owner(const struct serio *serio)
  87{
  88        return false;
  89}
  90
  91static inline int i8042_install_filter(bool (*filter)(unsigned char data, unsigned char str,
  92                                        struct serio *serio))
  93{
  94        return -ENODEV;
  95}
  96
  97static inline int i8042_remove_filter(bool (*filter)(unsigned char data, unsigned char str,
  98                                       struct serio *serio))
  99{
 100        return -ENODEV;
 101}
 102
 103#endif
 104
 105#endif
 106