summaryrefslogtreecommitdiffstats
path: root/include/linux/miscdevice.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/miscdevice.h')
-rw-r--r--include/linux/miscdevice.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h
new file mode 100644
index 000000000..c0fea6ca5
--- /dev/null
+++ b/include/linux/miscdevice.h
@@ -0,0 +1,111 @@
+/* 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 need
+ * an entry that is not assigned here, it can be moved and
+ * reassigned or dynamically set 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 was EFI Time services */
+#define VHCI_MINOR 137
+#define SUN_OPENPROM_MINOR 139
+#define DMAPI_MINOR 140 /* unused */
+#define NVRAM_MINOR 144
+#define SBUS_FLASH_MINOR 152
+#define SGI_MMTIMER 153
+#define PMU_MINOR 154
+#define STORE_QUEUE_MINOR 155 /* unused */
+#define LCD_MINOR 156
+#define AC_MINOR 157
+#define BUTTON_MINOR 158 /* Major 10, Minor 158, /dev/nwbutton */
+#define NWFLASH_MINOR 160 /* MAJOR is 10 - miscdevice */
+#define ENVCTRL_MINOR 162
+#define I2O_MINOR 166
+#define UCTRL_MINOR 174
+#define AGPGART_MINOR 175
+#define TOSH_MINOR_DEV 181
+#define HWRNG_MINOR 183
+/*#define MICROCODE_MINOR 184 unused */
+#define KEYPAD_MINOR 185
+#define IRNET_MINOR 187
+#define D7S_MINOR 193
+#define VFIO_MINOR 196
+#define PXA3XX_GCU_MINOR 197
+#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 SNAPSHOT_MINOR 231
+#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 RFKILL_MINOR 242
+#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 to eliminate 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 to eliminate 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