Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8d8a0241eb019ce9648a77b55f9f76a834207cbb
Commit:     8d8a0241eb019ce9648a77b55f9f76a834207cbb
Parent:     8d2169e8d6b8a91413df33bc402e0f602ceaabcc
Author:     Olaf Hering <[EMAIL PROTECTED]>
AuthorDate: Thu Apr 26 06:36:56 2007 +1000
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Fri Apr 27 21:14:30 2007 +1000

    [POWERPC] Generic check_legacy_ioport
    
    check_legacy_ioport makes only sense on PREP, CHRP and pSeries.
    They may have an isa node with PS/2, parport, floppy and serial ports.
    
    Remove the check_legacy_ioport call from ppc_md, it's not needed
    anymore.  Hardware capabilities come from the device-tree.
    
    Signed-off-by: Olaf Hering <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/kernel/setup-common.c      |   34 ++++++++++++++++++++++++++++--
 arch/powerpc/platforms/cell/setup.c     |   10 ---------
 arch/powerpc/platforms/celleb/setup.c   |   10 ---------
 arch/powerpc/platforms/iseries/setup.c  |   10 ---------
 arch/powerpc/platforms/pasemi/setup.c   |    7 ------
 arch/powerpc/platforms/powermac/setup.c |   10 ---------
 arch/powerpc/platforms/pseries/setup.c  |   27 ------------------------
 include/asm-powerpc/io.h                |    7 +++++-
 include/asm-powerpc/machdep.h           |    3 --
 9 files changed, 37 insertions(+), 81 deletions(-)

diff --git a/arch/powerpc/kernel/setup-common.c 
b/arch/powerpc/kernel/setup-common.c
index 3c8847b..3708037 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -478,11 +478,39 @@ void probe_machine(void)
        printk(KERN_INFO "Using %s machine description\n", ppc_md.name);
 }
 
+/* Match a class of boards, not a specific device configuration. */
 int check_legacy_ioport(unsigned long base_port)
 {
-       if (ppc_md.check_legacy_ioport == NULL)
-               return 0;
-       return ppc_md.check_legacy_ioport(base_port);
+       struct device_node *parent, *np = NULL;
+       int ret = -ENODEV;
+
+       switch(base_port) {
+       case I8042_DATA_REG:
+               np = of_find_node_by_type(NULL, "8042");
+               break;
+       case FDC_BASE: /* FDC1 */
+               np = of_find_node_by_type(NULL, "fdc");
+               break;
+#ifdef CONFIG_PPC_PREP
+       case _PIDXR:
+       case _PNPWRP:
+       case PNPBIOS_BASE:
+               /* implement me */
+#endif
+       default:
+               /* ipmi is supposed to fail here */
+               break;
+       }
+       if (!np)
+               return ret;
+       parent = of_get_parent(np);
+       if (parent) {
+               if (strcmp(parent->type, "isa") == 0)
+                       ret = 0;
+               of_node_put(parent);
+       }
+       of_node_put(np);
+       return ret;
 }
 EXPORT_SYMBOL(check_legacy_ioport);
 
diff --git a/arch/powerpc/platforms/cell/setup.c 
b/arch/powerpc/platforms/cell/setup.c
index 5c5fa34..54b9618 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -190,15 +190,6 @@ static int __init cell_probe(void)
        return 1;
 }
 
