/*
* drivers/s390/char/tape_3590.c
* 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>
*/
#include <linux/module.h>
#include <linux/init.h>
#include <linux/bio.h>
#define TAPE_DBF_AREA tape_3590_dbf
#include "tape.h"
#include "tape_std.h"
#include "tape_3590.h"
/*
* Pointer to debug area.
*/
debug_info_t *TAPE_DBF_AREA = NULL;
EXPORT_SYMBOL(TAPE_DBF_AREA);
/*******************************************************************
* Error Recovery fuctions:
* - Read Opposite: implemented
* - Read Device (buffered) log: BRA
* - Read Library log: BRA
* - Swap Devices: BRA
* - Long Busy: BRA
* - Special Intercept: BRA
* - Read Alternate: implemented
*******************************************************************/
#define PRINTK_HEADER "TAPE_3590: "
static const char *tape_3590_msg[TAPE_3590_MAX_MSG] = {
[0x00] = "",
[0x10] = "Lost Sense",
[0x11] = "Assigned Elsewhere",
[0x12] = "Allegiance Reset",
[0x13] = "Shared Access Violation",
[0x20] = "Command Reject",
[0x21] = "Configuration Error",
[0x22] = "Protection Exception",
[0x23] = "Write Protect",
[0x24] = "Write Length",
[0x25] = "Read-Only Format",
[0x31] = "Beginning of Partition",
[0x33] = "End of Partition",
[0x34] = "End of Data",
[0x35] = "Block not found",
[0x40] = "Device Intervention",
[0x41] = "Loader Intervention",
[0x42] = "Library Intervention",
[0x50] = "Write Error",
[0x51] = "Erase Error",
[0x52] = "Formatting Error",
[0x53] = "Read Error",
[0x54] = "Unsupported Format",
[0x55] = "No Formatting",
[0x56] = "Positioning lost",
[0x57] = "Read Length",
[0x60] = "Unsupported Medium",
[0x61] = "Medium Length Error",
[0x62] = "Medium removed",
[0x64] = "Load Check",
[0x65] = "Unload Check",
[0x70] = "Equipment Check",
[0x71] = "Bus out Check",
[0x72] = "Protocol Error",
[0x73] = "Interface Error",
[0x74] = "Overrun",
[0x75] = "Halt Signal",
[0x90]