summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMartin Dalecki <dalecki@evision-ventures.com>2002-05-17 09:47:35 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-05-17 09:47:35 -0700
commit5ff49f70e3e9d78b213bd773c4298626fea22ffd (patch)
tree585c09d794032f2fbc3ce384294c94761e1f9f72 /include
parent938f5b7250c5dcba9610b0936d50b2d5bb968d72 (diff)
[PATCH] 2.5.15 IDE 62a
- Streamline device detection reporting to always use ->slot_name. - Apply 64 bit sector size fixes to the overall code. - Push ->handler down to the struct ata_channel. - Introduce channel group based locking instead of a single global lock for all operations. There are still some places where we have preserved the ide_lock. We can't lock for queues during device probe and we protect global data structures during device registration and unregistration in ide.c with it. - Start replacement of serialized access to the registers of channels which share them with proper host chip driver specific locking. This affects the following host chip drivers: cmd640.c, rz1000, ... ? Seems some are setting the serialize flag just in case. So better let's do it gradually over time. Well, I still have to think whatever we really need to put channels sharing an IRQ line in the same locking group. From now on the sick concept of a hw group is gone now. We have full blown per channel request queues! Hopefully I will be able soon to get my hands on a dual Athlon machine to check how this all behaves on a multi SMP machine. - Move the whole SUPPORT_VLB_SYNC stuff to the only place where it is used: the pdc4030 host chip driver. Eliminate it from the global driver part. - Eliminate pseudo portability macros from pdc4030. This is a host chip firmly based on VLB.
Diffstat (limited to 'include')
-rw-r--r--include/asm-cris/ide.h3
-rw-r--r--include/asm-m68k/ide.h3
-rw-r--r--include/asm-mips/ide.h3
-rw-r--r--include/asm-ppc/ide.h2
-rw-r--r--include/asm-sparc/ide.h3
-rw-r--r--include/asm-sparc64/ide.h3
-rw-r--r--include/linux/ide.h25
7 files changed, 7 insertions, 35 deletions
diff --git a/include/asm-cris/ide.h b/include/asm-cris/ide.h
index ac8dc923acc2..a2bada17408b 100644
--- a/include/asm-cris/ide.h
+++ b/include/asm-cris/ide.h
@@ -90,9 +90,6 @@ static __inline__ void ide_init_default_hwifs(void)
/* some configuration options we don't need */
-#undef SUPPORT_VLB_SYNC
-#define SUPPORT_VLB_SYNC 0
-
#undef SUPPORT_SLOW_DATA_PORTS
#define SUPPORT_SLOW_DATA_PORTS 0
diff --git a/include/asm-m68k/ide.h b/include/asm-m68k/ide.h
index 07da86fbd6be..28c7e66668ea 100644
--- a/include/asm-m68k/ide.h
+++ b/include/asm-m68k/ide.h
@@ -83,9 +83,6 @@ static __inline__ void ide_init_default_hwifs(void)
#undef SUPPORT_SLOW_DATA_PORTS
#define SUPPORT_SLOW_DATA_PORTS 0
-#undef SUPPORT_VLB_SYNC
-#define SUPPORT_VLB_SYNC 0
-
/* this definition is used only on startup .. */
#undef HD_DATA
#define HD_DATA NULL
diff --git a/include/asm-mips/ide.h b/include/asm-mips/ide.h
index 4ad64b0cca63..aca543ae9d55 100644
--- a/include/asm-mips/ide.h
+++ b/include/asm-mips/ide.h
@@ -65,9 +65,6 @@ static __inline__ void ide_init_default_hwifs(void)
#endif
}
-#undef SUPPORT_VLB_SYNC
-#define SUPPORT_VLB_SYNC 0
-
#endif /* __KERNEL__ */
#endif /* __ASM_IDE_H */
diff --git a/include/asm-ppc/ide.h b/include/asm-ppc/ide.h
index 616d7b87994e..be611cb54aaf 100644
--- a/include/asm-ppc/ide.h
+++ b/include/asm-ppc/ide.h
@@ -43,8 +43,6 @@ extern struct ide_machdep_calls ppc_ide_md;
#undef SUPPORT_SLOW_DATA_PORTS
#define SUPPORT_SLOW_DATA_PORTS 0
-#undef SUPPORT_VLB_SYNC
-#define SUPPORT_VLB_SYNC 0
#define ide__sti() __sti()
diff --git a/include/asm-sparc/ide.h b/include/asm-sparc/ide.h
index 54a01e5ea900..224ec3b3e085 100644
--- a/include/asm-sparc/ide.h
+++ b/include/asm-sparc/ide.h
@@ -76,9 +76,6 @@ static __inline__ void ide_init_default_hwifs(void)
#undef SUPPORT_SLOW_DATA_PORTS
#define SUPPORT_SLOW_DATA_PORTS 0
-#undef SUPPORT_VLB_SYNC
-#define SUPPORT_VLB_SYNC 0
-
#undef HD_DATA
#define HD_DATA ((ide_ioreg_t)0)
diff --git a/include/asm-sparc64/ide.h b/include/asm-sparc64/ide.h
index 4ec8fb624505..7de4db535651 100644
--- a/include/asm-sparc64/ide.h
+++ b/include/asm-sparc64/ide.h
@@ -72,9 +72,6 @@ static __inline__ void ide_init_default_hwifs(void)
#undef SUPPORT_SLOW_DATA_PORTS
#define SUPPORT_SLOW_DATA_PORTS 0
-#undef SUPPORT_VLB_SYNC
-#define SUPPORT_VLB_SYNC 0
-
#undef HD_DATA
#define HD_DATA ((ide_ioreg_t)0)
diff --git a/include/linux/ide.h b/include/linux/ide.h
index be467744a615..a449573d7b55 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -40,9 +40,6 @@
/* Right now this is only needed by a promise controlled.
*/
-#ifndef SUPPORT_VLB_SYNC /* 1 to support weird 32-bit chips */
-# define SUPPORT_VLB_SYNC 1 /* 0 to reduce kernel size */
-#endif
#ifndef DISK_RECOVERY_TIME /* off=0; on=access_delay_time */
# define DISK_RECOVERY_TIME 0 /* for hardware that needs it */
#endif
@@ -74,8 +71,6 @@ typedef unsigned char byte; /* used everywhere */
*/
#define DMA_PIO_RETRY 1 /* retrying in PIO */
-#define HWGROUP(drive) (drive->channel->hwgroup)
-
/*
* Definitions for accessing IDE controller registers
*/
@@ -444,18 +439,16 @@ enum {
IDE_DMA /* DMA in progress */
};
-typedef struct hwgroup_s {
- /* FIXME: We should look for busy request queues instead of looking at
- * the !NULL state of this field.
- */
- ide_startstop_t (*handler)(struct ata_device *, struct request *); /* irq handler, if active */
-} ide_hwgroup_t;
-
struct ata_channel {
struct device dev; /* device handle */
int unit; /* channel number */
- struct hwgroup_s *hwgroup; /* actually (ide_hwgroup_t *) */
+ /* This lock is used to serialize requests on the same device queue or
+ * between differen queues sharing the same irq line.
+ */
+ spinlock_t *lock;
+
+ ide_startstop_t (*handler)(struct ata_device *, struct request *); /* irq handler, if active */
struct timer_list timer; /* failsafe timer */
int (*expiry)(struct ata_device *, struct request *); /* irq handler, if active */
unsigned long poll_timeout; /* timeout value during polled operations */
@@ -777,11 +770,7 @@ extern int set_transfer(struct ata_device *, struct ata_taskfile *);
extern int system_bus_speed;
-/*
- * ide_stall_queue() can be used by a drive to give excess bandwidth back
- * to the hwgroup by sleeping for timeout jiffies.
- */
-void ide_stall_queue(struct ata_device *, unsigned long);
+extern void ide_stall_queue(struct ata_device *, unsigned long);
/*
* CompactFlash cards and their brethern pretend to be removable hard disks,