blob: 0676f18093f92290727d8eaad234374347376974 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002#ifndef _LINUX_MISCDEVICE_H
3#define _LINUX_MISCDEVICE_H
Linus Torvalds1da177e2005-04-16 15:20:36 -07004#include <linux/major.h>
Paul Gortmaker1986c932011-08-29 15:22:17 -04005#include <linux/list.h>
6#include <linux/types.h>
PrasannaKumar Muralidharanca75d602016-08-25 22:30:49 +05307#include <linux/device.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -07008
Alan Cox79907d82010-06-09 09:39:49 +01009/*
Sebastian Fricke31b4b3b2020-08-03 07:43:45 +020010 * 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.
Alan Cox79907d82010-06-09 09:39:49 +010013 */
14
Tejun Heo193da602008-11-26 12:03:54 +010015#define PSMOUSE_MINOR 1
Lucas De Marchi35039582014-02-18 02:27:24 -030016#define MS_BUSMOUSE_MINOR 2 /* unused */
17#define ATIXL_BUSMOUSE_MINOR 3 /* unused */
Tejun Heo193da602008-11-26 12:03:54 +010018/*#define AMIGAMOUSE_MINOR 4 FIXME OBSOLETE */
Lucas De Marchi35039582014-02-18 02:27:24 -030019#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 */
Tejun Heo193da602008-11-26 12:03:54 +010023/*#define ADB_MOUSE_MINOR 10 FIXME OBSOLETE */
Linus Torvalds1da177e2005-04-16 15:20:36 -070024#define WATCHDOG_MINOR 130 /* Watchdog timer */
25#define TEMP_MINOR 131 /* Temperature Sensor */
Corentin Labbe874bcd02016-12-15 20:36:33 +010026#define APM_MINOR_DEV 134
Tejun Heo193da602008-11-26 12:03:54 +010027#define RTC_MINOR 135
Arnd Bergmann8067c0b2020-02-26 23:43:21 +010028/*#define EFI_RTC_MINOR 136 was EFI Time services */
Lucas De Marchib075dd42014-02-18 02:19:26 -030029#define VHCI_MINOR 137
Tejun Heo193da602008-11-26 12:03:54 +010030#define SUN_OPENPROM_MINOR 139
Lucas De Marchi35039582014-02-18 02:27:24 -030031#define DMAPI_MINOR 140 /* unused */
Tejun Heo193da602008-11-26 12:03:54 +010032#define NVRAM_MINOR 144
Zhenzhong Duan2668dba2020-03-11 15:16:54 +080033#define SBUS_FLASH_MINOR 152
Tejun Heo193da602008-11-26 12:03:54 +010034#define SGI_MMTIMER 153
Zhenzhong Duan6ce6ae72020-03-11 15:16:53 +080035#define PMU_MINOR 154
Lucas De Marchi35039582014-02-18 02:27:24 -030036#define STORE_QUEUE_MINOR 155 /* unused */
Zhenzhong Duan6ce6ae72020-03-11 15:16:53 +080037#define LCD_MINOR 156
38#define AC_MINOR 157
39#define BUTTON_MINOR 158 /* Major 10, Minor 158, /dev/nwbutton */
Zhenzhong Duan2668dba2020-03-11 15:16:54 +080040#define NWFLASH_MINOR 160 /* MAJOR is 10 - miscdevice */
Zhenzhong Duan6ce6ae72020-03-11 15:16:53 +080041#define ENVCTRL_MINOR 162
Tejun Heo193da602008-11-26 12:03:54 +010042#define I2O_MINOR 166
Zhenzhong Duan6ce6ae72020-03-11 15:16:53 +080043#define UCTRL_MINOR 174
Corentin Labbe0f109f02019-11-21 08:14:42 +000044#define AGPGART_MINOR 175
Zhenzhong Duan6ce6ae72020-03-11 15:16:53 +080045#define TOSH_MINOR_DEV 181
Corentin LABBEfd50d712016-12-13 15:51:13 +010046#define HWRNG_MINOR 183
Linus Torvalds1da177e2005-04-16 15:20:36 -070047#define MICROCODE_MINOR 184
Zhenzhong Duan6ce6ae72020-03-11 15:16:53 +080048#define KEYPAD_MINOR 185
LABBE Corentin24c946c2016-12-15 11:42:48 +010049#define IRNET_MINOR 187
Corentin Labbeda61e732017-09-18 20:10:36 +020050#define D7S_MINOR 193
Alex Williamson8dcf94b2013-12-19 10:17:11 -070051#define VFIO_MINOR 196
Zhenzhong Duan6ce6ae72020-03-11 15:16:53 +080052#define PXA3XX_GCU_MINOR 197
Tejun Heo193da602008-11-26 12:03:54 +010053#define TUN_MINOR 200
Tom Gundersencb2ffb22013-09-09 20:18:27 +020054#define CUSE_MINOR 203
Tejun Heo193da602008-11-26 12:03:54 +010055#define MWAVE_MINOR 219 /* ACP/Mwave Modem */
56#define MPT_MINOR 220
Eric Mooredec3f952009-03-09 01:27:49 -060057#define MPT2SAS_MINOR 221
Sreekanth Reddy78ad7242012-11-30 07:58:10 +053058#define MPT3SAS_MINOR 222
Kay Sievers8905aaa2010-08-19 09:52:28 -070059#define UINPUT_MINOR 223
Liu, Jinsongcef12ee2012-06-07 19:56:51 +080060#define MISC_MCELOG_MINOR 227
Tejun Heo193da602008-11-26 12:03:54 +010061#define HPET_MINOR 228
62#define FUSE_MINOR 229
Zhenzhong Duan6ce6ae72020-03-11 15:16:53 +080063#define SNAPSHOT_MINOR 231
Tejun Heo193da602008-11-26 12:03:54 +010064#define KVM_MINOR 232
Kay Sievers578454f2010-05-20 18:07:20 +020065#define BTRFS_MINOR 234
66#define AUTOFS_MINOR 235
Peter Rajnoha7e507eb2010-08-12 04:14:05 +010067#define MAPPER_CTRL_MINOR 236
Kay Sievers770fe302011-07-31 22:08:04 +020068#define LOOP_CTRL_MINOR 237
stephen hemminger7c7c7f02012-01-11 19:30:38 +000069#define VHOST_NET_MINOR 238
David Herrmann19872d22013-09-09 18:33:54 +020070#define UHID_MINOR 239
Stephen Chandler Paul5523662e2015-10-24 13:10:29 -070071#define USERIO_MINOR 240
Stefan Hajnoczif4660cc2017-05-10 10:19:18 -040072#define VHOST_VSOCK_MINOR 241
Marcel Holtmann8670b2b2019-10-24 19:40:42 +020073#define RFKILL_MINOR 242
Tejun Heo193da602008-11-26 12:03:54 +010074#define MISC_DYNAMIC_MINOR 255
Linus Torvalds1da177e2005-04-16 15:20:36 -070075
76struct device;
Takashi Iwaibd735992015-02-02 15:44:54 +010077struct attribute_group;
Linus Torvalds1da177e2005-04-16 15:20:36 -070078
79struct miscdevice {
80 int minor;
81 const char *name;
Arjan van de Ven99ac48f2006-03-28 01:56:41 -080082 const struct file_operations *fops;
Linus Torvalds1da177e2005-04-16 15:20:36 -070083 struct list_head list;
Greg Kroah-Hartman94fbcde2006-07-27 16:16:04 -070084 struct device *parent;
85 struct device *this_device;
Takashi Iwaibd735992015-02-02 15:44:54 +010086 const struct attribute_group **groups;
Kay Sieverse454cea2009-09-18 23:01:12 +020087 const char *nodename;
Al Viroa85cfda2011-07-26 04:47:38 -040088 umode_t mode;
Linus Torvalds1da177e2005-04-16 15:20:36 -070089};
90
Robert P. J. Dayf82dd4b2014-05-16 04:36:13 -040091extern int misc_register(struct miscdevice *misc);
Greg Kroah-Hartmanf368ed62015-07-30 15:59:57 -070092extern void misc_deregister(struct miscdevice *misc);
Linus Torvalds1da177e2005-04-16 15:20:36 -070093
PrasannaKumar Muralidharanca75d602016-08-25 22:30:49 +053094/*
Paul Gortmakerf71082f2016-10-22 18:36:05 -040095 * Helper macro for drivers that don't do anything special in the initcall.
Sebastian Fricke31b4b3b2020-08-03 07:43:45 +020096 * This helps to eliminate boilerplate code.
Paul Gortmakerf71082f2016-10-22 18:36:05 -040097 */
98#define builtin_misc_device(__misc_device) \
99 builtin_driver(__misc_device, misc_register)
100
101/*
PrasannaKumar Muralidharanca75d602016-08-25 22:30:49 +0530102 * Helper macro for drivers that don't do anything special in module init / exit
Sebastian Fricke31b4b3b2020-08-03 07:43:45 +0200103 * call. This helps to eliminate boilerplate code.
PrasannaKumar Muralidharanca75d602016-08-25 22:30:49 +0530104 */
105#define module_misc_device(__misc_device) \
106 module_driver(__misc_device, misc_register, misc_deregister)
107
Linus Torvalds1da177e2005-04-16 15:20:36 -0700108#define MODULE_ALIAS_MISCDEV(minor) \
109 MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR) \
110 "-" __stringify(minor))
111#endif