]> git.hungrycats.org Git - linux/commitdiff
[PATCH] generic ide_init_hwif_ports()
authorBartlomiej Zolnierkiewicz <b.zolnierkiewicz@elka.pw.edu.pl>
Mon, 19 Apr 2004 09:31:45 +0000 (02:31 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 19 Apr 2004 09:31:45 +0000 (02:31 -0700)
Add generic ide_init_hwif_ports() to <linux/ide.h> and remove arch specific
versions except arm26, arm, h8300, i386-pc9800, m68k and m68knommu ones.

12 files changed:
include/asm-alpha/ide.h
include/asm-i386/ide.h
include/asm-ia64/ide.h
include/asm-mips/mach-generic/ide.h
include/asm-parisc/ide.h
include/asm-ppc/ide.h
include/asm-ppc64/ide.h
include/asm-sh/ide.h
include/asm-sparc/ide.h
include/asm-sparc64/ide.h
include/asm-x86_64/ide.h
include/linux/ide.h

index dd04280d33a7519ad243493176774770504078e4..9444b3d6dccc63ba82c3b9dc813c73acdab789f9 100644 (file)
@@ -43,26 +43,6 @@ static inline unsigned long ide_default_io_base(int index)
        }
 }
 
-static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-                                      unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #ifdef CONFIG_PCI
 #define ide_init_default_irq(base)     (0)
 #else
index d4fb98cb894c1aed7182906568342faf43e39bf1..e241be6d6e40c7ec28340b4066539ede46c2b7a2 100644 (file)
@@ -59,29 +59,23 @@ static __inline__ unsigned long ide_default_io_base(int index)
        }
 }
 
+#ifdef CONFIG_X86_PC9800
 static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
         unsigned long ctrl_port, int *irq)
 {
        unsigned long reg = data_port;
        int i;
-#ifdef CONFIG_X86_PC9800
+
        unsigned long increment = data_port == 0x640 ? 2 : 1;
-#endif
 
        for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
                hw->io_ports[i] = reg;
-#ifdef CONFIG_X86_PC9800
                reg += increment;
-#else
-               reg += 1;
-#endif
        }
        if (ctrl_port) {
                hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-#ifdef CONFIG_X86_PC9800
        } else if (data_port == 0x640) {
                hw->io_ports[IDE_CONTROL_OFFSET] = 0x74c;
-#endif
        } else {
                hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
        }
@@ -89,6 +83,7 @@ static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_por
                *irq = 0;
        hw->io_ports[IDE_IRQ_OFFSET] = 0;
 }
+#endif
 
 #ifdef CONFIG_BLK_DEV_IDEPCI
 #define ide_init_default_irq(base)     (0)
index b8ed7fccfbdf42e510e33074be68a80f1842b9c4..778d69ec67a2b29c1a8300f0a9cd2fc7722464b5 100644 (file)
@@ -53,26 +53,6 @@ static inline unsigned long ide_default_io_base(int index)
        }
 }
 
-static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-                                      unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #ifdef CONFIG_PCI
 #define ide_init_default_irq(base)     (0)
 #else
index 91c7a93cfa850fe34cf1dfdfb6d5b1e964c550d5..a4618ca9fa81b5d0992e9b44974da0c3b22ab4c0 100644 (file)
@@ -48,26 +48,6 @@ static inline unsigned long ide_default_io_base(int index)
        }
 }
 
-static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-        unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #ifdef CONFIG_BLK_DEV_IDEPCI
 #define ide_init_default_irq(base)     (0)
 #else
index f3b12b6fabefb59afed52053be94c45d962bf319..61c3792177b3501fa350c0306b30c7d76ce6cf98 100644 (file)
 #define ide_default_irq(base) (0)
 #define ide_default_io_base(index) (0)
 
-static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-                                      unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #define ide_init_default_irq(base)     (0)
 
 #define ide_request_irq(irq,hand,flg,dev,id)   request_irq((irq),(hand),(flg),(dev),(id))
index 0464fdaf07e1df6e76e8abce5b1ca837edcaf559..1393d51c3e3ee8b14f3287dd42623a9d423a94e8 100644 (file)
@@ -57,33 +57,6 @@ static __inline__ unsigned long ide_default_io_base(int index)
        return 0;
 }
 
