root/include/linux/device-id/input.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef LINUX_DEVICE_ID_INPUT_H
#define LINUX_DEVICE_ID_INPUT_H

#ifdef __KERNEL__
#include <linux/types.h>
typedef unsigned long kernel_ulong_t;
#endif

/* Input */
#define INPUT_DEVICE_ID_EV_MAX          0x1f
#define INPUT_DEVICE_ID_KEY_MIN_INTERESTING     0x71
#define INPUT_DEVICE_ID_KEY_MAX         0x2ff
#define INPUT_DEVICE_ID_REL_MAX         0x0f
#define INPUT_DEVICE_ID_ABS_MAX         0x3f
#define INPUT_DEVICE_ID_MSC_MAX         0x07
#define INPUT_DEVICE_ID_LED_MAX         0x0f
#define INPUT_DEVICE_ID_SND_MAX         0x07
#define INPUT_DEVICE_ID_FF_MAX          0x7f
#define INPUT_DEVICE_ID_SW_MAX          0x11
#define INPUT_DEVICE_ID_PROP_MAX        0x1f

#define INPUT_DEVICE_ID_MATCH_BUS       1
#define INPUT_DEVICE_ID_MATCH_VENDOR    2
#define INPUT_DEVICE_ID_MATCH_PRODUCT   4
#define INPUT_DEVICE_ID_MATCH_VERSION   8

#define INPUT_DEVICE_ID_MATCH_EVBIT     0x0010
#define INPUT_DEVICE_ID_MATCH_KEYBIT    0x0020
#define INPUT_DEVICE_ID_MATCH_RELBIT    0x0040
#define INPUT_DEVICE_ID_MATCH_ABSBIT    0x0080
#define INPUT_DEVICE_ID_MATCH_MSCIT     0x0100
#define INPUT_DEVICE_ID_MATCH_LEDBIT    0x0200
#define INPUT_DEVICE_ID_MATCH_SNDBIT    0x0400
#define INPUT_DEVICE_ID_MATCH_FFBIT     0x0800
#define INPUT_DEVICE_ID_MATCH_SWBIT     0x1000
#define INPUT_DEVICE_ID_MATCH_PROPBIT   0x2000

struct input_device_id {

        kernel_ulong_t flags;

        __u16 bustype;
        __u16 vendor;
        __u16 product;
        __u16 version;

        kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
        kernel_ulong_t propbit[INPUT_DEVICE_ID_PROP_MAX / BITS_PER_LONG + 1];

        kernel_ulong_t driver_info;
};

#endif /* ifndef LINUX_DEVICE_ID_INPUT_H */