Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
authorLinus Torvalds <torvalds@g5.osdl.org>
Sat, 15 Jul 2006 04:57:23 +0000 (21:57 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 15 Jul 2006 04:57:23 +0000 (21:57 -0700)
* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64] Fix PSYCHO PCI controler init.
  [SPARC64] psycho: Fix pbm->name handling in pbm_register_toplevel_resources()
  [SERIAL] sunsab: Fix significant typo in sab_probe()
  [SERIAL] sunsu: Report keyboard and mouse ports in kernel log.
  [SPARC64]: Make sure IRQs are disabled properly during early boot.

arch/sparc64/kernel/head.S
arch/sparc64/kernel/pci_psycho.c
arch/sparc64/kernel/time.c
drivers/serial/sunsab.c
drivers/serial/sunsu.c

index 75684b5..c8e9dc9 100644 (file)
@@ -551,9 +551,10 @@ setup_trap_table:
        save    %sp, -192, %sp
 
        /* Force interrupts to be disabled. */
-       rdpr    %pstate, %o1
-       andn    %o1, PSTATE_IE, %o1
+       rdpr    %pstate, %l0
+       andn    %l0, PSTATE_IE, %o1
        wrpr    %o1, 0x0, %pstate
+       rdpr    %pil, %l1
        wrpr    %g0, 15, %pil
 
        /* Make the firmware call to jump over to the Linux trap table.  */
@@ -622,11 +623,9 @@ setup_trap_table:
        call    init_irqwork_curcpu
         nop
 
-       /* Now we can turn interrupts back on. */
-       rdpr    %pstate, %o1
-       or      %o1, PSTATE_IE, %o1
-       wrpr    %o1, 0, %pstate
-       wrpr    %g0, 0x0, %pil
+       /* Now we can restore interrupt state. */
+       wrpr    %l0, 0, %pstate
+       wrpr    %l1, 0x0, %pil
 
        ret
         restore
index 197a7ff..1ec0aab 100644 (file)
@@ -1099,9 +1099,6 @@ static void pbm_register_toplevel_resources(struct pci_controller_info *p,
 {
        char *name = pbm->name;
 
-       sprintf(name, "PSYCHO%d PBM%c",
-               p->index,
-               (pbm == &p->pbm_A ? 'A' : 'B'));
        pbm->io_space.name = pbm->mem_space.name = name;
 
        request_resource(&ioport_resource, &pbm->io_space);
@@ -1203,12 +1200,13 @@ static void psycho_pbm_init(struct pci_controller_info *p,
        pbm->io_space.flags = IORESOURCE_IO;
        pbm->mem_space.end = pbm->mem_space.start + PSYCHO_MEMSPACE_SIZE;
        pbm->mem_space.flags = IORESOURCE_MEM;
-       pbm_register_toplevel_resources(p, pbm);
 
        pbm->parent = p;
        pbm->prom_node = dp;
        pbm->name = dp->full_name;
 
+       pbm_register_toplevel_resources(p, pbm);
+
        printk("%s: PSYCHO PCI Bus Module ver[%x:%x]\n",
               pbm->name,
               pbm->chip_version, pbm->chip_revision);
index b43de64..094d3e3 100644 (file)
@@ -928,8 +928,6 @@ static void sparc64_start_timers(void)
        __asm__ __volatile__("wrpr      %0, 0x0, %%pstate"
                             : /* no outputs */
                             : "r" (pstate));
-
-       local_irq_enable();
 }
 
 struct freq_table {
index 0dbd4df..979497f 100644 (file)
@@ -1052,7 +1052,7 @@ static int __devinit sab_probe(struct of_device *op, const struct of_device_id *
        if (err)
                return err;
 
-       err = sunsab_init_one(&up[0], op, 0,
+       err = sunsab_init_one(&up[1], op, 0,
                              (inst * 2) + 1);
        if (err) {
                of_iounmap(up[0].port.membase,
index 93bdaa3..d3a5aee 100644 (file)
@@ -1200,6 +1200,11 @@ static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up)
        if (up->port.type == PORT_UNKNOWN)
                return -ENODEV;
 
+       printk("%s: %s port at %lx, irq %u\n",
+              to_of_device(up->port.dev)->node->full_name,
+              (up->su_type == SU_PORT_KBD) ? "Keyboard" : "Mouse",
+              up->port.mapbase, up->port.irq);
+
 #ifdef CONFIG_SERIO
        serio = &up->serio;
        serio->port_data = up;