Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6: ide: clean up timed out request handling hpt366: fix clock turnaround hpt366: add debounce delay to cable_detect() method
This commit is contained in:
@@ -838,7 +838,7 @@ static void hpt3xxn_set_clock(ide_hwif_t *hwif, u8 mode)
|
|||||||
|
|
||||||
static void hpt3xxn_rw_disk(ide_drive_t *drive, struct request *rq)
|
static void hpt3xxn_rw_disk(ide_drive_t *drive, struct request *rq)
|
||||||
{
|
{
|
||||||
hpt3xxn_set_clock(drive->hwif, rq_data_dir(rq) ? 0x23 : 0x21);
|
hpt3xxn_set_clock(drive->hwif, rq_data_dir(rq) ? 0x21 : 0x23);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1173,8 +1173,9 @@ static u8 hpt3xx_cable_detect(ide_hwif_t *hwif)
|
|||||||
u16 mcr;
|
u16 mcr;
|
||||||
|
|
||||||
pci_read_config_word(dev, mcr_addr, &mcr);
|
pci_read_config_word(dev, mcr_addr, &mcr);
|
||||||
pci_write_config_word(dev, mcr_addr, (mcr | 0x8000));
|
pci_write_config_word(dev, mcr_addr, mcr | 0x8000);
|
||||||
/* now read cable id register */
|
/* Debounce, then read cable ID register */
|
||||||
|
udelay(10);
|
||||||
pci_read_config_byte(dev, 0x5a, &scr1);
|
pci_read_config_byte(dev, 0x5a, &scr1);
|
||||||
pci_write_config_word(dev, mcr_addr, mcr);
|
pci_write_config_word(dev, mcr_addr, mcr);
|
||||||
} else if (chip_type >= HPT370) {
|
} else if (chip_type >= HPT370) {
|
||||||
@@ -1185,8 +1186,9 @@ static u8 hpt3xx_cable_detect(ide_hwif_t *hwif)
|
|||||||
u8 scr2 = 0;
|
u8 scr2 = 0;
|
||||||
|
|
||||||
pci_read_config_byte(dev, 0x5b, &scr2);
|
pci_read_config_byte(dev, 0x5b, &scr2);
|
||||||
pci_write_config_byte(dev, 0x5b, (scr2 & ~1));
|
pci_write_config_byte(dev, 0x5b, scr2 & ~1);
|
||||||
/* now read cable id register */
|
/* Debounce, then read cable ID register */
|
||||||
|
udelay(10);
|
||||||
pci_read_config_byte(dev, 0x5a, &scr1);
|
pci_read_config_byte(dev, 0x5a, &scr1);
|
||||||
pci_write_config_byte(dev, 0x5b, scr2);
|
pci_write_config_byte(dev, 0x5b, scr2);
|
||||||
} else
|
} else
|
||||||
|
@@ -449,7 +449,6 @@ ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error)
|
|||||||
ide_hwif_t *hwif = drive->hwif;
|
ide_hwif_t *hwif = drive->hwif;
|
||||||
const struct ide_dma_ops *dma_ops = hwif->dma_ops;
|
const struct ide_dma_ops *dma_ops = hwif->dma_ops;
|
||||||
struct ide_cmd *cmd = &hwif->cmd;
|
struct ide_cmd *cmd = &hwif->cmd;
|
||||||
struct request *rq;
|
|
||||||
ide_startstop_t ret = ide_stopped;
|
ide_startstop_t ret = ide_stopped;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -487,14 +486,10 @@ ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error)
|
|||||||
ide_dma_off_quietly(drive);
|
ide_dma_off_quietly(drive);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* un-busy drive etc and make sure request is sane
|
* make sure request is sane
|
||||||
*/
|
*/
|
||||||
rq = hwif->rq;
|
if (hwif->rq)
|
||||||
if (rq) {
|
hwif->rq->errors = 0;
|
||||||
hwif->rq = NULL;
|
|
||||||
rq->errors = 0;
|
|
||||||
ide_requeue_and_plug(drive, rq);
|
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user