diff options
| author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-06-07 15:37:10 +0200 | 
|---|---|---|
| committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-06-07 15:37:10 +0200 | 
| commit | 734affdcae20af4fec95e46a64fb29f063a15c19 (patch) | |
| tree | 68b3867575b363253fca17dcd239664149a6f1a2 | |
| parent | 8bc1e5aa06a2a9a425c4a6795fc564cba1521487 (diff) | |
| download | olio-linux-3.10-734affdcae20af4fec95e46a64fb29f063a15c19.tar.xz olio-linux-3.10-734affdcae20af4fec95e46a64fb29f063a15c19.zip  | |
ide: add IDE_DFLAG_NIEN_QUIRK device flag
Add IDE_DFLAG_NIEN_QUIRK device flag and use it instead of
drive->quirk_list.
There should be no functional changes caused by this patch.
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| -rw-r--r-- | drivers/ide/hpt366.c | 2 | ||||
| -rw-r--r-- | drivers/ide/ide-eh.c | 5 | ||||
| -rw-r--r-- | drivers/ide/ide-io.c | 8 | ||||
| -rw-r--r-- | drivers/ide/ide-iops.c | 6 | ||||
| -rw-r--r-- | include/linux/ide.h | 2 | 
5 files changed, 13 insertions, 10 deletions
diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c index a2e9f6c65a9..7ce68ef6b90 100644 --- a/drivers/ide/hpt366.c +++ b/drivers/ide/hpt366.c @@ -727,7 +727,7 @@ static void hpt3xx_maskproc(ide_drive_t *drive, int mask)  	struct pci_dev	*dev	= to_pci_dev(hwif->dev);  	struct hpt_info *info	= hpt3xx_get_info(hwif->dev); -	if (drive->quirk_list == 0) +	if ((drive->dev_flags & IDE_DFLAG_NIEN_QUIRK) == 0)  		return;  	if (info->chip_type >= HPT370) { diff --git a/drivers/ide/ide-eh.c b/drivers/ide/ide-eh.c index 39d589254d4..2b914197961 100644 --- a/drivers/ide/ide-eh.c +++ b/drivers/ide/ide-eh.c @@ -407,8 +407,9 @@ static ide_startstop_t do_reset1(ide_drive_t *drive, int do_not_try_atapi)  	/* more than enough time */  	udelay(10);  	/* clear SRST, leave nIEN (unless device is on the quirk list) */ -	tp_ops->write_devctl(hwif, (drive->quirk_list == 2 ? 0 : ATA_NIEN) | -			     ATA_DEVCTL_OBS); +	tp_ops->write_devctl(hwif, +		((drive->dev_flags & IDE_DFLAG_NIEN_QUIRK) ? 0 : ATA_NIEN) | +		 ATA_DEVCTL_OBS);  	/* more than enough time */  	udelay(10);  	hwif->poll_timeout = jiffies + WAIT_WORSTCASE; diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 9654bd34cf5..243cf6561e7 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c @@ -488,11 +488,15 @@ repeat:  		if ((hwif->host->host_flags & IDE_HFLAG_SERIALIZE) &&  		    hwif != prev_port) { +			ide_drive_t *cur_dev = +				prev_port ? prev_port->cur_dev : NULL; +  			/*  			 * set nIEN for previous port, drives in the -			 * quirk_list may not like intr setups/cleanups +			 * quirk list may not like intr setups/cleanups  			 */ -			if (prev_port && prev_port->cur_dev->quirk_list == 0) +			if (cur_dev && +			    (cur_dev->dev_flags & IDE_DFLAG_NIEN_QUIRK) == 0)  				prev_port->tp_ops->write_devctl(prev_port,  								ATA_NIEN |  								ATA_DEVCTL_OBS); diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index c55349537c2..fa047150a1c 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c @@ -300,11 +300,9 @@ void ide_check_nien_quirk_list(ide_drive_t *drive)  	for (list = nien_quirk_list; *list != NULL; list++)  		if (strstr(m, *list) != NULL) { -			drive->quirk_list = 2; +			drive->dev_flags |= IDE_DFLAG_NIEN_QUIRK;  			return;  		} - -	drive->quirk_list = 0;  }  int ide_driveid_update(ide_drive_t *drive) @@ -389,7 +387,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)  	tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES); -	if (drive->quirk_list == 2) +	if (drive->dev_flags & IDE_DFLAG_NIEN_QUIRK)  		tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);  	error = __ide_wait_stat(drive, drive->ready_stat, diff --git a/include/linux/ide.h b/include/linux/ide.h index 6caaae0c774..a6c6a2fad7c 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h @@ -499,6 +499,7 @@ enum {  	/* write protect */  	IDE_DFLAG_WP			= (1 << 29),  	IDE_DFLAG_FORMAT_IN_PROGRESS	= (1 << 30), +	IDE_DFLAG_NIEN_QUIRK		= (1 << 31),  };  struct ide_drive_s { @@ -530,7 +531,6 @@ struct ide_drive_s {  	u8	waiting_for_dma;	/* dma currently in progress */  	u8	dma;			/* atapi dma flag */ -        u8	quirk_list;	/* considered quirky, set for a specific host */          u8	init_speed;	/* transfer rate set at boot */          u8	current_speed;	/* current transfer rate set */  	u8	desired_speed;	/* desired transfer rate set */  |