patch-2.4.18 linux/arch/ppc/kernel/pmac_setup.c
Next file: linux/arch/ppc/kernel/pmac_smp.c
Previous file: linux/arch/ppc/kernel/pmac_pic.c
Back to the patch index
Back to the overall index
- Lines: 135
- Date:
Wed Dec 26 16:28:34 2001
- Orig file:
linux.orig/arch/ppc/kernel/pmac_setup.c
- Orig date:
Mon Feb 18 20:18:39 2002
diff -Naur -X /home/marcelo/lib/dontdiff linux.orig/arch/ppc/kernel/pmac_setup.c linux/arch/ppc/kernel/pmac_setup.c
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.pmac_setup.c 1.43 11/13/01 21:26:07 paulus
+ * BK Id: SCCS/s.pmac_setup.c 1.45 12/01/01 20:09:06 benh
*/
/*
* linux/arch/ppc/kernel/setup.c
@@ -61,7 +61,6 @@
#include <asm/pci-bridge.h>
#include <asm/ohare.h>
#include <asm/mediabay.h>
-#include <asm/feature.h>
#include <asm/machdep.h>
#include <asm/keyboard.h>
#include <asm/dma.h>
@@ -69,6 +68,7 @@
#include <asm/cputable.h>
#include <asm/btext.h>
+#include <asm/pmac_feature.h>
#include <asm/time.h>
#include "local_irq.h"
#include "pmac_pic.h"
@@ -83,6 +83,10 @@
extern void pmac_calibrate_decr(void);
extern void pmac_pcibios_fixup(void);
extern void pmac_find_bridges(void);
+extern int pmac_ide_check_base(ide_ioreg_t base);
+extern ide_ioreg_t pmac_ide_get_base(int index);
+extern void pmac_ide_init_hwif_ports(hw_regs_t *hw,
+ ide_ioreg_t data_port, ide_ioreg_t ctrl_port, int *irq);
extern int mackbd_setkeycode(unsigned int scancode, unsigned int keycode);
extern int mackbd_getkeycode(unsigned int scancode);
@@ -436,7 +440,8 @@
#endif
#ifdef CONFIG_PMAC_PBOOK
media_bay_init();
-#endif
+#endif
+ pmac_feature_late_init();
}
#ifdef CONFIG_SCSI
@@ -604,14 +609,11 @@
static int __pmac
pmac_ide_check_region(ide_ioreg_t from, unsigned int extent)
{
- /*
- * We only do the check_region if `from' looks like a genuine
- * I/O port number. If it actually refers to a memory-mapped
- * register, it should be OK.
- */
- if (from < ~_IO_BASE)
- return check_region(from, extent);
- return 0;
+#ifdef CONFIG_BLK_DEV_IDE_PMAC
+ if (pmac_ide_check_base(from) >= 0)
+ return 0;
+#endif
+ return check_region(from, extent);
}
static void __pmac
@@ -619,24 +621,31 @@
unsigned int extent,
const char *name)
{
- if (from < ~_IO_BASE)
- request_region(from, extent, name);
+#ifdef CONFIG_BLK_DEV_IDE_PMAC
+ if (pmac_ide_check_base(from) >= 0)
+ return;
+#endif
+ request_region(from, extent, name);
}
static void __pmac
pmac_ide_release_region(ide_ioreg_t from,
unsigned int extent)
{
- if (from < ~_IO_BASE)
- release_region(from, extent);
+#ifdef CONFIG_BLK_DEV_IDE_PMAC
+ if (pmac_ide_check_base(from) >= 0)
+ return;
+#endif
+ release_region(from, extent);
}
+#ifndef CONFIG_BLK_DEV_IDE_PMAC
/*
* This is only used if we have a PCI IDE controller, not
* for the IDE controller in the ohare/paddington/heathrow/keylargo.
*/
static void __pmac
-pmac_ide_init_hwif_ports(hw_regs_t *hw, ide_ioreg_t data_port,
+pmac_ide_pci_init_hwif_ports(hw_regs_t *hw, ide_ioreg_t data_port,
ide_ioreg_t ctrl_port, int *irq)
{
ide_ioreg_t reg = data_port;
@@ -648,7 +657,8 @@
}
hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
}
-#endif
+#endif /* CONFIG_BLK_DEV_IDE_PMAC */
+#endif /* defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) */
/*
* Read in a property describing some pieces of memory.
@@ -806,14 +816,21 @@
ppc_md.find_end_of_memory = pmac_find_end_of_memory;
+ ppc_md.feature_call = pmac_do_feature_call;
+
select_adb_keyboard();
-#if defined(CONFIG_BLK_DEV_IDE) && defined(CONFIG_BLK_DEV_IDE_PMAC)
+#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
ppc_ide_md.ide_check_region = pmac_ide_check_region;
ppc_ide_md.ide_request_region = pmac_ide_request_region;
ppc_ide_md.ide_release_region = pmac_ide_release_region;
+#ifdef CONFIG_BLK_DEV_IDE_PMAC
ppc_ide_md.ide_init_hwif = pmac_ide_init_hwif_ports;
-#endif /* CONFIG_BLK_DEV_IDE && CONFIG_BLK_DEV_IDE_PMAC */
+ ppc_ide_md.default_io_base = pmac_ide_get_base;
+#else /* CONFIG_BLK_DEV_IDE_PMAC */
+ ppc_ide_md.ide_init_hwif = pmac_ide_pci_init_hwif_ports;
+#endif /* CONFIG_BLK_DEV_IDE_PMAC */
+#endif /* defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) */
#ifdef CONFIG_BOOTX_TEXT
ppc_md.progress = pmac_progress;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)