File Index
Files and directories
Sign in
FILE

i8042.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/i8042.h C
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2#ifndef _LINUX_I8042_H
  3#define _LINUX_I8042_H
  4
  5
  6#include <linux/errno.h>
  7#include <linux/types.h>
  8
  9/*
 10 * Standard commands.
 11 */
 12
 13#define I8042_CMD_CTL_RCTR	0x0120
 14#define I8042_CMD_CTL_WCTR	0x1060
 15#define I8042_CMD_CTL_TEST	0x01aa
 16
 17#define I8042_CMD_KBD_DISABLE	0x00ad
 18#define I8042_CMD_KBD_ENABLE	0x00ae
 19#define I8042_CMD_KBD_TEST	0x01ab
 20#define I8042_CMD_KBD_LOOP	0x11d2
 21
 22#define I8042_CMD_AUX_DISABLE	0x00a7
 23#define I8042_CMD_AUX_ENABLE	0x00a8
 24#define I8042_CMD_AUX_TEST	0x01a9
 25#define I8042_CMD_AUX_SEND	0x10d4
 26#define I8042_CMD_AUX_LOOP	0x11d3
 27
 28#define I8042_CMD_MUX_PFX	0x0090
 29#define I8042_CMD_MUX_SEND	0x1090
 30
 31/*
 32 * Status register bits.
 33 */
 34
 35#define I8042_STR_PARITY	0x80
 36#define I8042_STR_TIMEOUT	0x40
 37#define I8042_STR_AUXDATA	0x20
 38#define I8042_STR_KEYLOCK	0x10
 39#define I8042_STR_CMDDAT	0x08
 40#define I8042_STR_MUXERR	0x04
 41#define I8042_STR_IBF		0x02
 42#define I8042_STR_OBF		0x01
 43
 44/*
 45 * Control register bits.
 46 */
 47
 48#define I8042_CTR_KBDINT	0x01
 49#define I8042_CTR_AUXINT	0x02
 50#define I8042_CTR_IGNKEYLOCK	0x08
 51#define I8042_CTR_KBDDIS	0x10
 52#define I8042_CTR_AUXDIS	0x20
 53#define I8042_CTR_XLATE		0x40
 54
 55struct serio;
 56
 57/**
 58 * typedef i8042_filter_t - i8042 filter callback
 59 * @data: Data received by the i8042 controller
 60 * @str: Status register of the i8042 controller
 61 * @serio: Serio of the i8042 controller
 62 * @context: Context pointer associated with this callback
 63 *
 64 * This represents a i8042 filter callback which can be used with i8042_install_filter()
 65 * and i8042_remove_filter() to filter the i8042 input for platform-specific key codes.
 66 *
 67 * Context: Interrupt context.
 68 * Returns: true if the data should be filtered out, false if otherwise.
 69 */
 70typedef bool (*i8042_filter_t)(unsigned char data, unsigned char str, struct serio *serio,
 71			       void *context);
 72
 73#if defined(CONFIG_SERIO_I8042) || defined(CONFIG_SERIO_I8042_MODULE)
 74
 75void i8042_lock_chip(void);
 76void i8042_unlock_chip(void);
 77int i8042_command(unsigned char *param, int command);
 78int i8042_install_filter(i8042_filter_t filter, void *context);
 79int i8042_remove_filter(i8042_filter_t filter);
 80
 81#else
 82
 83static inline void i8042_lock_chip(void)
 84{
 85}
 86
 87static inline void i8042_unlock_chip(void)
 88{
 89}
 90
 91static inline int i8042_command(unsigned char *param, int command)
 92{
 93	return -ENODEV;
 94}
 95
 96static inline int i8042_install_filter(i8042_filter_t filter, void *context)
 97{
 98	return -ENODEV;
 99}
100
101static inline int i8042_remove_filter(i8042_filter_t filter)
102{
103	return -ENODEV;
104}
105
106#endif
107
108#endif
~/ Read-only file preview.