[PATCH] s390: 3590 tape driver
Michael Holzheu <holzheu@de.ibm.com>, Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Stefan Bader <shbader@de.ibm.com> Signed-off-by: Michael Holzheu <holzheu@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
5f38433885
commit
b6cba4ee31
@ -183,7 +183,13 @@ config S390_TAPE_34XX
|
||||
tape subsystems and 100% compatibles.
|
||||
It is safe to say "Y" here.
|
||||
|
||||
|
||||
config S390_TAPE_3590
|
||||
tristate "Support for 3590 tape hardware"
|
||||
depends on S390_TAPE
|
||||
help
|
||||
Select this option if you want to access IBM 3590 magnetic
|
||||
tape subsystems and 100% compatibles.
|
||||
It is safe to say "Y" here.
|
||||
|
||||
config VMLOGRDR
|
||||
tristate "Support for the z/VM recording system services (VM only)"
|
||||
|
@ -26,4 +26,5 @@ 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_34XX) += tape_34xx.o
|
||||
obj-$(CONFIG_S390_TAPE_3590) += tape_3590.o
|
||||
obj-$(CONFIG_MONREADER) += monreader.o
|
||||
|
@ -2,8 +2,7 @@
|
||||
* drivers/s390/char/tape_34xx.c
|
||||
* tape device discipline for 3480/3490 tapes.
|
||||
*
|
||||
* S390 and zSeries version
|
||||
* Copyright (C) 2001,2002 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright (C) IBM Corp. 2001,2006
|
||||
* Author(s): Carsten Otte <cotte@de.ibm.com>
|
||||
* Tuan Ngo-Anh <ngoanh@de.ibm.com>
|
||||
* Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
@ -28,11 +27,6 @@
|
||||
debug_info_t *TAPE_DBF_AREA = NULL;
|
||||
EXPORT_SYMBOL(TAPE_DBF_AREA);
|
||||
|
||||
enum tape_34xx_type {
|
||||
tape_3480,
|
||||
tape_3490,
|
||||
};
|
||||
|
||||
#define TAPE34XX_FMT_3480 0
|
||||
#define TAPE34XX_FMT_3480_2_XF 1
|
||||
#define TAPE34XX_FMT_3480_XF 2
|
||||
|
1301
drivers/s390/char/tape_3590.c
Normal file
1301
drivers/s390/char/tape_3590.c
Normal file
File diff suppressed because it is too large
Load Diff
124
drivers/s390/char/tape_3590.h
Normal file
124
drivers/s390/char/tape_3590.h
Normal file
@ -0,0 +1,124 @@
|
||||
/*
|
||||
* drivers/s390/char/tape_3590.h
|
||||
* tape device discipline for 3590 tapes.
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2001,2006
|
||||
* Author(s): Stefan Bader <shbader@de.ibm.com>
|
||||
* Michael Holzheu <holzheu@de.ibm.com>
|
||||
* Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
*/
|
||||
|
||||
#ifndef _TAPE_3590_H
|
||||
#define _TAPE_3590_H
|
||||
|
||||
#define MEDIUM_SENSE 0xc2
|
||||
#define READ_PREVIOUS 0x0a
|
||||
#define MODE_SENSE 0xcf
|
||||
#define PERFORM_SS_FUNC 0x77
|
||||
#define READ_SS_DATA 0x3e
|
||||
|
||||
#define PREP_RD_SS_DATA 0x18
|
||||
#define RD_ATTMSG 0x3
|
||||
|
||||
#define SENSE_BRA_PER 0
|
||||
#define SENSE_BRA_CONT 1
|
||||
#define SENSE_BRA_RE 2
|
||||
#define SENSE_BRA_DRE 3
|
||||
|
||||
#define SENSE_FMT_LIBRARY 0x23
|
||||
#define SENSE_FMT_UNSOLICITED 0x40
|
||||
#define SENSE_FMT_COMMAND_REJ 0x41
|
||||
#define SENSE_FMT_COMMAND_EXEC0 0x50
|
||||
#define SENSE_FMT_COMMAND_EXEC1 0x51
|
||||
#define SENSE_FMT_EVENT0 0x60
|
||||
#define SENSE_FMT_EVENT1 0x61
|
||||
#define SENSE_FMT_MIM 0x70
|
||||
#define SENSE_FMT_SIM 0x71
|
||||
|
||||
#define MSENSE_UNASSOCIATED 0x00
|
||||
#define MSENSE_ASSOCIATED_MOUNT 0x01
|
||||
#define MSENSE_ASSOCIATED_UMOUNT 0x02
|
||||
|
||||
#define TAPE_3590_MAX_MSG 0xb0
|
||||
|
||||
/* Datatypes */
|
||||
|
||||
struct tape_3590_disc_data {
|
||||
unsigned char modeset_byte;
|
||||
int read_back_op;
|
||||
};
|
||||
|
||||
struct tape_3590_sense {
|
||||
|
||||
unsigned int command_rej:1;
|
||||
unsigned int interv_req:1;
|
||||
unsigned int bus_out_check:1;
|
||||
unsigned int eq_check:1;
|
||||
unsigned int data_check:1;
|
||||
unsigned int overrun:1;
|
||||
unsigned int def_unit_check:1;
|
||||
unsigned int assgnd_elsew:1;
|
||||
|
||||
unsigned int locate_fail:1;
|
||||
unsigned int inst_online:1;
|
||||
unsigned int reserved:1;
|
||||
unsigned int blk_seq_err:1;
|
||||
unsigned int begin_part:1;
|
||||
unsigned int wr_mode:1;
|
||||
unsigned int wr_prot:1;
|
||||
unsigned int not_cap:1;
|
||||
|
||||
unsigned int bra:2;
|
||||
unsigned int lc:3;
|
||||
unsigned int vlf_active:1;
|
||||
unsigned int stm:1;
|
||||
unsigned int med_pos:1;
|
||||
|
||||
unsigned int rac:8;
|
||||
|
||||
unsigned int rc_rqc:16;
|
||||
|
||||
unsigned int mc:8;
|
||||
|
||||
unsigned int sense_fmt:8;
|
||||
|
||||
union {
|
||||
struct {
|
||||
unsigned int emc:4;
|
||||
unsigned int smc:4;
|
||||
unsigned int sev:2;
|
||||
unsigned int reserved:6;
|
||||
unsigned int md:8;
|
||||
unsigned int refcode:8;
|
||||
unsigned int mid:16;
|
||||
unsigned int mp:16;
|
||||
unsigned char volid[6];
|
||||
unsigned int fid:8;
|
||||
} f70;
|
||||
struct {
|
||||
unsigned int emc:4;
|
||||
unsigned int smc:4;
|
||||
unsigned int sev:2;
|
||||
unsigned int reserved1:5;
|
||||
unsigned int mdf:1;
|
||||
unsigned char md[3];
|
||||
unsigned int simid:8;
|
||||
unsigned int uid:16;
|
||||
unsigned int refcode1:16;
|
||||
unsigned int refcode2:16;
|
||||
unsigned int refcode3:16;
|
||||
unsigned int reserved2:8;
|
||||
} f71;
|
||||
unsigned char data[14];
|
||||
} fmt;
|
||||
unsigned char pad[10];
|
||||
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct tape_3590_med_sense {
|
||||
unsigned int macst:4;
|
||||
unsigned int masst:4;
|
||||
char pad[127];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#endif /* _TAPE_3590_H */
|
@ -1,9 +1,8 @@
|
||||
/*
|
||||
* drivers/s390/char/tape_34xx.h
|
||||
* drivers/s390/char/tape_std.h
|
||||
* standard tape device functions for ibm tapes.
|
||||
*
|
||||
* S390 and zSeries version
|
||||
* Copyright (C) 2001,2002 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
||||
* Copyright (C) IBM Corp. 2001,2006
|
||||
* Author(s): Carsten Otte <cotte@de.ibm.com>
|
||||
* Tuan Ngo-Anh <ngoanh@de.ibm.com>
|
||||
* Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
@ -149,4 +148,11 @@ void tape_std_error_recovery_do_retry(struct tape_device *);
|
||||
void tape_std_error_recovery_read_opposite(struct tape_device *);
|
||||
void tape_std_error_recovery_HWBUG(struct tape_device *, int condno);
|
||||
|
||||
/* S390 tape types */
|
||||
enum s390_tape_type {
|
||||
tape_3480,
|
||||
tape_3490,
|
||||
tape_3590,
|
||||
};
|
||||
|
||||
#endif // _TAPE_STD_H
|
||||
|
Loading…
Reference in New Issue
Block a user