Commit 47f29261 authored by Joshua Uziel's avatar Joshua Uziel Committed by David S. Miller

Merge 2.4.x VGER sparc32 changes into 2.5.x

parent 91d6d308
...@@ -47,8 +47,6 @@ ...@@ -47,8 +47,6 @@
#include <asm/hardirq.h> #include <asm/hardirq.h>
#include <asm/machines.h> #include <asm/machines.h>
#undef PROM_DEBUG_CONSOLE
struct screen_info screen_info = { struct screen_info screen_info = {
0, 0, /* orig-x, orig-y */ 0, 0, /* orig-x, orig-y */
0, /* unused */ 0, /* unused */
...@@ -134,6 +132,19 @@ void kernel_enter_debugger(void) ...@@ -134,6 +132,19 @@ void kernel_enter_debugger(void)
} }
} }
static void
prom_console_write(struct console *con, const char *s, unsigned n)
{
prom_printf("%s", s);
}
static struct console prom_debug_console = {
name: "debug",
write: prom_console_write,
flags: CON_PRINTBUFFER,
index: -1,
};
int obp_system_intr(void) int obp_system_intr(void)
{ {
if (boot_flags & BOOTME_KGDB) { if (boot_flags & BOOTME_KGDB) {
...@@ -166,6 +177,10 @@ static void __init process_switch(char c) ...@@ -166,6 +177,10 @@ static void __init process_switch(char c)
prom_printf("boot_flags_init: Halt!\n"); prom_printf("boot_flags_init: Halt!\n");
prom_halt(); prom_halt();
break; break;
case 'p':
/* Use PROM debug console. */
register_console(&prom_debug_console);
break;
default: default:
printk("Unknown boot switch (-%c)\n", c); printk("Unknown boot switch (-%c)\n", c);
break; break;
...@@ -280,21 +295,6 @@ struct tt_entry *sparc_ttable; ...@@ -280,21 +295,6 @@ struct tt_entry *sparc_ttable;
struct pt_regs fake_swapper_regs; struct pt_regs fake_swapper_regs;
#ifdef PROM_DEBUG_CONSOLE
static void
prom_console_write(struct console *con, const char *s, unsigned n)
{
prom_printf("%s", s);
}
static struct console prom_console = {
name: "debug",
write: prom_console_write,
flags: CON_PRINTBUFFER,
index: -1,
};
#endif
extern void paging_init(void); extern void paging_init(void);
void __init setup_arch(char **cmdline_p) void __init setup_arch(char **cmdline_p)
...@@ -348,9 +348,6 @@ void __init setup_arch(char **cmdline_p) ...@@ -348,9 +348,6 @@ void __init setup_arch(char **cmdline_p)
printk("UNKNOWN!\n"); printk("UNKNOWN!\n");
break; break;
}; };
#ifdef PROM_DEBUG_CONSOLE
register_console(&prom_console);
#endif
#ifdef CONFIG_DUMMY_CONSOLE #ifdef CONFIG_DUMMY_CONSOLE
conswitchp = &dummy_con; conswitchp = &dummy_con;
...@@ -381,7 +378,7 @@ void __init setup_arch(char **cmdline_p) ...@@ -381,7 +378,7 @@ void __init setup_arch(char **cmdline_p)
if (!root_flags) if (!root_flags)
root_mountflags &= ~MS_RDONLY; root_mountflags &= ~MS_RDONLY;
ROOT_DEV = to_kdev_t(root_dev); ROOT_DEV = to_kdev_t(root_dev);
#ifdef CONFIG_BLK_DEV_RAM #ifdef CONFIG_BLK_DEV_INITRD
rd_image_start = ram_flags & RAMDISK_IMAGE_START_MASK; rd_image_start = ram_flags & RAMDISK_IMAGE_START_MASK;
rd_prompt = ((ram_flags & RAMDISK_PROMPT_FLAG) != 0); rd_prompt = ((ram_flags & RAMDISK_PROMPT_FLAG) != 0);
rd_doload = ((ram_flags & RAMDISK_LOAD_FLAG) != 0); rd_doload = ((ram_flags & RAMDISK_LOAD_FLAG) != 0);
......
...@@ -1280,7 +1280,10 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs * regs, ...@@ -1280,7 +1280,10 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs * regs,
#endif #endif
/* fall through */ /* fall through */
default: default:
sig_exit(signr, exit_code, &info); sigaddset(&current->pending.signal, signr);
recalc_sigpending(current);
current->flags |= PF_SIGNALED;
do_exit(exit_code);
/* NOT REACHED */ /* NOT REACHED */
} }
} }
......
...@@ -742,7 +742,6 @@ static void __exit soc_cleanup(void) ...@@ -742,7 +742,6 @@ static void __exit soc_cleanup(void)
for_each_soc(s) { for_each_soc(s) {
irq = s->port[0].fc.irq; irq = s->port[0].fc.irq;
disable_irq (irq);
free_irq (irq, s); free_irq (irq, s);
fcp_release(&(s->port[0].fc), 2); fcp_release(&(s->port[0].fc), 2);
......
...@@ -881,7 +881,6 @@ static void __exit socal_cleanup(void) ...@@ -881,7 +881,6 @@ static void __exit socal_cleanup(void)
for_each_socal(s) { for_each_socal(s) {
irq = s->port[0].fc.irq; irq = s->port[0].fc.irq;
disable_irq (irq);
free_irq (irq, s); free_irq (irq, s);
fcp_release(&(s->port[0].fc), 2); fcp_release(&(s->port[0].fc), 2);
......
...@@ -1619,7 +1619,6 @@ static int amd7930_attach(struct sparcaudio_driver *drv, int node, ...@@ -1619,7 +1619,6 @@ static int amd7930_attach(struct sparcaudio_driver *drv, int node,
info->irq = irq.pri; info->irq = irq.pri;
request_irq(info->irq, amd7930_interrupt, request_irq(info->irq, amd7930_interrupt,
SA_INTERRUPT, "amd7930", drv); SA_INTERRUPT, "amd7930", drv);
enable_irq(info->irq);
amd7930_enable_ints(info); amd7930_enable_ints(info);
/* Initalize the local copy of the MAP registers. */ /* Initalize the local copy of the MAP registers. */
...@@ -1644,7 +1643,6 @@ static int amd7930_attach(struct sparcaudio_driver *drv, int node, ...@@ -1644,7 +1643,6 @@ static int amd7930_attach(struct sparcaudio_driver *drv, int node,
err = register_sparcaudio_driver(drv, 1); err = register_sparcaudio_driver(drv, 1);
if (err < 0) { if (err < 0) {
printk(KERN_ERR "amd7930: unable to register\n"); printk(KERN_ERR "amd7930: unable to register\n");
disable_irq(info->irq);
free_irq(info->irq, drv); free_irq(info->irq, drv);
sbus_iounmap(info->regs, info->regs_size); sbus_iounmap(info->regs, info->regs_size);
kfree(drv->private); kfree(drv->private);
...@@ -1666,7 +1664,6 @@ static void __exit amd7930_detach(struct sparcaudio_driver *drv) ...@@ -1666,7 +1664,6 @@ static void __exit amd7930_detach(struct sparcaudio_driver *drv)
unregister_sparcaudio_driver(drv, 1); unregister_sparcaudio_driver(drv, 1);
amd7930_idle(info); amd7930_idle(info);
disable_irq(info->irq);
free_irq(info->irq, drv); free_irq(info->irq, drv);
sbus_iounmap(info->regs, info->regs_size); sbus_iounmap(info->regs, info->regs_size);
kfree(drv->private); kfree(drv->private);
......
...@@ -2210,7 +2210,6 @@ static int cs4231_attach(struct sparcaudio_driver *drv, ...@@ -2210,7 +2210,6 @@ static int cs4231_attach(struct sparcaudio_driver *drv,
/* Attach the interrupt handler to the audio interrupt. */ /* Attach the interrupt handler to the audio interrupt. */
cs4231_chip->irq = sdev->irqs[0]; cs4231_chip->irq = sdev->irqs[0];
request_irq(cs4231_chip->irq, cs4231_interrupt, SA_SHIRQ, "cs4231", drv); request_irq(cs4231_chip->irq, cs4231_interrupt, SA_SHIRQ, "cs4231", drv);
enable_irq(cs4231_chip->irq);
cs4231_chip->nirqs = 1; cs4231_chip->nirqs = 1;
cs4231_enable_interrupts(drv); cs4231_enable_interrupts(drv);
...@@ -2224,7 +2223,6 @@ static int cs4231_attach(struct sparcaudio_driver *drv, ...@@ -2224,7 +2223,6 @@ static int cs4231_attach(struct sparcaudio_driver *drv,
if (err < 0) { if (err < 0) {
printk(KERN_ERR "cs4231: unable to register\n"); printk(KERN_ERR "cs4231: unable to register\n");
cs4231_disable_interrupts(drv); cs4231_disable_interrupts(drv);
disable_irq(cs4231_chip->irq);
free_irq(cs4231_chip->irq, drv); free_irq(cs4231_chip->irq, drv);
sbus_iounmap(cs4231_chip->regs, cs4231_chip->regs_size); sbus_iounmap(cs4231_chip->regs, cs4231_chip->regs_size);
kfree(drv->private); kfree(drv->private);
...@@ -2312,9 +2310,7 @@ static int eb4231_attach(struct sparcaudio_driver *drv, ...@@ -2312,9 +2310,7 @@ static int eb4231_attach(struct sparcaudio_driver *drv,
bail: bail:
printk(KERN_ERR "cs4231: unable to register\n"); printk(KERN_ERR "cs4231: unable to register\n");
cs4231_disable_interrupts(drv); cs4231_disable_interrupts(drv);
disable_irq(cs4231_chip->irq);
free_irq(cs4231_chip->irq, drv); free_irq(cs4231_chip->irq, drv);
disable_irq(cs4231_chip->irq2);
free_irq(cs4231_chip->irq2, drv); free_irq(cs4231_chip->irq2, drv);
kfree(drv->private); kfree(drv->private);
return -EIO; return -EIO;
...@@ -2371,7 +2367,6 @@ static void __exit cs4231_detach(struct sparcaudio_driver *drv) ...@@ -2371,7 +2367,6 @@ static void __exit cs4231_detach(struct sparcaudio_driver *drv)
cs4231_disable_interrupts(drv); cs4231_disable_interrupts(drv);
unregister_sparcaudio_driver(drv, 1); unregister_sparcaudio_driver(drv, 1);
disable_irq(cs4231_chip->irq);
free_irq(cs4231_chip->irq, drv); free_irq(cs4231_chip->irq, drv);
if (!(cs4231_chip->status & CS_STATUS_IS_EBUS)) { if (!(cs4231_chip->status & CS_STATUS_IS_EBUS)) {
sbus_iounmap(cs4231_chip->regs, cs4231_chip->regs_size); sbus_iounmap(cs4231_chip->regs, cs4231_chip->regs_size);
...@@ -2380,7 +2375,6 @@ static void __exit cs4231_detach(struct sparcaudio_driver *drv) ...@@ -2380,7 +2375,6 @@ static void __exit cs4231_detach(struct sparcaudio_driver *drv)
iounmap(cs4231_chip->regs); iounmap(cs4231_chip->regs);
iounmap(cs4231_chip->eb2p); iounmap(cs4231_chip->eb2p);
iounmap(cs4231_chip->eb2c); iounmap(cs4231_chip->eb2c);
disable_irq(cs4231_chip->irq2);
free_irq(cs4231_chip->irq2, drv); free_irq(cs4231_chip->irq2, drv);
#endif #endif
} }
......
...@@ -389,15 +389,11 @@ static int __init ts102_uctrl_init(void) ...@@ -389,15 +389,11 @@ static int __init ts102_uctrl_init(void)
if(!driver->irq) if(!driver->irq)
driver->irq = tmp_irq[0].pri; driver->irq = tmp_irq[0].pri;
request_irq(driver->irq, uctrl_interrupt, 0, request_irq(driver->irq, uctrl_interrupt, 0, "uctrl", driver);
"uctrl", driver);
enable_irq(driver->irq);
if (misc_register(&uctrl_dev)) { if (misc_register(&uctrl_dev)) {
printk("%s: unable to get misc minor %d\n", printk("%s: unable to get misc minor %d\n",
__FUNCTION__, uctrl_dev.minor); __FUNCTION__, uctrl_dev.minor);
disable_irq(driver->irq);
free_irq(driver->irq, driver); free_irq(driver->irq, driver);
return -ENODEV; return -ENODEV;
} }
...@@ -414,10 +410,8 @@ static void __exit ts102_uctrl_cleanup(void) ...@@ -414,10 +410,8 @@ static void __exit ts102_uctrl_cleanup(void)
struct uctrl_driver *driver = &drv; struct uctrl_driver *driver = &drv;
misc_deregister(&uctrl_dev); misc_deregister(&uctrl_dev);
if (driver->irq) { if (driver->irq)
disable_irq(driver->irq);
free_irq(driver->irq, driver); free_irq(driver->irq, driver);
}
if (driver->regs) if (driver->regs)
driver->regs = 0; driver->regs = 0;
} }
......
...@@ -293,6 +293,9 @@ BTFIXUPDEF_CALL_CONST(pte_t, pte_mkyoung, pte_t) ...@@ -293,6 +293,9 @@ BTFIXUPDEF_CALL_CONST(pte_t, pte_mkyoung, pte_t)
#define page_pte_prot(page, prot) mk_pte(page, prot) #define page_pte_prot(page, prot) mk_pte(page, prot)
#define page_pte(page) page_pte_prot(page, __pgprot(0)) #define page_pte(page) page_pte_prot(page, __pgprot(0))
/* Permanent address of a page. */
#define page_address(page) ((page)->virtual)
BTFIXUPDEF_CALL(struct page *, pte_page, pte_t) BTFIXUPDEF_CALL(struct page *, pte_page, pte_t)
#define pte_page(pte) BTFIXUP_CALL(pte_page)(pte) #define pte_page(pte) BTFIXUP_CALL(pte_page)(pte)
......
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