hc
2024-03-22 f63cd4c03ea42695d5f9b0e1798edd196923aae6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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
#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