File Index
Files and directories
Sign in
FILE

miscdevice.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/miscdevice.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#ifndef _LINUX_MISCDEVICE_H
  3#define _LINUX_MISCDEVICE_H
  4#include <linux/major.h>
  5#include <linux/list.h>
  6#include <linux/types.h>
  7#include <linux/device.h>
  8
  9/*
 10 *	These allocations are managed by device@lanana.org. If you need
 11 *	an entry that is not assigned here, it can be moved and
 12 *	reassigned or dynamically set if a fixed value is not justified.
 13 */
 14
 15#define PSMOUSE_MINOR		1
 16#define MS_BUSMOUSE_MINOR	2	/* unused */
 17#define ATIXL_BUSMOUSE_MINOR	3	/* unused */
 18/*#define AMIGAMOUSE_MINOR	4	FIXME OBSOLETE */
 19#define ATARIMOUSE_MINOR	5	/* unused */
 20#define SUN_MOUSE_MINOR		6	/* unused */
 21#define APOLLO_MOUSE_MINOR	7	/* unused */
 22#define PC110PAD_MINOR		9	/* unused */
 23/*#define ADB_MOUSE_MINOR	10	FIXME OBSOLETE */
 24#define WATCHDOG_MINOR		130	/* Watchdog timer     */
 25#define TEMP_MINOR		131	/* Temperature Sensor */
 26#define APM_MINOR_DEV		134
 27#define RTC_MINOR		135
 28/*#define EFI_RTC_MINOR		136	was EFI Time services */
 29#define VHCI_MINOR		137
 30#define SUN_OPENPROM_MINOR	139
 31#define DMAPI_MINOR		140	/* unused */
 32#define NVRAM_MINOR		144
 33#define SBUS_FLASH_MINOR	152
 34#define SGI_MMTIMER		153
 35#define PMU_MINOR		154
 36#define STORE_QUEUE_MINOR	155	/* unused */
 37#define LCD_MINOR		156
 38#define AC_MINOR		157
 39#define BUTTON_MINOR		158	/* Major 10, Minor 158, /dev/nwbutton */
 40#define NWFLASH_MINOR		160	/* MAJOR is 10 - miscdevice */
 41#define ENVCTRL_MINOR		162
 42#define I2O_MINOR		166
 43#define UCTRL_MINOR		174
 44#define AGPGART_MINOR		175
 45#define TOSH_MINOR_DEV		181
 46#define HWRNG_MINOR		183
 47/*#define MICROCODE_MINOR	184	unused */
 48#define KEYPAD_MINOR		185
 49#define IRNET_MINOR		187
 50#define D7S_MINOR		193
 51#define VFIO_MINOR		196
 52#define PXA3XX_GCU_MINOR	197
 53#define TUN_MINOR		200
 54#define CUSE_MINOR		203
 55#define MWAVE_MINOR		219	/* ACP/Mwave Modem */
 56#define MPT_MINOR		220
 57#define MPT2SAS_MINOR		221
 58#define MPT3SAS_MINOR		222
 59#define UINPUT_MINOR		223
 60#define MISC_MCELOG_MINOR	227
 61#define HPET_MINOR		228
 62#define FUSE_MINOR		229
 63#define SNAPSHOT_MINOR		231
 64#define KVM_MINOR		232
 65#define BTRFS_MINOR		234
 66#define AUTOFS_MINOR		235
 67#define MAPPER_CTRL_MINOR	236
 68#define LOOP_CTRL_MINOR		237
 69#define VHOST_NET_MINOR		238
 70#define UHID_MINOR		239
 71#define USERIO_MINOR		240
 72#define VHOST_VSOCK_MINOR	241
 73#define EISA_EEPROM_MINOR	241
 74#define RFKILL_MINOR		242
 75
 76/*
 77 * Misc char device minor code space division related to below macro:
 78 *
 79 * <  255  : Fixed minor code
 80 * == 255  : Indicator to request dynamic minor code
 81 * >  255  : Dynamic minor code requested, 1048320 minor codes totally.
 82 */
 83#define MISC_DYNAMIC_MINOR	255
 84
 85struct miscdevice {
 86	int minor;
 87	const char *name;
 88	const struct file_operations *fops;
 89	struct list_head list;
 90	struct device *parent;
 91	struct device *this_device;
 92	const struct attribute_group **groups;
 93	const char *nodename;
 94	umode_t mode;
 95};
 96
 97extern int misc_register(struct miscdevice *misc);
 98extern void misc_deregister(struct miscdevice *misc);
 99
100/*
101 * Helper macro for drivers that don't do anything special in the initcall.
102 * This helps to eliminate boilerplate code.
103 */
104#define builtin_misc_device(__misc_device) \
105	builtin_driver(__misc_device, misc_register)
106
107/*
108 * Helper macro for drivers that don't do anything special in module init / exit
109 * call. This helps to eliminate boilerplate code.
110 */
111#define module_misc_device(__misc_device) \
112	module_driver(__misc_device, misc_register, misc_deregister)
113
114#define MODULE_ALIAS_MISCDEV(minor)				\
115	MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR)	\
116	"-" __stringify(minor))
117#endif
~/ Read-only file preview.