Commit 3d79bc5c authored by Paul Mackerras's avatar Paul Mackerras

Merge samba.org:/home/paulus/kernel/linux-2.5

into samba.org:/home/paulus/kernel/for-linus-ppc
parents d0f0cde1 a77e3b76
...@@ -340,9 +340,16 @@ CONFIG_PREP_RESIDUAL ...@@ -340,9 +340,16 @@ CONFIG_PREP_RESIDUAL
other useful pieces of information. Sometimes this information is other useful pieces of information. Sometimes this information is
not present or incorrect. not present or incorrect.
Unless you expect to boot on a PReP system, there is not need to Unless you expect to boot on a PReP system, there is no need to
select Y. select Y.
PReP residual data available in /proc/residual
CONFIG_PROC_PREPRESIDUAL
Enabling this option will create a /proc/residual file which allows
you to get at the residual data on PReP systems. You will need a tool
(lsresidual) to parse it. If you aren't on a PReP system, you don't
want this.
CONFIG_ADB CONFIG_ADB
Apple Desktop Bus (ADB) support is for support of devices which Apple Desktop Bus (ADB) support is for support of devices which
are connected to an ADB port. ADB devices tend to have 4 pins. are connected to an ADB port. ADB devices tend to have 4 pins.
......
...@@ -67,7 +67,7 @@ extern int CRT_tstc(void); ...@@ -67,7 +67,7 @@ extern int CRT_tstc(void);
extern unsigned long serial_init(int chan, void *ignored); extern unsigned long serial_init(int chan, void *ignored);
extern void serial_close(unsigned long com_port); extern void serial_close(unsigned long com_port);
extern void gunzip(void *, int, unsigned char *, int *); extern void gunzip(void *, int, unsigned char *, int *);
extern void setup_legacy(void); extern void serial_fixups(void);
struct bi_record * struct bi_record *
decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum) decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
...@@ -76,7 +76,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum) ...@@ -76,7 +76,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
char *cp, ch; char *cp, ch;
struct bi_record *rec, *birecs; struct bi_record *rec, *birecs;
setup_legacy(); serial_fixups();
com_port = serial_init(0, NULL); com_port = serial_init(0, NULL);
/* assume the chunk below 8M is free */ /* assume the chunk below 8M is free */
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* trini@mvista.com * trini@mvista.com
* Derived from arch/ppc/boot/prep/head.S (Cort Dougan, many others). * Derived from arch/ppc/boot/prep/head.S (Cort Dougan, many others).
* *
* Copyright 2001 MontaVista Software Inc. * Copyright 2001-2002 MontaVista Software Inc.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the * under the terms of the GNU General Public License as published by the
...@@ -192,6 +192,7 @@ start_ldr: ...@@ -192,6 +192,7 @@ start_ldr:
* registers. -- Tom * registers. -- Tom
*/ */
li r4,0 li r4,0
li r5,0
li r6,0 li r6,0
/* /*
......
...@@ -75,7 +75,7 @@ extern void gunzip(void *, int, unsigned char *, int *); ...@@ -75,7 +75,7 @@ extern void gunzip(void *, int, unsigned char *, int *);
extern void _put_MSR(unsigned int val); extern void _put_MSR(unsigned int val);
extern unsigned long serial_init(int chan, void *ignored); extern unsigned long serial_init(int chan, void *ignored);
extern void setup_legacy(void); extern void serial_fixups(void);
void void
writel(unsigned int val, unsigned int address) writel(unsigned int val, unsigned int address)
...@@ -134,7 +134,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum, ...@@ -134,7 +134,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
int start_multi = 0; int start_multi = 0;
unsigned int pci_viddid, pci_did, tulip_pci_base, tulip_base; unsigned int pci_viddid, pci_did, tulip_pci_base, tulip_base;
setup_legacy(); serial_fixups();
#if defined(CONFIG_SERIAL_CONSOLE) #if defined(CONFIG_SERIAL_CONSOLE)
com_port = serial_init(0, NULL); com_port = serial_init(0, NULL);
#endif /* CONFIG_SERIAL_CONSOLE */ #endif /* CONFIG_SERIAL_CONSOLE */
......
...@@ -3,15 +3,15 @@ ...@@ -3,15 +3,15 @@
* *
* Author: Tom Rini <trini@mvista.com> * Author: Tom Rini <trini@mvista.com>
* *
* This will go and setup ISA_io to 0xFE00000. * This will go and setup ISA_io to 0xFE00000 and return.
*/ */
#include <asm/ppc_asm.h> #include <asm/ppc_asm.h>
.text .text
.globl setup_legacy .globl serial_fixups
setup_legacy: serial_fixups:
lis r3,ISA_io@h /* Load ISA_io */ lis r3,ISA_io@h /* Load ISA_io */
ori r3,r3,ISA_io@l ori r3,r3,ISA_io@l
lis r4,0xFE00 /* Load the value, 0xFE00000 */ lis r4,0xFE00 /* Load the value, 0xFE00000 */
......
...@@ -4,11 +4,12 @@ ...@@ -4,11 +4,12 @@
* Author: Tom Rini <trini@mvista.com> * Author: Tom Rini <trini@mvista.com>
* *
* This is an empty function for machines which use SERIAL_IO_MEM * This is an empty function for machines which use SERIAL_IO_MEM
* and don't need ISA_io set to anything but 0; * and don't need ISA_io set to anything but 0, or perform any other
* serial fixups.
*/ */
.text .text
.globl setup_legacy .globl serial_fixups
setup_legacy: serial_fixups:
blr blr
...@@ -3,15 +3,15 @@ ...@@ -3,15 +3,15 @@
* *
* Author: Tom Rini <trini@mvista.com> * Author: Tom Rini <trini@mvista.com>
* *
* This will go and setup ISA_io to 0x8000000. * This will go and setup ISA_io to 0x8000000 and return.
*/ */
#include <asm/ppc_asm.h> #include <asm/ppc_asm.h>
.text .text
.globl setup_legacy .globl serial_fixups
setup_legacy: serial_fixups:
lis r3,ISA_io@h /* Load ISA_io */ lis r3,ISA_io@h /* Load ISA_io */
ori r3,r3,ISA_io@l ori r3,r3,ISA_io@l
lis r4,0x8000 /* Load the value, 0x8000000 */ lis r4,0x8000 /* Load the value, 0x8000000 */
......
...@@ -54,7 +54,7 @@ char *bootrom_cmdline = ""; ...@@ -54,7 +54,7 @@ char *bootrom_cmdline = "";
char compiled_string[] = CONFIG_CMDLINE; char compiled_string[] = CONFIG_CMDLINE;
#endif #endif
char ramroot_string[] = "root=/dev/ram"; char ramroot_string[] = "root=/dev/ram";
char netroot_string[] = "root=/dev/nfs rw ip=auto"; char netroot_string[] = "root=/dev/nfs rw ip=on";
/* Serial port to use. */ /* Serial port to use. */
unsigned long com_port; unsigned long com_port;
......
...@@ -362,6 +362,7 @@ if [ "$CONFIG_ALL_PPC" = "y" ]; then ...@@ -362,6 +362,7 @@ if [ "$CONFIG_ALL_PPC" = "y" ]; then
bool 'Support for Open Firmware device tree in /proc' CONFIG_PROC_DEVICETREE bool 'Support for Open Firmware device tree in /proc' CONFIG_PROC_DEVICETREE
bool 'Support for RTAS (RunTime Abstraction Services) in /proc' CONFIG_PPC_RTAS bool 'Support for RTAS (RunTime Abstraction Services) in /proc' CONFIG_PPC_RTAS
bool 'Support for PReP Residual Data' CONFIG_PREP_RESIDUAL bool 'Support for PReP Residual Data' CONFIG_PREP_RESIDUAL
dep_bool ' Support for reading of PReP Residual Data in /proc' CONFIG_PROC_PREPRESIDUAL $CONFIG_PREP_RESIDUAL
fi fi
bool 'Default bootloader kernel arguments' CONFIG_CMDLINE_BOOL bool 'Default bootloader kernel arguments' CONFIG_CMDLINE_BOOL
...@@ -574,7 +575,7 @@ if [ "$CONFIG_8260" = "y" ]; then ...@@ -574,7 +575,7 @@ if [ "$CONFIG_8260" = "y" ]; then
source arch/ppc/8260_io/Config.in source arch/ppc/8260_io/Config.in
fi fi
if [ "$CONFIG_4xx" = "y"]; then if [ "$CONFIG_4xx" = "y" ]; then
mainmenu_option next_comment mainmenu_option next_comment
comment 'IBM 4xx options' comment 'IBM 4xx options'
if [ "$CONFIG_STB03xxx" = "y" ]; then if [ "$CONFIG_STB03xxx" = "y" ]; then
...@@ -621,8 +622,8 @@ if [ "$CONFIG_ALL_PPC" = "y" ]; then ...@@ -621,8 +622,8 @@ if [ "$CONFIG_ALL_PPC" = "y" ]; then
fi fi
if [ "$CONFIG_4xx" = "y" -o "$CONFIG_GT64260" = "y" \ if [ "$CONFIG_4xx" = "y" -o "$CONFIG_GT64260" = "y" \
-o "$CONFIG_LOPEC" = "y" -o "$CONFIG_MCPN765" = "y" \ -o "$CONFIG_LOPEC" = "y" -o "$CONFIG_MCPN765" = "y" \
-o "$CONFIG_PRPMC800" = "y" -o "$CONFIG_SANDPOINT" = "y" \ -o "$CONFIG_PPLUS" = "y" -o "$CONFIG_PRPMC800" = "y" \
-o "$CONFIG_ZX4500" = "y" ]; then -o "$CONFIG_SANDPOINT" = "y" -o "$CONFIG_ZX4500" = "y" ]; then
bool 'Support for early boot texts over serial port' CONFIG_SERIAL_TEXT_DEBUG bool 'Support for early boot texts over serial port' CONFIG_SERIAL_TEXT_DEBUG
fi fi
endmenu endmenu
...@@ -54,19 +54,18 @@ obj-$(CONFIG_PM) += ppc4xx_pm.o ...@@ -54,19 +54,18 @@ obj-$(CONFIG_PM) += ppc4xx_pm.o
endif endif
obj-$(CONFIG_8xx) += m8xx_setup.o ppc8xx_pic.o obj-$(CONFIG_8xx) += m8xx_setup.o ppc8xx_pic.o
ifeq ($(CONFIG_8xx),y) ifeq ($(CONFIG_8xx),y)
obj-$(CONFIG_PCI) += qspan_pci.o obj-$(CONFIG_PCI) += qspan_pci.o i8259.o
ifndef CONFIG_MATH_EMULATION ifneq ($(CONFIG_MATH_EMULATION),n)
obj-y += softemu8xx.o obj-y += softemu8xx.o
endif endif
endif endif
obj-$(CONFIG_MBX) += i8259.o
obj-$(CONFIG_ALL_PPC) += prom_init.o prom.o open_pic.o \ obj-$(CONFIG_ALL_PPC) += prom_init.o prom.o open_pic.o \
indirect_pci.o i8259.o indirect_pci.o i8259.o
obj-$(CONFIG_ADIR) += i8259.o indirect_pci.o pci_auto.o \ obj-$(CONFIG_ADIR) += i8259.o indirect_pci.o pci_auto.o \
todc_time.o todc_time.o
obj-$(CONFIG_EV64260) += gt64260_common.o gt64260_pic.o \ obj-$(CONFIG_EV64260) += gt64260_common.o gt64260_pic.o \
indirect_pci.o todc_time.o pci_auto.o indirect_pci.o todc_time.o pci_auto.o
obj-$(CONFIG_GEMINI) += open_pic.o obj-$(CONFIG_GEMINI) += open_pic.o i8259.o
obj-$(CONFIG_K2) += i8259.o indirect_pci.o todc_time.o \ obj-$(CONFIG_K2) += i8259.o indirect_pci.o todc_time.o \
pci_auto.o pci_auto.o
obj-$(CONFIG_LOPEC) += mpc10x_common.o indirect_pci.o pci_auto.o \ obj-$(CONFIG_LOPEC) += mpc10x_common.o indirect_pci.o pci_auto.o \
......
...@@ -21,65 +21,51 @@ static spinlock_t i8259_lock = SPIN_LOCK_UNLOCKED; ...@@ -21,65 +21,51 @@ static spinlock_t i8259_lock = SPIN_LOCK_UNLOCKED;
int i8259_pic_irq_offset; int i8259_pic_irq_offset;
/* Acknowledge the irq using the PCI host bridge's interrupt acknowledge /*
* feature. (Polling is somehow broken on some IBM and Motorola PReP boxes.) * Acknowledge the IRQ using either the PCI host bridge's interrupt
* acknowledge feature or poll. How i8259_init() is called determines
* which is called. It should be noted that polling is broken on some
* IBM and Motorola PReP boxes so we must use the int-ack feature on them.
*/ */
int i8259_irq(struct pt_regs *regs) int
i8259_irq(struct pt_regs *regs)
{ {
int irq; int irq;
spin_lock/*_irqsave*/(&i8259_lock/*, flags*/); spin_lock(&i8259_lock);
/* Either int-ack or poll for the IRQ */
if (pci_intack)
irq = *pci_intack; irq = *pci_intack;
if (irq==7) { else {
/* /* Perform an interrupt acknowledge cycle on controller 1. */
* This may be a spurious interrupt.
*
* Read the interrupt status register (ISR). If the most
* significant bit is not set then there is no valid
* interrupt.
*/
if(~inb(0x20)&0x80) {
irq = -1;
}
}
spin_unlock/*_irqrestore*/(&i8259_lock/*, flags*/);
return irq;
}
/* Poke the 8259's directly using poll commands. */
int i8259_poll(void)
{
int irq;
spin_lock/*_irqsave*/(&i8259_lock/*, flags*/);
/*
* Perform an interrupt acknowledge cycle on controller 1
*/
outb(0x0C, 0x20); /* prepare for poll */ outb(0x0C, 0x20); /* prepare for poll */
irq = inb(0x20) & 7; irq = inb(0x20) & 7;
if (irq == 2) { if (irq == 2 ) {
/* /*
* Interrupt is cascaded so perform interrupt * Interrupt is cascaded so perform interrupt
* acknowledge on controller 2 * acknowledge on controller 2.
*/ */
outb(0x0C, 0xA0); /* prepare for poll */ outb(0x0C, 0xA0); /* prepare for poll */
irq = (inb(0xA0) & 7) + 8; irq = (inb(0xA0) & 7) + 8;
} else if (irq==7) { }
}
if (irq == 7) {
/* /*
* This may be a spurious interrupt * This may be a spurious interrupt.
* *
* Read the interrupt status register. If the most * Read the interrupt status register (ISR). If the most
* significant bit is not set then there is no valid * significant bit is not set then there is no valid
* interrupt * interrupt.
*/ */
outb(0x0b, 0x20); if (!pci_intack)
if(~inb(0x20)&0x80) { outb(0x0B, 0x20); /* ISR register */
spin_unlock/*_irqrestore*/(&i8259_lock/*, flags*/); if(~inb(0x20) & 0x80)
return -1; irq = -1;
}
} }
spin_unlock/*_irqrestore*/(&i8259_lock/*, flags*/);
spin_unlock(&i8259_lock);
return irq; return irq;
} }
...@@ -171,11 +157,13 @@ static struct resource pic_edgectrl_iores = { ...@@ -171,11 +157,13 @@ static struct resource pic_edgectrl_iores = {
"8259 edge control", 0x4d0, 0x4d1, IORESOURCE_BUSY "8259 edge control", 0x4d0, 0x4d1, IORESOURCE_BUSY
}; };
/* i8259_init() /*
* i8259_init()
* intack_addr - PCI interrupt acknowledge (real) address which will return * intack_addr - PCI interrupt acknowledge (real) address which will return
* the active irq from the 8259 * the active irq from the 8259
*/ */
void __init i8259_init(long intack_addr) void __init
i8259_init(long intack_addr)
{ {
unsigned long flags; unsigned long flags;
...@@ -209,9 +197,6 @@ void __init i8259_init(long intack_addr) ...@@ -209,9 +197,6 @@ void __init i8259_init(long intack_addr)
request_resource(&ioport_resource, &pic2_iores); request_resource(&ioport_resource, &pic2_iores);
request_resource(&ioport_resource, &pic_edgectrl_iores); request_resource(&ioport_resource, &pic_edgectrl_iores);
/* XXX remove me after board maintainers fix their i8259_init calls */ if (intack_addr != 0)
if (intack_addr == 0)
panic("You must supply a PCI interrupt acknowledge address to i8259_init()\n");
pci_intack = ioremap(intack_addr, 1); pci_intack = ioremap(intack_addr, 1);
} }
...@@ -799,26 +799,20 @@ static void openpic_ipi_action(int cpl, void *dev_id, struct pt_regs *regs) ...@@ -799,26 +799,20 @@ static void openpic_ipi_action(int cpl, void *dev_id, struct pt_regs *regs)
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
/* This one may be merged with PReP and CHRP */
int int
openpic_get_irq(struct pt_regs *regs) openpic_get_irq(struct pt_regs *regs)
{ {
/*
* Clean up needed. -VAL
*/
int irq = openpic_irq(); int irq = openpic_irq();
/* Management of the cascade should be moved out of here */ /*
* This needs to be cleaned up. We don't necessarily have
/* Yep - because openpic !=> i8259, for one thing. -VAL */ * an i8259 cascaded or even a cascade.
if (open_pic_irq_offset && irq == open_pic_irq_offset) */
{ if (open_pic_irq_offset && irq == open_pic_irq_offset) {
#ifndef CONFIG_GEMINI /* Get the IRQ from the cascade. */
irq = i8259_irq(regs); /* get IRQ from cascade */ irq = i8259_irq(regs);
#endif
openpic_eoi(); openpic_eoi();
} } else if (irq == OPENPIC_VEC_SPURIOUS + open_pic_irq_offset)
if (irq == OPENPIC_VEC_SPURIOUS + open_pic_irq_offset)
irq = -1; irq = -1;
return irq; return irq;
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Author: Dan Cox * Author: Dan Cox
* danc@mvista.com (or, alternately, source@mvista.com) * danc@mvista.com (or, alternately, source@mvista.com)
* *
* Copyright 2001 MontaVista Software Inc. * Copyright 2001-2002 MontaVista Software Inc.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the * under the terms of the GNU General Public License as published by the
...@@ -14,18 +14,11 @@ ...@@ -14,18 +14,11 @@
* option) any later version. * option) any later version.
*/ */
#include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/slab.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/byteorder.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
#include <asm/pci-bridge.h> #include <asm/pci-bridge.h>
#include <asm/open_pic.h>
#include <asm/mpc10x.h> #include <asm/mpc10x.h>
static inline int __init static inline int __init
......
...@@ -15,34 +15,23 @@ ...@@ -15,34 +15,23 @@
*/ */
#include <linux/config.h> #include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/pci.h>
#include <linux/time.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/major.h> #include <linux/delay.h>
#include <linux/kdev_t.h> #include <linux/pci_ids.h>
#include <linux/ioport.h>
#include <linux/init.h>
#include <linux/ide.h> #include <linux/ide.h>
#include <linux/irq.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/blk.h>
#include <linux/console.h> #include <linux/console.h>
#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/machdep.h>
#include <asm/page.h>
#include <asm/dma.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/time.h>
#include <asm/delay.h>
#include <asm/irq.h>
#include <asm/open_pic.h> #include <asm/open_pic.h>
#include <asm/i8259.h> #include <asm/i8259.h>
#include <asm/pci-bridge.h>
#include <asm/todc.h> #include <asm/todc.h>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#include <asm/mpc10x.h> #include <asm/mpc10x.h>
#include <asm/hw_irq.h>
extern void lopec_find_bridges(void); extern void lopec_find_bridges(void);
...@@ -230,7 +219,7 @@ lopec_init_IRQ(void) ...@@ -230,7 +219,7 @@ lopec_init_IRQ(void)
i8259_init(0xfef00000); i8259_init(0xfef00000);
} }
void __init static int __init
lopec_request_io(void) lopec_request_io(void)
{ {
outb(0x00, 0x4d0); outb(0x00, 0x4d0);
...@@ -242,9 +231,11 @@ lopec_request_io(void) ...@@ -242,9 +231,11 @@ lopec_request_io(void)
request_region(0x80, 0x10, "dma page reg"); request_region(0x80, 0x10, "dma page reg");
request_region(0xa0, 0x20, "pic2"); request_region(0xa0, 0x20, "pic2");
request_region(0xc0, 0x20, "dma2"); request_region(0xc0, 0x20, "dma2");
return 0;
} }
arch_initcall(lopec_request_io); device_initcall(lopec_request_io);
static void __init static void __init
lopec_map_io(void) lopec_map_io(void)
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Author: Mark A. Greer * Author: Mark A. Greer
* mgreer@mvista.com * mgreer@mvista.com
* *
* Copyright 2001 MontaVista Software Inc. * Copyright 2001-2002 MontaVista Software Inc.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the * under the terms of the GNU General Public License as published by the
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/ide.h> #include <linux/ide.h>
#include <linux/irq.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <asm/system.h> #include <asm/system.h>
...@@ -125,7 +124,7 @@ mcpn765_setup_arch(void) ...@@ -125,7 +124,7 @@ mcpn765_setup_arch(void)
OpenPIC_NumInitSenses = sizeof(mcpn765_openpic_initsenses); OpenPIC_NumInitSenses = sizeof(mcpn765_openpic_initsenses);
printk("Motorola MCG MCPN765 cPCI Non-System Board\n"); printk("Motorola MCG MCPN765 cPCI Non-System Board\n");
printk("MCPN765 port (C) 2001 MontaVista Software, Inc. (source@mvista.com)\n"); printk("MCPN765 port (MontaVista Software, Inc. (source@mvista.com))\n");
if ( ppc_md.progress ) if ( ppc_md.progress )
ppc_md.progress("mcpn765_setup_arch: exit", 0); ppc_md.progress("mcpn765_setup_arch: exit", 0);
......
...@@ -72,7 +72,6 @@ ...@@ -72,7 +72,6 @@
#include <asm/todc.h> #include <asm/todc.h>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#undef CONFIG_SERIAL_TEXT_DEBUG
#undef DUMP_DBATS #undef DUMP_DBATS
TODC_ALLOC(); TODC_ALLOC();
...@@ -500,9 +499,7 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ...@@ -500,9 +499,7 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
#ifdef CONFIG_SERIAL_TEXT_DEBUG #ifdef CONFIG_SERIAL_TEXT_DEBUG
ppc_md.progress = pplus_progress; ppc_md.progress = pplus_progress;
#else /* !CONFIG_SERIAL_TEXT_DEBUG */ #endif
ppc_md.progress = NULL;
#endif /* CONFIG_SERIAL_TEXT_DEBUG */
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
ppc_ide_md.default_irq = pplus_ide_default_irq; ppc_ide_md.default_irq = pplus_ide_default_irq;
......
...@@ -117,9 +117,6 @@ prep_show_cpuinfo(struct seq_file *m) ...@@ -117,9 +117,6 @@ prep_show_cpuinfo(struct seq_file *m)
{ {
extern char *Motherboard_map_name; extern char *Motherboard_map_name;
int cachew; int cachew;
#ifdef CONFIG_PREP_RESIDUAL
int i;
#endif
seq_printf(m, "machine\t\t: PReP %s\n", Motherboard_map_name); seq_printf(m, "machine\t\t: PReP %s\n", Motherboard_map_name);
...@@ -180,6 +177,8 @@ prep_show_cpuinfo(struct seq_file *m) ...@@ -180,6 +177,8 @@ prep_show_cpuinfo(struct seq_file *m)
no_l2: no_l2:
#ifdef CONFIG_PREP_RESIDUAL #ifdef CONFIG_PREP_RESIDUAL
if (res->ResidualLength != 0) { if (res->ResidualLength != 0) {
int i;
/* print info about SIMMs */ /* print info about SIMMs */
seq_printf(m, "simms\t\t: "); seq_printf(m, "simms\t\t: ");
for (i = 0; (res->ActualNumMemories) && (i < MAX_MEMS); i++) { for (i = 0; (res->ActualNumMemories) && (i < MAX_MEMS); i++) {
...@@ -812,8 +811,8 @@ prep_map_io(void) ...@@ -812,8 +811,8 @@ prep_map_io(void)
io_block_mapping(0xf0000000, PREP_ISA_MEM_BASE, 0x08000000, _PAGE_IO); io_block_mapping(0xf0000000, PREP_ISA_MEM_BASE, 0x08000000, _PAGE_IO);
} }
static void __init static int __init
prep_init2(void) prep_request_io(void)
{ {
#ifdef CONFIG_NVRAM #ifdef CONFIG_NVRAM
request_region(PREP_NVRAM_AS0, 0x8, "nvram"); request_region(PREP_NVRAM_AS0, 0x8, "nvram");
...@@ -822,8 +821,12 @@ prep_init2(void) ...@@ -822,8 +821,12 @@ prep_init2(void)
request_region(0x40,0x20,"timer"); request_region(0x40,0x20,"timer");
request_region(0x80,0x10,"dma page reg"); request_region(0x80,0x10,"dma page reg");
request_region(0xc0,0x20,"dma2"); request_region(0xc0,0x20,"dma2");
return 0;
} }
device_initcall(prep_request_io);
void __init void __init
prep_init(unsigned long r3, unsigned long r4, unsigned long r5, prep_init(unsigned long r3, unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7) unsigned long r6, unsigned long r7)
...@@ -863,7 +866,6 @@ prep_init(unsigned long r3, unsigned long r4, unsigned long r5, ...@@ -863,7 +866,6 @@ prep_init(unsigned long r3, unsigned long r4, unsigned long r5,
ppc_md.init_IRQ = prep_init_IRQ; ppc_md.init_IRQ = prep_init_IRQ;
/* this gets changed later on if we have an OpenPIC -- Cort */ /* this gets changed later on if we have an OpenPIC -- Cort */
ppc_md.get_irq = i8259_irq; ppc_md.get_irq = i8259_irq;
ppc_md.init = prep_init2;
ppc_md.restart = prep_restart; ppc_md.restart = prep_restart;
ppc_md.power_off = prep_power_off; ppc_md.power_off = prep_power_off;
......
...@@ -876,3 +876,38 @@ PnP_TAG_PACKET __init *PnP_find_large_vendor_packet(unsigned char *p, ...@@ -876,3 +876,38 @@ PnP_TAG_PACKET __init *PnP_find_large_vendor_packet(unsigned char *p,
}; };
return 0; /* not found */ return 0; /* not found */
} }
#ifdef CONFIG_PROC_PREPRESIDUAL
static int proc_prep_residual_read(char * buf, char ** start, off_t off,
int count, int *eof, void *data)
{
int n;
n = res->ResidualLength - off;
if (n < 0) {
*eof = 1;
n = 0;
}
else {
if (n > count)
n = count;
else
*eof = 1;
memcpy(buf, (char *)res + off, n);
*start = buf;
}
return n;
}
void __init
proc_prep_residual_init(void)
{
if (res->ResidualLength)
create_proc_read_entry("residual", S_IRUGO, NULL,
proc_prep_residual_read, NULL);
}
__initcall(proc_prep_residual_init);
#endif
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Author: Mark A. Greer * Author: Mark A. Greer
* mgreer@mvista.com * mgreer@mvista.com
* *
* Copyright 2000, 2001 MontaVista Software Inc. * Copyright 2000-2002 MontaVista Software Inc.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the * under the terms of the GNU General Public License as published by the
...@@ -71,7 +71,6 @@ ...@@ -71,7 +71,6 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/ide.h> #include <linux/ide.h>
#include <linux/irq.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <asm/system.h> #include <asm/system.h>
...@@ -180,7 +179,7 @@ sandpoint_setup_arch(void) ...@@ -180,7 +179,7 @@ sandpoint_setup_arch(void)
#endif #endif
printk("Motorola SPS Sandpoint Test Platform\n"); printk("Motorola SPS Sandpoint Test Platform\n");
printk("Sandpoint port (C) 2000, 2001 MontaVista Software, Inc. (source@mvista.com)\n"); printk("Sandpoint port (MontaVista Software, Inc. (source@mvista.com))\n");
/* The Sandpoint rom doesn't enable any caches. Do that now. /* The Sandpoint rom doesn't enable any caches. Do that now.
* The 7450 portion will also set up the L3s once I get enough * The 7450 portion will also set up the L3s once I get enough
......
...@@ -9,8 +9,7 @@ ...@@ -9,8 +9,7 @@
extern struct hw_interrupt_type i8259_pic; extern struct hw_interrupt_type i8259_pic;
void i8259_init(long); extern void i8259_init(long intack_addr);
int i8259_irq(struct pt_regs *regs); extern int i8259_irq(struct pt_regs *regs);
int i8259_poll(void);
#endif /* _PPC_KERNEL_i8259_H */ #endif /* _PPC_KERNEL_i8259_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment