v4.19.13 snapshot.
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h
new file mode 100644
index 0000000..3247a3d
--- /dev/null
+++ b/include/linux/miscdevice.h
@@ -0,0 +1,97 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_MISCDEVICE_H
+#define _LINUX_MISCDEVICE_H
+#include <linux/major.h>
+#include <linux/list.h>
+#include <linux/types.h>
+#include <linux/device.h>
+
+/*
+ * These allocations are managed by device@lanana.org. If you use an
+ * entry that is not in assigned your entry may well be moved and
+ * reassigned, or set dynamic if a fixed value is not justified.
+ */
+
+#define PSMOUSE_MINOR 1
+#define MS_BUSMOUSE_MINOR 2 /* unused */
+#define ATIXL_BUSMOUSE_MINOR 3 /* unused */
+/*#define AMIGAMOUSE_MINOR 4 FIXME OBSOLETE */
+#define ATARIMOUSE_MINOR 5 /* unused */
+#define SUN_MOUSE_MINOR 6 /* unused */
+#define APOLLO_MOUSE_MINOR 7 /* unused */
+#define PC110PAD_MINOR 9 /* unused */
+/*#define ADB_MOUSE_MINOR 10 FIXME OBSOLETE */
+#define WATCHDOG_MINOR 130 /* Watchdog timer */
+#define TEMP_MINOR 131 /* Temperature Sensor */
+#define APM_MINOR_DEV 134
+#define RTC_MINOR 135
+#define EFI_RTC_MINOR 136 /* EFI Time services */
+#define VHCI_MINOR 137
+#define SUN_OPENPROM_MINOR 139
+#define DMAPI_MINOR 140 /* unused */
+#define NVRAM_MINOR 144
+#define SGI_MMTIMER 153
+#define STORE_QUEUE_MINOR 155 /* unused */
+#define I2O_MINOR 166
+#define HWRNG_MINOR 183
+#define MICROCODE_MINOR 184
+#define IRNET_MINOR 187
+#define D7S_MINOR 193
+#define VFIO_MINOR 196
+#define TUN_MINOR 200
+#define CUSE_MINOR 203
+#define MWAVE_MINOR 219 /* ACP/Mwave Modem */
+#define MPT_MINOR 220
+#define MPT2SAS_MINOR 221
+#define MPT3SAS_MINOR 222
+#define UINPUT_MINOR 223
+#define MISC_MCELOG_MINOR 227
+#define HPET_MINOR 228
+#define FUSE_MINOR 229
+#define KVM_MINOR 232
+#define BTRFS_MINOR 234
+#define AUTOFS_MINOR 235
+#define MAPPER_CTRL_MINOR 236
+#define LOOP_CTRL_MINOR 237
+#define VHOST_NET_MINOR 238
+#define UHID_MINOR 239
+#define USERIO_MINOR 240
+#define VHOST_VSOCK_MINOR 241
+#define MISC_DYNAMIC_MINOR 255
+
+struct device;
+struct attribute_group;
+
+struct miscdevice {
+ int minor;
+ const char *name;
+ const struct file_operations *fops;
+ struct list_head list;
+ struct device *parent;
+ struct device *this_device;
+ const struct attribute_group **groups;
+ const char *nodename;
+ umode_t mode;
+};
+
+extern int misc_register(struct miscdevice *misc);
+extern void misc_deregister(struct miscdevice *misc);
+
+/*
+ * Helper macro for drivers that don't do anything special in the initcall.
+ * This helps in eleminating of boilerplate code.
+ */
+#define builtin_misc_device(__misc_device) \
+ builtin_driver(__misc_device, misc_register)
+
+/*
+ * Helper macro for drivers that don't do anything special in module init / exit
+ * call. This helps in eleminating of boilerplate code.
+ */
+#define module_misc_device(__misc_device) \
+ module_driver(__misc_device, misc_register, misc_deregister)
+
+#define MODULE_ALIAS_MISCDEV(minor) \
+ MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR) \
+ "-" __stringify(minor))
+#endif