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