-/*
- * Cell has no legacy IO; anything calling this function has to
- * fail or bad things will happen
- */
-static int cell_check_legacy_ioport(unsigned int baseport)
-{
-       return -ENODEV;
-}
-
 define_machine(cell) {
        .name                   = "Cell",
        .probe                  = cell_probe,
@@ -211,7 +202,6 @@ define_machine(cell) {
        .get_rtc_time           = rtas_get_rtc_time,
        .set_rtc_time           = rtas_set_rtc_time,
        .calibrate_decr         = generic_calibrate_decr,
-       .check_legacy_ioport    = cell_check_legacy_ioport,
        .progress               = cell_progress,
        .init_IRQ               = cell_init_irq,
        .pci_setup_phb          = rtas_setup_phb,
diff --git a/arch/powerpc/platforms/celleb/setup.c 
b/arch/powerpc/platforms/celleb/setup.c
index ab1db9d..596ab2a 100644
--- a/arch/powerpc/platforms/celleb/setup.c
+++ b/arch/powerpc/platforms/celleb/setup.c
@@ -128,15 +128,6 @@ static int __init celleb_probe(void)
        return 1;
 }
 
-/*
- * Cell has no legacy IO; anything calling this function has to
- * fail or bad things will happen
- */
-static int celleb_check_legacy_ioport(unsigned int baseport)
-{
-       return -ENODEV;
-}
-
 #ifdef CONFIG_KEXEC
 static void celleb_kexec_cpu_down(int crash, int secondary)
 {
@@ -173,7 +164,6 @@ define_machine(celleb) {
        .get_rtc_time           = beat_get_rtc_time,
        .set_rtc_time           = beat_set_rtc_time,
        .calibrate_decr         = generic_calibrate_decr,
-       .check_legacy_ioport    = celleb_check_legacy_ioport,
        .progress               = celleb_progress,
        .power_save             = beat_power_save,
        .nvram_size             = beat_nvram_get_size,
diff --git a/arch/powerpc/platforms/iseries/setup.c 
b/arch/powerpc/platforms/iseries/setup.c
index cce7e30..7f5dcee 100644
--- a/arch/powerpc/platforms/iseries/setup.c
+++ b/arch/powerpc/platforms/iseries/setup.c
@@ -628,15 +628,6 @@ static void iseries_iounmap(volatile void __iomem *token)
 {
 }
 
-/*
- * iSeries has no legacy IO, anything calling this function has to
- * fail or bad things will happen
- */
-static int iseries_check_legacy_ioport(unsigned int baseport)
-{
-       return -ENODEV;
-}
-
 static int __init iseries_probe(void)
 {
        unsigned long root = of_get_flat_dt_root();
@@ -667,7 +658,6 @@ define_machine(iseries) {
        .calibrate_decr = generic_calibrate_decr,
        .progress       = iSeries_progress,
        .probe          = iseries_probe,
-       .check_legacy_ioport    = iseries_check_legacy_ioport,
        .ioremap        = iseries_ioremap,
        .iounmap        = iseries_iounmap,
        /* XXX Implement enable_pmcs for iSeries */
diff --git a/arch/powerpc/platforms/pasemi/setup.c 
b/arch/powerpc/platforms/pasemi/setup.c
index a7bf88e..f88f0ec 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -102,12 +102,6 @@ void __init pas_setup_arch(void)
        pasemi_idle_init();
 }
 
-/* No legacy IO on our parts */
-static int pas_check_legacy_ioport(unsigned int baseport)
-{
-       return -ENODEV;
-}
-
 static __init void pas_init_IRQ(void)
 {
        struct device_node *np;
@@ -252,7 +246,6 @@ define_machine(pas) {
        .restart                = pas_restart,
        .get_boot_time          = pas_get_boot_time,
        .calibrate_decr         = generic_calibrate_decr,
-       .check_legacy_ioport    = pas_check_legacy_ioport,
        .progress               = pas_progress,
        .machine_check_exception = pas_machine_check_handler,
        .pci_irq_fixup          = pas_pci_irq_fixup,
diff --git a/arch/powerpc/platforms/powermac/setup.c 
b/arch/powerpc/platforms/powermac/setup.c
index 0444e07..b820cab 100644
--- a/arch/powerpc/platforms/powermac/setup.c
+++ b/arch/powerpc/platforms/powermac/setup.c
@@ -635,15 +635,6 @@ static void __init pmac_init_early(void)
 #endif
 }
 
-/*
- * pmac has no legacy IO, anything calling this function has to
- * fail or bad things will happen
- */
-static int pmac_check_legacy_ioport(unsigned int baseport)
-{
-       return -ENODEV;
-}
-
 static int __init pmac_declare_of_platform_devices(void)
 {
        struct device_node *np;
@@ -755,7 +746,6 @@ define_machine(powermac) {
        .get_rtc_time           = pmac_get_rtc_time,
        .calibrate_decr         = pmac_calibrate_decr,
        .feature_call           = pmac_do_feature_call,
-       .check_legacy_ioport    = pmac_check_legacy_ioport,
        .progress               = udbg_progress,
 #ifdef CONFIG_PPC64
        .pci_probe_mode         = pmac_pci_probe_mode,
diff --git a/arch/powerpc/platforms/pseries/setup.c 
b/arch/powerpc/platforms/pseries/setup.c
index e2fcd23..33eec28 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -335,32 +335,6 @@ static void __init pSeries_init_early(void)
        DBG(" <- pSeries_init_early()\n");
 }
 
-
-static int pSeries_check_legacy_ioport(unsigned int baseport)
-{
-       struct device_node *np;
-
-#define I8042_DATA_REG 0x60
-#define FDC_BASE       0x3f0
-
-
-       switch(baseport) {
-       case I8042_DATA_REG:
-               np = of_find_node_by_type(NULL, "8042");
-               if (np == NULL)
-                       return -ENODEV;
-               of_node_put(np);
-               break;
-       case FDC_BASE:
-               np = of_find_node_by_type(NULL, "fdc");
-               if (np == NULL)
-                       return -ENODEV;
-               of_node_put(np);
-               break;
-       }
-       return 0;
-}
-
 /*
  * Called very early, MMU is off, device-tree isn't unflattened
  */
@@ -537,7 +511,6 @@ define_machine(pseries) {
        .set_rtc_time           = rtas_set_rtc_time,
        .calibrate_decr         = generic_calibrate_decr,
        .progress               = rtas_progress,
-       .check_legacy_ioport    = pSeries_check_legacy_ioport,
        .system_reset_exception = pSeries_system_reset_exception,
        .machine_check_exception = pSeries_machine_check_exception,
 };
diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h
index 301c9bb..350c9bd 100644
--- a/include/asm-powerpc/io.h
+++ b/include/asm-powerpc/io.h
@@ -11,7 +11,12 @@
 
 /* Check of existence of legacy devices */
 extern int check_legacy_ioport(unsigned long base_port);
-#define PNPBIOS_BASE   0xf000  /* only relevant for PReP */
+#define I8042_DATA_REG 0x60
+#define FDC_BASE       0x3f0
+/* only relevant for PReP */
+#define _PIDXR         0x279
+#define _PNPWRP                0xa79
+#define PNPBIOS_BASE   0xf000
 
 #include <linux/compiler.h>
 #include <asm/page.h>
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h
index 1b04e57..b204926 100644
--- a/include/asm-powerpc/machdep.h
+++ b/include/asm-powerpc/machdep.h
@@ -153,9 +153,6 @@ struct machdep_calls {
         */
        long            (*feature_call)(unsigned int feature, ...);
 
-       /* Check availability of legacy devices like i8042 */
-       int             (*check_legacy_ioport)(unsigned int baseport);
-
        /* Get legacy PCI/IDE interrupt mapping */ 
        int             (*pci_get_legacy_ide_irq)(struct pci_dev *dev, int 
channel);
        
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to