1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright IBM Corp. 2004 All Rights Reserved. 4 * 5 * Tape class device support 6 * 7 * Author: Stefan Bader <shbader@de.ibm.com> 8 * Based on simple class device code by Greg K-H 9 */ 10 #ifndef __TAPE_CLASS_H__ 11 #define __TAPE_CLASS_H__ 12 13 #include <linux/init.h> 14 #include <linux/module.h> 15 #include <linux/fs.h> 16 #include <linux/major.h> 17 #include <linux/cdev.h> 18 19 #include <linux/device.h> 20 #include <linux/kdev_t.h> 21 22 #define TAPECLASS_NAME_LEN 32 23 24 struct tape_class_device { 25 struct cdev *char_device; 26 struct device *class_device; 27 char device_name[TAPECLASS_NAME_LEN]; 28 char mode_name[TAPECLASS_NAME_LEN]; 29 }; 30 31 /* 32 * Register a tape device and return a pointer to the tape class device 33 * created by the call. 34 * 35 * device 36 * The pointer to the struct device of the physical (base) device. 37 * dev 38 * The intended major/minor number. The major number may be 0 to 39 * get a dynamic major number. 40 * fops 41 * The pointer to the drivers file operations for the tape device. 42 * device_name 43 * Pointer to the logical device name (will also be used as kobject name 44 * of the cdev). This can also be called the name of the tape class 45 * device. 46 * mode_name 47 * Points to the name of the tape mode. This creates a link with that 48 * name from the physical device to the logical device (class). 49 */ 50 struct tape_class_device *register_tape_dev( 51 struct device * device, 52 dev_t dev, 53 const struct file_operations *fops, 54 char * device_name, 55 char * node_name 56 ); 57 void unregister_tape_dev(struct device *device, struct tape_class_device *tcd); 58 59 #endif /* __TAPE_CLASS_H__ */ 60