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