patch-2.1.79 linux/include/asm-ppc/ide.h
Next file: linux/include/asm-ppc/io.h
Previous file: linux/include/asm-ppc/hydra.h
Back to the patch index
Back to the overall index
- Lines: 170
- Date:
Mon Jan 12 15:18:13 1998
- Orig file:
v2.1.78/linux/include/asm-ppc/ide.h
- Orig date:
Thu Sep 4 17:07:31 1997
diff -u --recursive --new-file v2.1.78/linux/include/asm-ppc/ide.h linux/include/asm-ppc/ide.h
@@ -13,22 +13,32 @@
#ifdef __KERNEL__
-#include <linux/config.h>
+#include <linux/ioport.h>
+#include <asm/io.h> /* so we can redefine insw/outsw */
#ifndef MAX_HWIFS
#define MAX_HWIFS 4
#endif
+#undef SUPPORT_SLOW_DATA_PORTS
+#define SUPPORT_SLOW_DATA_PORTS 0
+#undef SUPPORT_VLB_SYNC
+#define SUPPORT_VLB_SYNC 0
+
+
#define ide_sti() sti()
-typedef unsigned short ide_ioreg_t;
+typedef unsigned long ide_ioreg_t;
void ide_init_hwif_ports(ide_ioreg_t *p, ide_ioreg_t base, int *irq);
void prep_ide_init_hwif_ports(ide_ioreg_t *p, ide_ioreg_t base, int *irq);
void pmac_ide_init_hwif_ports(ide_ioreg_t *p, ide_ioreg_t base, int *irq);
+void ide_insw(ide_ioreg_t port, void *buf, int ns);
+void ide_outsw(ide_ioreg_t port, void *buf, int ns);
-#if defined(CONFIG_PREP) || defined(CONFIG_CHRP)
static __inline__ int ide_default_irq(ide_ioreg_t base)
{
+ if ( _machine == _MACH_Pmac )
+ return 0;
switch (base) {
case 0x1f0: return 13;
case 0x170: return 13;
@@ -41,6 +51,8 @@
static __inline__ ide_ioreg_t ide_default_io_base(int index)
{
+ if ( _machine == _MACH_Pmac )
+ return index;
switch (index) {
case 0: return 0x1f0;
case 1: return 0x170;
@@ -51,53 +63,52 @@
}
}
-typedef union {
- unsigned all : 8; /* all of the bits together */
- struct {
- unsigned head : 4; /* always zeros here */
- unsigned unit : 1; /* drive select number, 0 or 1 */
- unsigned bit5 : 1; /* always 1 */
- unsigned lba : 1; /* using LBA instead of CHS */
- unsigned bit7 : 1; /* always 1 */
- } b;
-} select_t;
-
static __inline__ int ide_check_region (ide_ioreg_t from, unsigned int extent)
{
+ if ( _machine == _MACH_Pmac )
+ return 0;
return check_region(from, extent);
}
static __inline__ void ide_request_region (ide_ioreg_t from, unsigned int extent, const char *name)
{
+ if ( _machine == _MACH_Pmac )
+ return;
request_region(from, extent, name);
}
static __inline__ void ide_release_region (ide_ioreg_t from, unsigned int extent)
{
+ if ( _machine == _MACH_Pmac )
+ return;
release_region(from, extent);
}
-#define ide_fix_driveid(id) do {} while (0)
-
-#endif /* CONFIG_CHRP || CONFIG_PREP */
-
-
-#ifdef CONFIG_PMAC
-
-#include <asm/io.h> /* so we can redefine insw/outsw */
-
-typedef unsigned long ide_ioreg_t;
+#define ide_fix_driveid(id) do { \
+ int nh; \
+ unsigned short *p = (unsigned short *) id; \
+ if ( _machine == _MACH_Pmac ) \
+ for (nh = SECTOR_WORDS * 2; nh != 0; --nh, ++p) \
+ *p = (*p << 8) + (*p >> 8); \
+} while (0)
-static __inline__ int ide_default_irq(ide_ioreg_t base)
-{
- return 0;
-}
-
-extern __inline__ ide_ioreg_t ide_default_io_base(int index)
-{
- return index;
-}
+#undef insw
+#define insw(port, buf, ns) do { \
+ if ( _machine != _MACH_Pmac ) \
+ /* this must be the same as insw in io.h!! */ \
+ _insw((unsigned short *)((port)+_IO_BASE), (buf), (ns)); \
+ else \
+ ide_insw((port), (buf), (ns)); \
+} while (0)
+#undef outsw
+#define outsw(port, buf, ns) do { \
+ if ( _machine != _MACH_Pmac ) \
+ /* this must be the same as outsw in io.h!! */ \
+ _outsw((unsigned short *)((port)+_IO_BASE), (buf), (ns)); \
+ else \
+ ide_outsw((port), (buf), (ns)); \
+} while (0)
typedef union {
unsigned all : 8; /* all of the bits together */
@@ -109,41 +120,6 @@
unsigned head : 4; /* always zeros here */
} b;
} select_t;
-
-#undef SUPPORT_SLOW_DATA_PORTS
-#define SUPPORT_SLOW_DATA_PORTS 0
-#undef SUPPORT_VLB_SYNC
-#define SUPPORT_VLB_SYNC 0
-
-static __inline__ int ide_check_region (ide_ioreg_t from, unsigned int extent)
-{
- return 0;
-}
-
-static __inline__ void ide_request_region (ide_ioreg_t from, unsigned int extent, const char *name)
-{
-}
-
-static __inline__ void ide_release_region (ide_ioreg_t from, unsigned int extent)
-{
-}
-
-#undef insw
-#undef outsw
-#define insw(port, buf, ns) ide_insw((port), (buf), (ns))
-#define outsw(port, buf, ns) ide_outsw((port), (buf), (ns))
-
-void ide_insw(ide_ioreg_t port, void *buf, int ns);
-void ide_outsw(ide_ioreg_t port, void *buf, int ns);
-
-#define ide_fix_driveid(id) do { \
- int nh; \
- unsigned short *p = (unsigned short *) id; \
- for (nh = SECTOR_WORDS * 2; nh != 0; --nh, ++p) \
- *p = (*p << 8) + (*p >> 8); \
-} while (0)
-
-#endif
static __inline__ int ide_request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *),
unsigned long flags, const char *device, void *dev_id)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov