xref: /openbmc/linux/include/linux/miscdevice.h (revision 9f8267b9)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
21da177e4SLinus Torvalds #ifndef _LINUX_MISCDEVICE_H
31da177e4SLinus Torvalds #define _LINUX_MISCDEVICE_H
41da177e4SLinus Torvalds #include <linux/major.h>
51986c93fSPaul Gortmaker #include <linux/list.h>
61986c93fSPaul Gortmaker #include <linux/types.h>
7ca75d601SPrasannaKumar Muralidharan #include <linux/device.h>
81da177e4SLinus Torvalds 
979907d89SAlan Cox /*
1031b4b3bfSSebastian Fricke  *	These allocations are managed by device@lanana.org. If you need
1131b4b3bfSSebastian Fricke  *	an entry that is not assigned here, it can be moved and
1231b4b3bfSSebastian Fricke  *	reassigned or dynamically set if a fixed value is not justified.
1379907d89SAlan Cox  */
1479907d89SAlan Cox 
151da177e4SLinus Torvalds #define PSMOUSE_MINOR		1
163503958cSLucas De Marchi #define MS_BUSMOUSE_MINOR	2	/* unused */
173503958cSLucas De Marchi #define ATIXL_BUSMOUSE_MINOR	3	/* unused */
181da177e4SLinus Torvalds /*#define AMIGAMOUSE_MINOR	4	FIXME OBSOLETE */
193503958cSLucas De Marchi #define ATARIMOUSE_MINOR	5	/* unused */
203503958cSLucas De Marchi #define SUN_MOUSE_MINOR		6	/* unused */
213503958cSLucas De Marchi #define APOLLO_MOUSE_MINOR	7	/* unused */
223503958cSLucas De Marchi #define PC110PAD_MINOR		9	/* unused */
231da177e4SLinus Torvalds /*#define ADB_MOUSE_MINOR	10	FIXME OBSOLETE */
241da177e4SLinus Torvalds #define WATCHDOG_MINOR		130	/* Watchdog timer     */
251da177e4SLinus Torvalds #define TEMP_MINOR		131	/* Temperature Sensor */
26874bcd00SCorentin Labbe #define APM_MINOR_DEV		134
271da177e4SLinus Torvalds #define RTC_MINOR		135
288067c0b0SArnd Bergmann /*#define EFI_RTC_MINOR		136	was EFI Time services */
29b075dd40SLucas De Marchi #define VHCI_MINOR		137
301da177e4SLinus Torvalds #define SUN_OPENPROM_MINOR	139
313503958cSLucas De Marchi #define DMAPI_MINOR		140	/* unused */
321da177e4SLinus Torvalds #define NVRAM_MINOR		144
332668dba6SZhenzhong Duan #define SBUS_FLASH_MINOR	152
341da177e4SLinus Torvalds #define SGI_MMTIMER		153
356ce6ae7cSZhenzhong Duan #define PMU_MINOR		154
363503958cSLucas De Marchi #define STORE_QUEUE_MINOR	155	/* unused */
376ce6ae7cSZhenzhong Duan #define LCD_MINOR		156
386ce6ae7cSZhenzhong Duan #define AC_MINOR		157
396ce6ae7cSZhenzhong Duan #define BUTTON_MINOR		158	/* Major 10, Minor 158, /dev/nwbutton */
402668dba6SZhenzhong Duan #define NWFLASH_MINOR		160	/* MAJOR is 10 - miscdevice */
416ce6ae7cSZhenzhong Duan #define ENVCTRL_MINOR		162
421da177e4SLinus Torvalds #define I2O_MINOR		166
436ce6ae7cSZhenzhong Duan #define UCTRL_MINOR		174
440f109f0eSCorentin Labbe #define AGPGART_MINOR		175
456ce6ae7cSZhenzhong Duan #define TOSH_MINOR_DEV		181
46fd50d71fSCorentin LABBE #define HWRNG_MINOR		183
47*9f8267b9SBorislav Petkov /*#define MICROCODE_MINOR	184	unused */
486ce6ae7cSZhenzhong Duan #define KEYPAD_MINOR		185
4924c946ccSLABBE Corentin #define IRNET_MINOR		187
50da61e730SCorentin Labbe #define D7S_MINOR		193
518dcf94bcSAlex Williamson #define VFIO_MINOR		196
526ce6ae7cSZhenzhong Duan #define PXA3XX_GCU_MINOR	197
53193da609STejun Heo #define TUN_MINOR		200
54cb2ffb26STom Gundersen #define CUSE_MINOR		203
551da177e4SLinus Torvalds #define MWAVE_MINOR		219	/* ACP/Mwave Modem */
561da177e4SLinus Torvalds #define MPT_MINOR		220
57dec3f959SEric Moore #define MPT2SAS_MINOR		221
5878ad724aSSreekanth Reddy #define MPT3SAS_MINOR		222
598905aaafSKay Sievers #define UINPUT_MINOR		223
60cef12ee5SLiu, Jinsong #define MISC_MCELOG_MINOR	227
611da177e4SLinus Torvalds #define HPET_MINOR		228
62193da609STejun Heo #define FUSE_MINOR		229
636ce6ae7cSZhenzhong Duan #define SNAPSHOT_MINOR		231
64bbe4432eSAvi Kivity #define KVM_MINOR		232
65578454ffSKay Sievers #define BTRFS_MINOR		234
66578454ffSKay Sievers #define AUTOFS_MINOR		235
677e507eb6SPeter Rajnoha #define MAPPER_CTRL_MINOR	236
68770fe30aSKay Sievers #define LOOP_CTRL_MINOR		237
697c7c7f01Sstephen hemminger #define VHOST_NET_MINOR		238
7019872d20SDavid Herrmann #define UHID_MINOR		239
715523662eSStephen Chandler Paul #define USERIO_MINOR		240
72f4660cc9SStefan Hajnoczi #define VHOST_VSOCK_MINOR	241
738670b2b8SMarcel Holtmann #define RFKILL_MINOR		242
74193da609STejun Heo #define MISC_DYNAMIC_MINOR	255
751da177e4SLinus Torvalds 
761da177e4SLinus Torvalds struct device;
77bd735995STakashi Iwai struct attribute_group;
781da177e4SLinus Torvalds 
791da177e4SLinus Torvalds struct miscdevice  {
801da177e4SLinus Torvalds 	int minor;
811da177e4SLinus Torvalds 	const char *name;
8299ac48f5SArjan van de Ven 	const struct file_operations *fops;
831da177e4SLinus Torvalds 	struct list_head list;
8494fbcdedSGreg Kroah-Hartman 	struct device *parent;
8594fbcdedSGreg Kroah-Hartman 	struct device *this_device;
86bd735995STakashi Iwai 	const struct attribute_group **groups;
87e454cea2SKay Sievers 	const char *nodename;
88a85cfdaeSAl Viro 	umode_t mode;
891da177e4SLinus Torvalds };
901da177e4SLinus Torvalds 
911da177e4SLinus Torvalds extern int misc_register(struct miscdevice *misc);
92f368ed60SGreg Kroah-Hartman extern void misc_deregister(struct miscdevice *misc);
931da177e4SLinus Torvalds 
94ca75d601SPrasannaKumar Muralidharan /*
95f71082f8SPaul Gortmaker  * Helper macro for drivers that don't do anything special in the initcall.
9631b4b3bfSSebastian Fricke  * This helps to eliminate boilerplate code.
97f71082f8SPaul Gortmaker  */
98f71082f8SPaul Gortmaker #define builtin_misc_device(__misc_device) \
99f71082f8SPaul Gortmaker 	builtin_driver(__misc_device, misc_register)
100f71082f8SPaul Gortmaker 
101f71082f8SPaul Gortmaker /*
102ca75d601SPrasannaKumar Muralidharan  * Helper macro for drivers that don't do anything special in module init / exit
10331b4b3bfSSebastian Fricke  * call. This helps to eliminate boilerplate code.
104ca75d601SPrasannaKumar Muralidharan  */
105ca75d601SPrasannaKumar Muralidharan #define module_misc_device(__misc_device) \
106ca75d601SPrasannaKumar Muralidharan 	module_driver(__misc_device, misc_register, misc_deregister)
107ca75d601SPrasannaKumar Muralidharan 
1081da177e4SLinus Torvalds #define MODULE_ALIAS_MISCDEV(minor)				\
1091da177e4SLinus Torvalds 	MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR)	\
1101da177e4SLinus Torvalds 	"-" __stringify(minor))
1111da177e4SLinus Torvalds #endif
112