#include <linux/ide.h>
#include <linux/smp_lock.h>
#include <linux/completion.h>
+#include <linux/bitops.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <asm/unaligned.h>
-#include <asm/bitops.h>
/*
* partition
*/
#define IDETAPE_DEBUG_INFO 0
#define IDETAPE_DEBUG_LOG 0
-#define IDETAPE_DEBUG_LOG_VERBOSE 0
#define IDETAPE_DEBUG_BUGS 1
/*
*/
static idetape_chrdev_t idetape_chrdevs[MAX_HWIFS * MAX_DRIVES];
-#if IDETAPE_DEBUG_LOG_VERBOSE
-
-/*
- * DO NOT REMOVE, BUILDING A VERBOSE DEBUG SCHEME FOR ATAPI
- */
-
-char *idetape_sense_key_verbose(u8 idetape_sense_key)
-{
- switch (idetape_sense_key) {
- default: {
- char buf[22];
- sprintf(buf, "IDETAPE_SENSE (0x%02x)", idetape_sense_key);
- return(buf);
- }
-
- }
-}
-
-char *idetape_command_key_verbose(u8 idetape_command_key)
-{
- switch (idetape_command_key) {
- case IDETAPE_TEST_UNIT_READY_CMD:
- return("TEST_UNIT_READY_CMD");
- case IDETAPE_REWIND_CMD:
- return("REWIND_CMD");
- case IDETAPE_REQUEST_SENSE_CMD:
- return("REQUEST_SENSE_CMD");
- case IDETAPE_READ_CMD:
- return("READ_CMD");
- case IDETAPE_WRITE_CMD:
- return("WRITE_CMD");
- case IDETAPE_WRITE_FILEMARK_CMD:
- return("WRITE_FILEMARK_CMD");
- case IDETAPE_SPACE_CMD:
- return("SPACE_CMD");
- case IDETAPE_INQUIRY_CMD:
- return("INQUIRY_CMD");
- case IDETAPE_ERASE_CMD:
- return("ERASE_CMD");
- case IDETAPE_MODE_SENSE_CMD:
- return("MODE_SENSE_CMD");
- case IDETAPE_MODE_SELECT_CMD:
- return("MODE_SELECT_CMD");
- case IDETAPE_LOAD_UNLOAD_CMD:
- return("LOAD_UNLOAD_CMD");
- case IDETAPE_PREVENT_CMD:
- return("PREVENT_CMD");
- case IDETAPE_LOCATE_CMD:
- return("LOCATE_CMD");
- case IDETAPE_READ_POSITION_CMD:
- return("READ_POSITION_CMD");
- case IDETAPE_READ_BUFFER_CMD:
- return("READ_BUFFER_CMD");
- case IDETAPE_SET_SPEED_CMD:
- return("SET_SPEED_CMD");
- default: {
- char buf[20];
- sprintf(buf, "CMD (0x%02x)", idetape_command_key);
- return(buf);
- }
- }
-}
-#endif /* IDETAPE_DEBUG_LOG_VERBOSE */
-
/*
* Function declarations
*
"asc = %x, ascq = %x\n",
pc->c[0], result->sense_key,
result->asc, result->ascq);
-#if IDETAPE_DEBUG_LOG_VERBOSE
- if (tape->debug_level >= 1)
- printk(KERN_INFO "ide-tape: pc = %s, sense key = %x, "
- "asc = %x, ascq = %x\n",
- idetape_command_key_verbose((byte) pc->c[0]),
- result->sense_key,
- result->asc,
- result->ascq);
-#endif /* IDETAPE_DEBUG_LOG_VERBOSE */
#endif /* IDETAPE_DEBUG_LOG */
/*
#ifdef CONFIG_BLK_DEV_IDEDMA
/* Begin DMA, if necessary */
if (test_bit(PC_DMA_IN_PROGRESS, &pc->flags))
- (void) (HWIF(drive)->ide_dma_begin(drive));
+ hwif->dma_start(drive);
#endif
/* Send the actual packet */
HWIF(drive)->atapi_output_bytes(drive, pc->c, 12);
"reverting to PIO\n");
(void)__ide_dma_off(drive);
}
- if (test_bit(PC_DMA_RECOMMENDED, &pc->flags) && drive->using_dma) {
- if (test_bit(PC_WRITING, &pc->flags))
- dma_ok = !HWIF(drive)->ide_dma_write(drive);
- else
- dma_ok = !HWIF(drive)->ide_dma_read(drive);
- }
+ if (test_bit(PC_DMA_RECOMMENDED, &pc->flags) && drive->using_dma)
+ dma_ok = !hwif->dma_setup(drive);
if (IDE_CONTROL_REG)
hwif->OUTB(drive->ctl, IDE_CONTROL_REG);
tape->dsc_polling_start = jiffies;
tape->dsc_polling_frequency = tape->best_dsc_rw_frequency;
tape->dsc_timeout = jiffies + IDETAPE_DSC_RW_TIMEOUT;
- } else if ((signed long) (jiffies - tape->dsc_timeout) > 0) {
+ } else if (time_after(jiffies, tape->dsc_timeout)) {
printk(KERN_ERR "ide-tape: %s: DSC timeout\n",
tape->name);
if (rq->cmd[0] & REQ_IDETAPE_PC2) {