Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 133370
b: refs/heads/master
c: b6a45a0
h: refs/heads/master
v: v3
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Mar 24, 2009
1 parent 20da271 commit 1385be3
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 28 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 75a0cff4e8ed47584dd15fbde2172ebc4c051bb2
refs/heads/master: b6a45a0b1e9a358b81201659cf87b023e3ec73e0
23 changes: 23 additions & 0 deletions trunk/drivers/ide/ide-io.c
Original file line number Diff line number Diff line change
Expand Up @@ -887,6 +887,29 @@ static void ide_plug_device(ide_drive_t *drive)
spin_unlock_irqrestore(q->queue_lock, flags);
}

static int drive_is_ready(ide_drive_t *drive)
{
ide_hwif_t *hwif = drive->hwif;
u8 stat = 0;

if (drive->waiting_for_dma)
return hwif->dma_ops->dma_test_irq(drive);

if (hwif->io_ports.ctl_addr &&
(hwif->host_flags & IDE_HFLAG_BROKEN_ALTSTATUS) == 0)
stat = hwif->tp_ops->read_altstatus(hwif);
else
/* Note: this may clear a pending IRQ!! */
stat = hwif->tp_ops->read_status(hwif);

if (stat & ATA_BUSY)
/* drive busy: definitely not interrupting */
return 0;

/* drive ready: *might* be interrupting */
return 1;
}

/**
* ide_timer_expiry - handle lack of an IDE interrupt
* @data: timer callback magic (hwif)
Expand Down
25 changes: 0 additions & 25 deletions trunk/drivers/ide/ide-iops.c
Original file line number Diff line number Diff line change
Expand Up @@ -438,31 +438,6 @@ void ide_fixstring (u8 *s, const int bytecount, const int byteswap)

EXPORT_SYMBOL(ide_fixstring);

int drive_is_ready (ide_drive_t *drive)
{
ide_hwif_t *hwif = drive->hwif;
u8 stat = 0;

if (drive->waiting_for_dma)
return hwif->dma_ops->dma_test_irq(drive);

if (hwif->io_ports.ctl_addr &&
(hwif->host_flags & IDE_HFLAG_BROKEN_ALTSTATUS) == 0)
stat = hwif->tp_ops->read_altstatus(hwif);
else
/* Note: this may clear a pending IRQ!! */
stat = hwif->tp_ops->read_status(hwif);

if (stat & ATA_BUSY)
/* drive busy: definitely not interrupting */
return 0;

/* drive ready: *might* be interrupting */
return 1;
}

EXPORT_SYMBOL(drive_is_ready);

/*
* This routine busy-waits for the drive status to be not "busy".
* It then checks the status for all of the "good" bits and none
Expand Down
2 changes: 0 additions & 2 deletions trunk/include/linux/ide.h
Original file line number Diff line number Diff line change
Expand Up @@ -1200,8 +1200,6 @@ void SELECT_MASK(ide_drive_t *, int);
u8 ide_read_error(ide_drive_t *);
void ide_read_bcount_and_ireason(ide_drive_t *, u16 *, u8 *);

extern int drive_is_ready(ide_drive_t *);

int ide_check_atapi_device(ide_drive_t *, const char *);

void ide_init_pc(struct ide_atapi_pc *);
Expand Down

0 comments on commit 1385be3

Please sign in to comment.