|
From: James S. <jsi...@us...> - 2002-02-28 00:42:02
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/input/serio
In directory usw-pr-cvs1:/tmp/cvs-serv23132
Modified Files:
sun8042.c
Log Message:
More cleanups. Still a long way to go.
Index: sun8042.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/input/serio/sun8042.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- sun8042.c 28 Feb 2002 00:09:11 -0000 1.11
+++ sun8042.c 28 Feb 2002 00:41:59 -0000 1.12
@@ -134,7 +134,7 @@
return NULL; /* success */
}
-void __init pcikbd_init_hw(void)
+int __init sun8042_port_register(&i8042_kbd_values, &i8042_kbd_port)
{
struct linux_ebus *ebus;
struct linux_ebus_device *edev;
@@ -219,7 +219,7 @@
printk("8042: keyboard init failure [%s]\n", msg);
}
-int __init pcimouse_init(void)
+int __init sun8042_port_register(&i8042_aux_values, &i8042_aux_port)
{
struct linux_ebus *ebus;
struct linux_ebus_device *edev;
@@ -228,7 +228,7 @@
if (pcikbd_mrcoffee) {
if ((pcimouse_iobase = pcikbd_iobase) == 0) {
printk("pcimouse_init: no 8042 given\n");
- goto do_enodev;
+ return -ENODEV;
}
pcimouse_irq = pcikbd_irq;
} else {
@@ -244,62 +244,27 @@
}
}
printk("pcimouse_init: no 8042 found\n");
- goto do_enodev;
-
+ return -ENODEV;
found:
pcimouse_iobase = child->resource[0].start;
pcimouse_irq = child->irqs[0];
}
- queue = (struct aux_queue *) kmalloc(sizeof(*queue), GFP_KERNEL);
- if (!queue) {
- printk("pcimouse_init: kmalloc(aux_queue) failed.\n");
- return -ENOMEM;
- }
- memset(queue, 0, sizeof(*queue));
-
- init_waitqueue_head(&queue->proc_list);
-
if (request_irq(pcimouse_irq, &pcimouse_interrupt,
SA_SHIRQ, "mouse", (void *)pcimouse_iobase)) {
printk("8042: Cannot register IRQ %s\n",
__irq_itoa(pcimouse_irq));
- goto do_enodev;
+ return -ENODEV;
}
printk("8042(mouse) at %lx (irq %s)\n", pcimouse_iobase,
__irq_itoa(pcimouse_irq));
printk("8042: PS/2 auxiliary pointing device detected.\n");
- aux_present = 1;
- pckbd_read_mask = AUX_STAT_OBF;
-
- misc_register(&psaux_mouse);
- aux_start_atomic();
- pcimouse_outb(KBD_CCMD_MOUSE_ENABLE, pcimouse_iobase + KBD_CNTL_REG);
- aux_write_ack(AUX_RESET);
- aux_write_ack(AUX_SET_SAMPLE);
- aux_write_ack(100);
- aux_write_ack(AUX_SET_RES);
- aux_write_ack(3);
- aux_write_ack(AUX_SET_SCALE21);
- poll_aux_status();
- pcimouse_outb(KBD_CCMD_MOUSE_DISABLE, pcimouse_iobase + KBD_CNTL_REG);
- poll_aux_status();
- pcimouse_outb(KBD_CCMD_WRITE_MODE, pcimouse_iobase + KBD_CNTL_REG);
- poll_aux_status();
- pcimouse_outb(AUX_INTS_OFF, pcimouse_iobase + KBD_DATA_REG);
- poll_aux_status();
- aux_end_atomic();
-
return 0;
-
-do_enodev:
- misc_register(&psaux_no_mouse);
- return -ENODEV;
}
-int __init ps2kbd_probe(void)
+int __init sun8042_init(void)
{
int pnode, enode, node, dnode, xnode;
int kbnode = 0, msnode = 0, bnode = 0;
@@ -314,11 +279,11 @@
len = prom_getproperty(prom_root_node, "name", prop, sizeof(prop));
if (len < 0) {
printk("ps2kbd_probe: no name of root node\n");
- goto do_enodev;
+ return -ENODEV;
}
if (strncmp(prop, "SUNW,JavaStation-1", len) == 0) {
pcikbd_mrcoffee = 1; /* Brain damage detected */
- goto found;
+ return 0;
}
#endif
/*
@@ -327,7 +292,7 @@
node = prom_getchild(prom_root_node);
node = prom_searchsiblings(node, "aliases");
if (!node)
- goto do_enodev;
+ return -ENODEV;
len = prom_getproperty(node, "keyboard", prop, sizeof(prop));
if (len > 0) {
@@ -335,7 +300,7 @@
kbnode = prom_finddevice(prop);
}
if (!kbnode)
- goto do_enodev;
+ return -ENODEV;
len = prom_getproperty(node, "mouse", prop, sizeof(prop));
if (len > 0) {
@@ -343,7 +308,7 @@
msnode = prom_finddevice(prop);
}
if (!msnode)
- goto do_enodev;
+ return -ENODEV;
/*
* Find matching EBus nodes...
@@ -387,23 +352,17 @@
* Does it match?
*/
if ((xnode = prom_searchsiblings(dnode, PCI_KB_NAME1)) == kbnode) {
- ++devices;
+ sun8042_port_register(&i8042_kbd_values, &i8042_kbd_port);
} else if ((xnode = prom_searchsiblings(dnode, PCI_KB_NAME2)) == kbnode) {
- ++devices;
+ sun8042_port_register(&i8042_kbd_values, &i8042_kbd_port);
}
if ((xnode = prom_searchsiblings(dnode, PCI_MS_NAME1)) == msnode) {
- ++devices;
+ sun8042_port_register(&i8042_aux_values, &i8042_aux_port);
} else if ((xnode = prom_searchsiblings(dnode, PCI_MS_NAME2)) == msnode) {
- ++devices;
+
+ sun8042_port_register(&i8042_aux_values, &i8042_aux_port);
}
-
- /*
- * Found everything we need?
- */
- if (devices == 2)
- goto found;
-
node = prom_getsibling(node);
node = prom_searchsiblings(node, "8042");
}
@@ -413,17 +372,5 @@
pnode = prom_getsibling(pnode);
pnode = prom_searchsiblings(pnode, "pci");
}
-do_enodev:
- sunkbd_setinitfunc(pcimouse_no_init);
- return -ENODEV;
-
-found:
- sunkbd_setinitfunc(pcimouse_init);
- sunkbd_setinitfunc(pcikbd_init);
- kbd_ops.compute_shiftstate = pci_compute_shiftstate;
- kbd_ops.setledstate = pci_setledstate;
- kbd_ops.getledstate = pci_getledstate;
- kbd_ops.setkeycode = pci_setkeycode;
- kbd_ops.getkeycode = pci_getkeycode;
return 0;
}
|