Skip to contentSkip to conversation

ide: remove hwif->intrproc

PATCH In review Bartlomiej Zolnierkiewicz 5 participants 6 messages Oct 30, 2007 – Nov 8, 2007 libata

lore
Share & tools
lore
#0 lore raw

PATCH 13/15 ide: remove hwif->intrproc

Given that:

* hpt366.c::hpt3xx_intrproc() is the only user of hwif->intrproc

* hpt366.c::hpt3xx_quirkproc() sets drive->quirk_list to 1 for quirky drives which is a value unique to hpt366 host driver

we can remove hwif->intproc and just check for drive->quirk_list == 1 in ide_do_request().

---
Handling of quirky drives (problems with nIEN) by hpt366 and pdc202xx_* looks suspicious... are the problems really dependent on the host type (thus hwif->quirkproc and ->quirk_list == 1/2)? Shouldn't we just handle quirky drives in the same way in the core IDE code regardless of the host driver being used (of course using hwif->maskproc where needed)?

 drivers/ide/ide-io.c      |    9 +++++----
 drivers/ide/pci/hpt366.c  |   10 ----------
 drivers/ide/pci/sgiioc4.c |    1 -
 include/linux/ide.h       |    2 --
 4 files changed, 5 insertions(+), 17 deletions(-)
drivers/ide/ide-io.c +5 -4
Index: b/drivers/ide/ide-io.c
===================================================================
@@ -1198,10 +1198,11 @@ static void ide_do_request (ide_hwgroup_
 		if (hwgroup->hwif->sharing_irq &&
 		    hwif != hwgroup->hwif &&
 		    hwif->io_ports[IDE_CONTROL_OFFSET]) {
-			/* set nIEN for previous hwif */
-			if (hwif->intrproc)
-				hwif->intrproc(drive);
-			else
+			/*
+			 * set nIEN for previous hwif, drives in the
+			 * quirk_list may not like intr setups/cleanups
+			 */
+			if (drive->quirk_list != 1)
 				hwif->OUTB(drive->ctl | 2, IDE_CONTROL_REG);
 		}
 		hwgroup->hwif = hwif;
drivers/ide/pci/hpt366.c +0 -10
Index: b/drivers/ide/pci/hpt366.c
===================================================================
@@ -687,15 +687,6 @@ static int hpt3xx_quirkproc(ide_drive_t 
 	return 0;
 }
 
-static void hpt3xx_intrproc(ide_drive_t *drive)
-{
-	if (drive->quirk_list)
-		return;
-
-	/* drives in the quirk_list may not like intr setups/cleanups */
-	outb(drive->ctl | 2, IDE_CONTROL_REG);
-}
-
 static void hpt3xx_maskproc(ide_drive_t *drive, int mask)
 {
 	ide_hwif_t *hwif	= HWIF(drive);
@@ -1253,7 +1244,6 @@ static void __devinit init_hwif_hpt366(i
 	hwif->set_pio_mode	= &hpt3xx_set_pio_mode;
 	hwif->set_dma_mode	= &hpt3xx_set_mode;
 	hwif->quirkproc		= &hpt3xx_quirkproc;
-	hwif->intrproc		= &hpt3xx_intrproc;
 	hwif->maskproc		= &hpt3xx_maskproc;
 	hwif->busproc		= &hpt3xx_busproc;
 
drivers/ide/pci/sgiioc4.c +0 -1
Index: b/drivers/ide/pci/sgiioc4.c
===================================================================
@@ -582,7 +582,6 @@ ide_init_sgiioc4(ide_hwif_t * hwif)
 	hwif->pre_reset = NULL;	/* No HBA specific pre_set needed */
 	hwif->resetproc = &sgiioc4_resetproc;/* Reset DMA engine,
 						clear interrupts */
-	hwif->intrproc = NULL;	/* Enable or Disable interrupt from drive */
 	hwif->maskproc = &sgiioc4_maskproc;	/* Mask on/off NIEN register */
 	hwif->quirkproc = NULL;
 	hwif->busproc = NULL;
include/linux/ide.h +0 -2
Index: b/include/linux/ide.h
===================================================================
@@ -524,8 +524,6 @@ typedef struct hwif_s {
 	void	(*pre_reset)(ide_drive_t *);
 	/* routine to reset controller after a disk reset */
 	void	(*resetproc)(ide_drive_t *);
-	/* special interrupt handling for shared pci interrupts */
-	void	(*intrproc)(ide_drive_t *);
 	/* special host masking for drive selection */
 	void	(*maskproc)(ide_drive_t *, int);
 	/* check host's drive quirk list */
Acked-by on v1 13/15
#1 lore raw

Hello.

Quoted 11 lines · Bartlomiej Zolnierkiewicz

Given that:

* hpt366.c::hpt3xx_intrproc() is the only user of hwif->intrproc

* hpt366.c::hpt3xx_quirkproc() sets drive->quirk_list to 1 for quirky drives which is a value unique to hpt366 host driver

we can remove hwif->intproc and just check for drive->quirk_list == 1 in ide_do_request().

Quoted 6 lines

---
Handling of quirky drives (problems with nIEN) by hpt366 and pdc202xx_* looks suspicious... are the problems really dependent on the host type (thus hwif->quirkproc and ->quirk_list == 1/2)? Shouldn't we just handle quirky drives in the same way in the core IDE code regardless of the host driver being used (of course using hwif->maskproc where needed)?

Indeed...

MBR, Sergei

#2 lore raw
Quoted 3 lines
Quoted 1 line · Bartlomiej Zolnierkiewicz

* hpt366.c::hpt3xx_intrproc() is the only user of hwif->intrproc

..

Speaking of which..

I believe I have a small PCI card here with an HPT366 chip on it. Does anyone there want it before I throw it away?

-ml

#3 lore raw
Quoted 9 lines · Mark Lord
Quoted 3 lines
Quoted 1 line · Bartlomiej Zolnierkiewicz

* hpt366.c::hpt3xx_intrproc() is the only user of hwif->intrproc

..

Speaking of which..

I believe I have a small PCI card here with an HPT366 chip on it. Does anyone there want it before I throw it away?

I already have a 372. It should be almost the same, right?

Signature · 1 line
tejun
#4 lore raw
Quoted 4 lines · Tejun Heo
Quoted 2 lines

I believe I have a small PCI card here with an HPT366 chip on it. Does anyone there want it before I throw it away?

I already have a 372. It should be almost the same, right?

They are not very similar no. HPT37x is a progression from the 366 but quite different

#5 lore raw
Quoted 7 lines · Alan Cox
Quoted 3 lines · Tejun Heo
Quoted 2 lines

I believe I have a small PCI card here with an HPT366 chip on it. Does anyone there want it before I throw it away?

I already have a 372. It should be almost the same, right?

They are not very similar no. HPT37x is a progression from the 366 but quite different

Alright, then, if no one else wants it, please send it to me. I can pay for the shipping via paypal. :-)

Signature · 1 line
tejun