-/*
- * This is only used for PC-style IDE controllers (e.g. as on PReP)
- * or for PCI IDE devices, not for other types of IDE interface such
- * as the pmac IDE interfaces.
- */
-static __inline__ void ide_init_hwif_ports(hw_regs_t *hw,
-                                          unsigned long data_port,
-                                          unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++)
-               hw->io_ports[i] = reg++;
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] =
-                       hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-       if (ppc_ide_md.ide_init_hwif != NULL)
-               ppc_ide_md.ide_init_hwif(hw, data_port, ctrl_port, irq);
-}
-
 #ifdef CONFIG_PCI
 #define ide_init_default_irq(base)     (0)
 #else
index c1abb05c1c5cf096f648e95b001dedf786a4069a..88d3645e5d268c00b86ac58e901987e5d89229f8 100644 (file)
 static inline int ide_default_irq(unsigned long base) { return 0; }
 static inline unsigned long ide_default_io_base(int index) { return 0; }
 
-static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-                                      unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #define ide_init_default_irq(base)     (0)
 
 #endif /* __KERNEL__ */
index 35db4da08bb142e51456b0539578c319c5986de9..4aa1568d2fc3200daaff00379d63d2dca9dbafb9 100644 (file)
@@ -72,26 +72,6 @@ static inline unsigned long ide_default_io_base(int index)
        }
 }
 
-static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-                                      unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #ifdef CONFIG_PCI
 #define ide_init_default_irq(base)     (0)
 #else
index 956b021d21a199b77daf43722eab07133727c9a6..1f4397221b14b7b7f518fc8fc19e059b50dd23d5 100644 (file)
@@ -29,29 +29,6 @@ static __inline__ unsigned long ide_default_io_base(int index)
        return 0;
 }
 
-/*
- * Doing any sort of ioremap() here does not work
- * because this function may be called with null aguments.
- */
-static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port, unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #define ide_init_default_irq(base)     (0)
 
 #define __ide_insl(data_reg, buffer, wcount) \
index 180cc806fa88c8d0d421af5814e41af422565627..9ce42e117719166ffde7ef56facc9806ba5f42cd 100644 (file)
@@ -34,25 +34,6 @@ static __inline__ unsigned long ide_default_io_base(int index)
        return 0;
 }
 
-static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port, unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #define ide_init_default_irq(base)     (0)
 
 #define __ide_insl(data_reg, buffer, wcount) \
index 283d4f6d04f0a3873c442363bd082c02e64d1492..870bf0e782d3d14f46428ee295623d34c5394c9a 100644 (file)
@@ -51,26 +51,6 @@ static __inline__ unsigned long ide_default_io_base(int index)
        }
 }
 
-static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-        unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += 1;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-
 #ifdef CONFIG_BLK_DEV_IDEPCI
 #define ide_init_default_irq(base)     (0)
 #else
index 5da715ef383b40fd8cf8a06c77b8f0c49065f01a..abfe784b24cc507aaf09b0cadf824e13d3074529 100644 (file)
@@ -293,8 +293,49 @@ void ide_setup_ports(      hw_regs_t *hw,
 #endif
                        int irq);
 
+static inline void ide_std_init_ports(hw_regs_t *hw,
+                                     unsigned long io_addr,
+                                     unsigned long ctl_addr)
+{
+       unsigned int i;
+
+       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++)
+               hw->io_ports[i] = io_addr++;
+
+       hw->io_ports[IDE_CONTROL_OFFSET] = ctl_addr;
+}
+
 #include <asm/ide.h>
 
+/*
+ * ide_init_hwif_ports() is OBSOLETE and will be removed in 2.7 series.
+ *
+ * arm26, arm, h8300, m68k, m68knommu (broken) and i386-pc9800 (broken)
+ * still have their own versions.
+ */
+#if !defined(CONFIG_ARM) && !defined(CONFIG_H8300) && !defined(CONFIG_M68K)
+static inline void ide_init_hwif_ports(hw_regs_t *hw,
+                                      unsigned long io_addr,
+                                      unsigned long ctl_addr,
+                                      int *irq)
+{
+       if (!ctl_addr)
+               ide_std_init_ports(hw, io_addr, io_addr + 0x206);
+       else
+               ide_std_init_ports(hw, io_addr, ctl_addr);
+
+       if (irq)
+               *irq = 0;
+
+       hw->io_ports[IDE_IRQ_OFFSET] = 0;
+
+#ifdef CONFIG_PPC32
+       if (ppc_ide_md.ide_init_hwif)
+               ppc_ide_md.ide_init_hwif(hw, io_addr, ctl_addr, irq);
+#endif
+}
+#endif /* !ARM && !H8300 && !M68K */
+
 /* Currently only m68k, apus and m8xx need it */
 #ifndef IDE_ARCH_ACK_INTR
 # define ide_ack_intr(hwif) (1)