patch-2.3.1 linux/drivers/block/ide-tape.c
Next file: linux/drivers/block/ide.c
Previous file: linux/drivers/block/ide-proc.c
Back to the patch index
Back to the overall index
- Lines: 131
- Date:
Thu May 13 11:04:54 1999
- Orig file:
v2.3.0/linux/drivers/block/ide-tape.c
- Orig date:
Fri Jan 8 10:04:58 1999
diff -u --recursive --new-file v2.3.0/linux/drivers/block/ide-tape.c linux/drivers/block/ide-tape.c
@@ -338,6 +338,8 @@
#include <linux/errno.h>
#include <linux/genhd.h>
#include <linux/malloc.h>
+#include <linux/pci.h>
+#include <linux/ide.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
@@ -347,11 +349,6 @@
#include <asm/bitops.h>
/*
- * Main Linux ide driver include file
- */
-#include "ide.h"
-
-/*
* For general magnetic tape device compatibility.
*/
#include <linux/mtio.h>
@@ -401,6 +398,7 @@
/*
* The following are used to debug the driver:
*
+ * Setting IDETAPE_INFO_LOG to 1 will log driver vender information.
* Setting IDETAPE_DEBUG_LOG to 1 will log driver flow control.
* Setting IDETAPE_DEBUG_BUGS to 1 will enable self-sanity checks in
* some places.
@@ -415,9 +413,15 @@
* is verified to be stable enough. This will make it much more
* esthetic.
*/
+#define IDETAPE_INFO_LOG 0
#define IDETAPE_DEBUG_LOG 0
#define IDETAPE_DEBUG_BUGS 1
+#if IDETAPE_DEBUG_LOG
+#undef IDETAPE_INFO_LOG
+#define IDETAPE_INFO_LOG IDETAPE_DEBUG_LOG
+#endif
+
/*
* After each failed packet command we issue a request sense command
* and retry the packet command IDETAPE_MAX_PC_RETRIES times.
@@ -1968,7 +1972,8 @@
dma_ok=!HWIF(drive)->dmaproc(test_bit (PC_WRITING, &pc->flags) ? ide_dma_write : ide_dma_read, drive);
#endif /* CONFIG_BLK_DEV_IDEDMA */
- OUT_BYTE (drive->ctl,IDE_CONTROL_REG);
+ if (IDE_CONTROL_REG)
+ OUT_BYTE (drive->ctl,IDE_CONTROL_REG);
OUT_BYTE (dma_ok ? 1:0,IDE_FEATURE_REG); /* Use PIO/DMA */
OUT_BYTE (bcount.b.high,IDE_BCOUNTH_REG);
OUT_BYTE (bcount.b.low,IDE_BCOUNTL_REG);
@@ -2334,7 +2339,7 @@
*/
static void idetape_wait_for_request (ide_drive_t *drive, struct request *rq)
{
- struct semaphore sem = MUTEX_LOCKED;
+ DECLARE_MUTEX_LOCKED(sem);
#if IDETAPE_DEBUG_BUGS
if (rq == NULL || !IDETAPE_RQ_CMD (rq->cmd)) {
@@ -3337,16 +3342,16 @@
static int idetape_identify_device (ide_drive_t *drive,struct hd_driveid *id)
{
struct idetape_id_gcw gcw;
-#if IDETAPE_DEBUG_LOG
+#if IDETAPE_INFO_LOG
unsigned short mask,i;
-#endif /* IDETAPE_DEBUG_LOG */
+#endif /* IDETAPE_INFO_LOG */
if (!id)
return 0;
*((unsigned short *) &gcw) = id->config;
-#if IDETAPE_DEBUG_LOG
+#if IDETAPE_INFO_LOG
printk (KERN_INFO "Dumping ATAPI Identify Device tape parameters\n");
printk (KERN_INFO "Protocol Type: ");
switch (gcw.protocol) {
@@ -3434,7 +3439,7 @@
} else
printk (KERN_INFO "According to the device, fields 64-70 are not valid.\n");
-#endif /* IDETAPE_DEBUG_LOG */
+#endif /* IDETAPE_INFO_LOG */
/* Check that we can support this device */
@@ -3491,7 +3496,7 @@
tape->capabilities = *capabilities; /* Save us a copy */
tape->tape_block_size = capabilities->blk512 ? 512:1024;
-#if IDETAPE_DEBUG_LOG
+#if IDETAPE_INFO_LOG
printk (KERN_INFO "Dumping the results of the MODE SENSE packet command\n");
printk (KERN_INFO "Mode Parameter Header:\n");
printk (KERN_INFO "Mode Data Length - %d\n",header->mode_data_length);
@@ -3519,7 +3524,7 @@
printk (KERN_INFO "Continuous transfer limits in blocks - %d\n",capabilities->ctl);
printk (KERN_INFO "Current speed in KBps - %d\n",capabilities->speed);
printk (KERN_INFO "Buffer size - %d\n",capabilities->buffer_size*512);
-#endif /* IDETAPE_DEBUG_LOG */
+#endif /* IDETAPE_INFO_LOG */
}
static void idetape_add_settings(ide_drive_t *drive)
@@ -3561,7 +3566,18 @@
drive->driver_data = tape;
drive->ready_stat = 0; /* An ATAPI device ignores DRDY */
- drive->dsc_overlap = 1;
+#ifdef CONFIG_BLK_DEV_IDEPCI
+ /*
+ * These two ide-pci host adapters appear to need this disabled.
+ */
+ if ((hwif->pci_dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) ||
+ (hwif->pci_dev->device == PCI_DEVICE_ID_TTI_HPT343)) {
+ drive->dsc_overlap = 0;
+ } else
+#endif /* CONFIG_BLK_DEV_IDEPCI */
+ {
+ drive->dsc_overlap = 1;
+ }
memset (tape, 0, sizeof (idetape_tape_t));
tape->drive = drive;
tape->minor = minor;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)