ide: remove clearing bmdma status from cdrom_decode_status() (rev #4)
patch 2/2: Remove clearing bmdma status from cdrom_decode_status() since ATA devices might need it as well. (http://lkml.org/lkml/2006/12/4/201 and http://lkml.org/lkml/2006/11/15/94) Signed-off-by: Albert Lee <albertcc@tw.ibm.com> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: "Adam W. Hawks" <awhawks@us.ibm.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
Родитель
f0dd8712eb
Коммит
6e6cd4c438
|
@ -687,15 +687,8 @@ static void ide_dump_status_no_sense(ide_drive_t *drive, const char *msg, u8 sta
|
||||||
static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
||||||
{
|
{
|
||||||
struct request *rq = HWGROUP(drive)->rq;
|
struct request *rq = HWGROUP(drive)->rq;
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
|
||||||
int stat, err, sense_key;
|
int stat, err, sense_key;
|
||||||
|
|
||||||
/* We may have bogus DMA interrupts in PIO state here */
|
|
||||||
if (HWIF(drive)->dma_status && hwif->atapi_irq_bogon) {
|
|
||||||
stat = hwif->INB(hwif->dma_status);
|
|
||||||
/* Should we force the bit as well ? */
|
|
||||||
hwif->OUTB(stat, hwif->dma_status);
|
|
||||||
}
|
|
||||||
/* Check for errors. */
|
/* Check for errors. */
|
||||||
stat = HWIF(drive)->INB(IDE_STATUS_REG);
|
stat = HWIF(drive)->INB(IDE_STATUS_REG);
|
||||||
if (stat_ret)
|
if (stat_ret)
|
||||||
|
|
|
@ -501,10 +501,6 @@ static void __devinit init_hwif_piix(ide_hwif_t *hwif)
|
||||||
/* This is a painful system best to let it self tune for now */
|
/* This is a painful system best to let it self tune for now */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* ESB2 appears to generate spurious DMA interrupts in PIO mode
|
|
||||||
when in native mode */
|
|
||||||
if (hwif->pci_dev->device == PCI_DEVICE_ID_INTEL_ESB2_18)
|
|
||||||
hwif->atapi_irq_bogon = 1;
|
|
||||||
|
|
||||||
hwif->autodma = 0;
|
hwif->autodma = 0;
|
||||||
hwif->tuneproc = &piix_tune_drive;
|
hwif->tuneproc = &piix_tune_drive;
|
||||||
|
|
|
@ -808,7 +808,6 @@ typedef struct hwif_s {
|
||||||
unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */
|
unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */
|
||||||
unsigned no_io_32bit : 1; /* 1 = can not do 32-bit IO ops */
|
unsigned no_io_32bit : 1; /* 1 = can not do 32-bit IO ops */
|
||||||
unsigned err_stops_fifo : 1; /* 1=data FIFO is cleared by an error */
|
unsigned err_stops_fifo : 1; /* 1=data FIFO is cleared by an error */
|
||||||
unsigned atapi_irq_bogon : 1; /* Generates spurious DMA interrupts in PIO mode */
|
|
||||||
|
|
||||||
struct device gendev;
|
struct device gendev;
|
||||||
struct completion gendev_rel_comp; /* To deal with device release() */
|
struct completion gendev_rel_comp; /* To deal with device release() */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче