Commit 302f5bc5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 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
parents 18cb657c dd8717da
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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)
{
	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;

		pci_read_config_word(dev, mcr_addr, &mcr);
		pci_write_config_word(dev, mcr_addr, (mcr | 0x8000));
		/* now read cable id register */
		pci_write_config_word(dev, mcr_addr, mcr | 0x8000);
		/* Debounce, then read cable ID register */
		udelay(10);
		pci_read_config_byte(dev, 0x5a, &scr1);
		pci_write_config_word(dev, mcr_addr, mcr);
	} else if (chip_type >= HPT370) {
@@ -1185,8 +1186,9 @@ static u8 hpt3xx_cable_detect(ide_hwif_t *hwif)
		u8 scr2 = 0;

		pci_read_config_byte(dev, 0x5b, &scr2);
		pci_write_config_byte(dev, 0x5b, (scr2 & ~1));
		/* now read cable id register */
		pci_write_config_byte(dev, 0x5b, scr2 & ~1);
		/* Debounce, then read cable ID register */
		udelay(10);
		pci_read_config_byte(dev, 0x5a, &scr1);
		pci_write_config_byte(dev, 0x5b, scr2);
	} else
+3 −8
Original line number Diff line number Diff line
@@ -449,7 +449,6 @@ ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error)
	ide_hwif_t *hwif = drive->hwif;
	const struct ide_dma_ops *dma_ops = hwif->dma_ops;
	struct ide_cmd *cmd = &hwif->cmd;
	struct request *rq;
	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);

	/*
	 * un-busy drive etc and make sure request is sane
	 * make sure request is sane
	 */
	rq = hwif->rq;
	if (rq) {
		hwif->rq = NULL;
		rq->errors = 0;
		ide_requeue_and_plug(drive, rq);
	}
	if (hwif->rq)
		hwif->rq->errors = 0;
	return ret;
}