config S390_TAPE
def_tristate m
- prompt "S/390 tape device support"
+ prompt "Support for 3490E tape on VTS"
depends on CCW
help
- Select this option if you want to access channel-attached tape
- devices on IBM S/390 or zSeries.
- If you select this option you will also want to select at
- least one of the tape interface options and one of the tape
- hardware options in order to access a tape device.
- This option is also available as a module. The module will be
- called tape390 and include all selected interfaces and
- hardware drivers.
-
-comment "S/390 tape hardware support"
- depends on S390_TAPE
-
-config S390_TAPE_3490
- def_tristate m
- prompt "Support for 3490 tape hardware"
- depends on S390_TAPE
- help
- Select this option if you want to access IBM 3490 magnetic
- tape subsystems and 100% compatibles.
+ Select this option if you want to access channel-attached IBM 3490E
+ tape devices on VTS, such as IBM TS7700.
+ This option is also available as a module.
It is safe to say "Y" here.
config VMLOGRDR
obj-$(CONFIG_VMCP) += vmcp.o
tape-$(CONFIG_PROC_FS) += tape_proc.o
-tape-objs := tape_core.o tape_std.o tape_char.o $(tape-y)
-obj-$(CONFIG_S390_TAPE) += tape.o tape_class.o
-obj-$(CONFIG_S390_TAPE_3490) += tape_3490.o
+tape_s390-objs := tape_3490.o tape_char.o tape_class.o tape_core.o tape_std.o $(tape-y)
+obj-$(CONFIG_S390_TAPE) += tape_s390.o
obj-$(CONFIG_MONREADER) += monreader.o
obj-$(CONFIG_MONWRITER) += monwriter.o
obj-$(CONFIG_S390_VMUR) += vmur.o
extern int tapechar_setup_device(struct tape_device *);
extern void tapechar_cleanup_device(struct tape_device *);
+/* Externals from tape_3490.c */
+extern int tape_3490_init(void);
+extern void tape_3490_exit(void);
+
/* tape initialisation functions */
#ifdef CONFIG_PROC_FS
extern void tape_proc_init (void);
.int_class = IRQIO_TAP,
};
-static int
-tape_3490_init (void)
+int tape_3490_init(void)
{
int rc;
return rc;
}
-static void
-tape_3490_exit(void)
+void tape_3490_exit(void)
{
ccw_driver_unregister(&tape_3490_driver);
}
MODULE_DEVICE_TABLE(ccw, tape_3490_ids);
-MODULE_AUTHOR("(C) 2001-2002 IBM Deutschland Entwicklung GmbH");
-MODULE_DESCRIPTION("Linux on zSeries channel attached 3490 tape device driver");
-MODULE_LICENSE("GPL");
-
-module_init(tape_3490_init);
-module_exit(tape_3490_exit);
#include "tape_class.h"
-MODULE_AUTHOR("Stefan Bader <shbader@de.ibm.com>");
-MODULE_DESCRIPTION(
- "Copyright IBM Corp. 2004 All Rights Reserved.\n"
- "tape_class.c"
-);
-MODULE_LICENSE("GPL");
-
static const struct class tape_class = {
.name = "tape390",
};
}
EXPORT_SYMBOL(unregister_tape_dev);
-
-static int __init tape_init(void)
+int tape_class_init(void)
{
return class_register(&tape_class);
}
-static void __exit tape_exit(void)
+void tape_class_exit(void)
{
class_unregister(&tape_class);
}
-
-postcore_initcall(tape_init);
-module_exit(tape_exit);
char * node_name
);
void unregister_tape_dev(struct device *device, struct tape_class_device *tcd);
+int tape_class_init(void);
+void tape_class_exit(void);
#endif /* __TAPE_CLASS_H__ */
#include "tape.h"
#include "tape_std.h"
+#include "tape_class.h"
#define LONG_BUSY_TIMEOUT 180 /* seconds */
#endif
DBF_EVENT(3, "tape init\n");
tape_proc_init();
+ tape_class_init();
tapechar_init ();
+ tape_3490_init();
return 0;
}
DBF_EVENT(6, "tape exit\n");
/* Get rid of the frontends */
+ tape_3490_exit();
tapechar_exit();
+ tape_class_exit();
tape_proc_cleanup();
debug_unregister (TAPE_DBF_AREA);
}
-MODULE_AUTHOR("(C) 2001 IBM Deutschland Entwicklung GmbH by Carsten Otte and "
- "Michael Holzheu (cotte@de.ibm.com,holzheu@de.ibm.com)");
-MODULE_DESCRIPTION("Linux on zSeries channel attached tape device driver");
+MODULE_AUTHOR("IBM Corporation");
+MODULE_DESCRIPTION("s390 channel-attached tape device driver");
MODULE_LICENSE("GPL");
module_init(tape_init);