ppc/sandpoint: remove ppc_ide_md hooks
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Thu, 17 Apr 2008 22:46:30 +0000 (00:46 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Thu, 17 Apr 2008 22:46:30 +0000 (00:46 +0200)
* Add IDE_HFLAG_FORCE_LEGACY_IRQS host flag for Motorola-Sandpoint platform
  to sl82c105 host driver.

* Disable ide_generic host driver in arch/ppc/configs/sandpoint_defconfig
  and enable sl82c105 one.

* Remove ppc_ide_md hooks from arch/ppc/platforms/sandpoint.c - no need for
  them (sl82c105 host driver takes care of all this setup).

* Then remove no longer needed <linux/ide.h> include.

* Also update arch/ppc/platforms/sandpoint.h.

Unfortunately (unlike lopec's case) sl82c105 host driver was not enabled
in defconfing so there is a funcionality change.

[ Not a big deal since sl82c105 is superior over ide_generic. ]

Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
arch/ppc/configs/sandpoint_defconfig
arch/ppc/platforms/sandpoint.c
arch/ppc/platforms/sandpoint.h
drivers/ide/pci/sl82c105.c

index fb493a67c60d3e10424145969dff07cf8300a249..9525e34138fc4a84bc2accc15d6800ec07e848e8 100644 (file)
@@ -189,7 +189,7 @@ CONFIG_IDE_TASKFILE_IO=y
 #
 # IDE chipset support/bugfixes
 #
-CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_SL82C105=y
 # CONFIG_BLK_DEV_IDEPCI is not set
 # CONFIG_BLK_DEV_IDEDMA is not set
 # CONFIG_IDEDMA_AUTO is not set
index 3352fae1c7225fad4efb7f56a8e6fbb4e951e3ae..b4897bdb742aaa9e1ee857642e6dea1ddf591202 100644 (file)
@@ -71,7 +71,6 @@
 #include <linux/initrd.h>
 #include <linux/console.h>
 #include <linux/delay.h>
-#include <linux/ide.h>
 #include <linux/seq_file.h>
 #include <linux/root_dev.h>
 #include <linux/serial.h>
@@ -559,93 +558,6 @@ sandpoint_show_cpuinfo(struct seq_file *m)
        return 0;
 }
 
-#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
-/*
- * IDE support.
- */
-static int             sandpoint_ide_ports_known = 0;
-static unsigned long   sandpoint_ide_regbase[MAX_HWIFS];
-static unsigned long   sandpoint_ide_ctl_regbase[MAX_HWIFS];
-static unsigned long   sandpoint_idedma_regbase;
-
-static void
-sandpoint_ide_probe(void)
-{
-       struct pci_dev *pdev = pci_get_device(PCI_VENDOR_ID_WINBOND,
-                       PCI_DEVICE_ID_WINBOND_82C105, NULL);
-
-       if (pdev) {
-               sandpoint_ide_regbase[0]=pdev->resource[0].start;
-               sandpoint_ide_regbase[1]=pdev->resource[2].start;
-               sandpoint_ide_ctl_regbase[0]=pdev->resource[1].start;
-               sandpoint_ide_ctl_regbase[1]=pdev->resource[3].start;
-               sandpoint_idedma_regbase=pdev->resource[4].start;
-               pci_dev_put(pdev);
-       }
-
-       sandpoint_ide_ports_known = 1;
-}
-
-static int
-sandpoint_ide_default_irq(unsigned long base)
-{
-       if (sandpoint_ide_ports_known == 0)
-               sandpoint_ide_probe();
-
-       if (base == sandpoint_ide_regbase[0])
-               return SANDPOINT_IDE_INT0;
-       else if (base == sandpoint_ide_regbase[1])
-               return SANDPOINT_IDE_INT1;
-       else
-               return 0;
-}
-
-static unsigned long
-sandpoint_ide_default_io_base(int index)
-{
-       if (sandpoint_ide_ports_known == 0)
-               sandpoint_ide_probe();
-
-       return sandpoint_ide_regbase[index];
-}
-
-static void __init
-sandpoint_ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-               unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       uint    alt_status_base;
-       int     i;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg++;
-       }
-
-       if (data_port == sandpoint_ide_regbase[0]) {
-               alt_status_base = sandpoint_ide_ctl_regbase[0] + 2;
-               hw->irq = 14;
-       }
-       else if (data_port == sandpoint_ide_regbase[1]) {
-               alt_status_base = sandpoint_ide_ctl_regbase[1] + 2;
-               hw->irq = 15;
-       }
-       else {
-               alt_status_base = 0;
-               hw->irq = 0;
-       }
-
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = alt_status_base;
-       }
-
-       if (irq != NULL) {
-               *irq = hw->irq;
-       }
-}
-#endif
-
 /*
  * Set BAT 3 to map 0xf8000000 to end of physical memory space 1-to-1.
  */
@@ -736,10 +648,4 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
 #ifdef CONFIG_SERIAL_TEXT_DEBUG
        ppc_md.progress = gen550_progress;
 #endif
-
-#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
-       ppc_ide_md.default_irq = sandpoint_ide_default_irq;
-       ppc_ide_md.default_io_base = sandpoint_ide_default_io_base;
-       ppc_ide_md.ide_init_hwif = sandpoint_ide_init_hwif_ports;
-#endif
 }
index 3b64e64184898b52fc6d06003363303396be314d..ed83759e4044bc909267cb923af3d1406d29d731 100644 (file)
@@ -28,9 +28,6 @@
  */
 #define SANDPOINT_IDE_INT0             23      /* EPIC 7 */
 #define SANDPOINT_IDE_INT1             24      /* EPIC 8 */
-#else
-#define SANDPOINT_IDE_INT0             14      /* 8259 Test */
-#define SANDPOINT_IDE_INT1             15      /* 8259 Test */
 #endif
 
 /*
index b553f0dda6ab935c207681e2c1057d01f245b0e0..1f00251a4a875c02458cbf35a77aca0b9f245fff 100644 (file)
@@ -329,7 +329,7 @@ static const struct ide_port_info sl82c105_chipset __devinitdata = {
        .host_flags     = IDE_HFLAG_IO_32BIT |
                          IDE_HFLAG_UNMASK_IRQS |
 /* FIXME: check for Compatibility mode in generic IDE PCI code */
-#ifdef CONFIG_LOPEC
+#if defined(CONFIG_LOPEC) || defined(CONFIG_SANDPOINT)
                          IDE_HFLAG_FORCE_LEGACY_IRQS |
 #endif
                          IDE_HFLAG_NO_AUTODMA |