diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-29 11:03:30 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-29 11:03:30 -0400 |
| commit | 302f5bc54448bd2b37d5a8be9b6abc29397827ef (patch) | |
| tree | 3486f92b13f6b53dd28388c1f2e5f33dc9866f20 | |
| parent | 18cb657ca1bafe635f368346a1676fb04c512edf (diff) | |
| parent | dd8717da6da9b0e745df49762be4573010f1013c (diff) | |
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
| -rw-r--r-- | drivers/ide/hpt366.c | 14 | ||||
| -rw-r--r-- | drivers/ide/ide-dma.c | 11 |
2 files changed, 11 insertions, 14 deletions
diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c index 97d98fbf5849..58c51cddc100 100644 --- a/drivers/ide/hpt366.c +++ b/drivers/ide/hpt366.c | |||
| @@ -838,7 +838,7 @@ static void hpt3xxn_set_clock(ide_hwif_t *hwif, u8 mode) | |||
| 838 | 838 | ||
| 839 | static void hpt3xxn_rw_disk(ide_drive_t *drive, struct request *rq) | 839 | static void hpt3xxn_rw_disk(ide_drive_t *drive, struct request *rq) |
| 840 | { | 840 | { |
| 841 | hpt3xxn_set_clock(drive->hwif, rq_data_dir(rq) ? 0x23 : 0x21); | 841 | hpt3xxn_set_clock(drive->hwif, rq_data_dir(rq) ? 0x21 : 0x23); |
| 842 | } | 842 | } |
| 843 | 843 | ||
| 844 | /** | 844 | /** |
| @@ -1173,8 +1173,9 @@ static u8 hpt3xx_cable_detect(ide_hwif_t *hwif) | |||
| 1173 | u16 mcr; | 1173 | u16 mcr; |
| 1174 | 1174 | ||
| 1175 | pci_read_config_word(dev, mcr_addr, &mcr); | 1175 | pci_read_config_word(dev, mcr_addr, &mcr); |
| 1176 | pci_write_config_word(dev, mcr_addr, (mcr | 0x8000)); | 1176 | pci_write_config_word(dev, mcr_addr, mcr | 0x8000); |
| 1177 | /* now read cable id register */ | 1177 | /* Debounce, then read cable ID register */ |
| 1178 | udelay(10); | ||
| 1178 | pci_read_config_byte(dev, 0x5a, &scr1); | 1179 | pci_read_config_byte(dev, 0x5a, &scr1); |
| 1179 | pci_write_config_word(dev, mcr_addr, mcr); | 1180 | pci_write_config_word(dev, mcr_addr, mcr); |
| 1180 | } else if (chip_type >= HPT370) { | 1181 | } else if (chip_type >= HPT370) { |
| @@ -1185,10 +1186,11 @@ static u8 hpt3xx_cable_detect(ide_hwif_t *hwif) | |||
| 1185 | u8 scr2 = 0; | 1186 | u8 scr2 = 0; |
| 1186 | 1187 | ||
| 1187 | pci_read_config_byte(dev, 0x5b, &scr2); | 1188 | pci_read_config_byte(dev, 0x5b, &scr2); |
| 1188 | pci_write_config_byte(dev, 0x5b, (scr2 & ~1)); | 1189 | pci_write_config_byte(dev, 0x5b, scr2 & ~1); |
| 1189 | /* now read cable id register */ | 1190 | /* Debounce, then read cable ID register */ |
| 1191 | udelay(10); | ||
| 1190 | pci_read_config_byte(dev, 0x5a, &scr1); | 1192 | pci_read_config_byte(dev, 0x5a, &scr1); |
| 1191 | pci_write_config_byte(dev, 0x5b, scr2); | 1193 | pci_write_config_byte(dev, 0x5b, scr2); |
| 1192 | } else | 1194 | } else |
| 1193 | pci_read_config_byte(dev, 0x5a, &scr1); | 1195 | pci_read_config_byte(dev, 0x5a, &scr1); |
| 1194 | 1196 | ||
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c index 06b14bc9a1d4..d4136908f916 100644 --- a/drivers/ide/ide-dma.c +++ b/drivers/ide/ide-dma.c | |||
| @@ -449,7 +449,6 @@ ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error) | |||
| 449 | ide_hwif_t *hwif = drive->hwif; | 449 | ide_hwif_t *hwif = drive->hwif; |
| 450 | const struct ide_dma_ops *dma_ops = hwif->dma_ops; | 450 | const struct ide_dma_ops *dma_ops = hwif->dma_ops; |
| 451 | struct ide_cmd *cmd = &hwif->cmd; | 451 | struct ide_cmd *cmd = &hwif->cmd; |
| 452 | struct request *rq; | ||
| 453 | ide_startstop_t ret = ide_stopped; | 452 | ide_startstop_t ret = ide_stopped; |
| 454 | 453 | ||
| 455 | /* | 454 | /* |
| @@ -487,14 +486,10 @@ ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error) | |||
| 487 | ide_dma_off_quietly(drive); | 486 | ide_dma_off_quietly(drive); |
| 488 | 487 | ||
| 489 | /* | 488 | /* |
| 490 | * un-busy drive etc and make sure request is sane | 489 | * make sure request is sane |
| 491 | */ | 490 | */ |
| 492 | rq = hwif->rq; | 491 | if (hwif->rq) |
| 493 | if (rq) { | 492 | hwif->rq->errors = 0; |
| 494 | hwif->rq = NULL; | ||
| 495 | rq->errors = 0; | ||
| 496 | ide_requeue_and_plug(drive, rq); | ||
| 497 | } | ||
| 498 | return ret; | 493 | return ret; |
| 499 | } | 494 | } |
| 500 | 495 | ||
