ref: bf0946b7070f09967c86a1dc90bc1812fd7fa82c
parent: e8f6e6b568dd66c9f76f34a296672437d629407d
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Aug 5 06:44:03 EDT 2015
pc, pc64: remove unused psaux driver, cleanup devkbd the psaux driver is not used in any kernel configuration and theres no userspace mouse daemon. i8042auxcmds() is wrong as access to the user buffer can fault and we are holding an ilocks. little cleanups in devkbd.
--- a/sys/src/9/pc/devkbd.c
+++ b/sys/src/9/pc/devkbd.c
@@ -159,24 +159,6 @@
return 0;
}
-int
-i8042auxcmds(uchar *cmd, int ncmd)
-{- int i;
-
- ilock(&i8042lock);
- for(i=0; i<ncmd; i++){- if(outready() < 0)
- break;
- outb(Cmd, 0xD4);
- if(outready() < 0)
- break;
- outb(Data, cmd[i]);
- }
- iunlock(&i8042lock);
- return i;
-}
-
/*
* set keyboard's leds for lock states (scroll, numeric, caps).
*
@@ -252,7 +234,7 @@
void
i8042auxenable(void (*putc)(int, int))
{- char *err = "i8042: aux init failed\n";
+ static char err[] = "i8042: aux init failed\n";
ilock(&i8042lock);
@@ -293,6 +275,7 @@
{if(nokbd)
return;
+ /* disable kbd and aux xfers and interrupts */
ccc &= ~(Ckbdint|Cauxint);
ccc |= (Cauxdis|Ckbddis);
outready();
@@ -391,7 +374,7 @@
static void
kbdreset(void)
{- static char *initfailed = "i8042: init failed\n";
+ static char initfailed[] = "i8042: kbd init failed\n";
int c, try;
kbd.q = qopen(1024, Qcoalesce, 0, 0);
@@ -437,8 +420,8 @@
outready();
nokbd = 0;
- ioalloc(Data, 1, 0, "kbd");
- ioalloc(Cmd, 1, 0, "kbd");
+ ioalloc(Cmd, 1, 0, "i8042.cs");
+ ioalloc(Data, 1, 0, "i8042.data");
intrenable(IrqKBD, i8042intr, 0, BUSUNKNOWN, "kbd");
}
--- a/sys/src/9/pc/fns.h
+++ b/sys/src/9/pc/fns.h
@@ -58,7 +58,6 @@
void halt(void);
void mwait(void*);
int i8042auxcmd(int);
-int i8042auxcmds(uchar*, int);
void i8042auxenable(void (*)(int, int));
void i8042reset(void);
void i8250console(void);
--- a/sys/src/9/pc/psaux.c
+++ /dev/null
@@ -1,57 +1,0 @@
-/*
- * Interface to raw PS/2 aux port.
- * Used by user-level mouse daemon.
- */
-
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "../port/error.h"
-#include "io.h"
-
-#define Image IMAGE
-#include <draw.h>
-#include <memdraw.h>
-#include <cursor.h>
-#include "screen.h"
-
-/*
- * BUG: we ignore shift here.
- * we need a more general solution,
- * one that will also work for serial mice.
- */
-Queue *psauxq;
-
-static void
-psauxputc(int c, int)
-{- uchar uc;
-
- uc = c;
- qproduce(psauxq, &uc, 1);
-}
-
-static long
-psauxread(Chan*, void *a, long n, vlong)
-{- return qread(psauxq, a, n);
-}
-
-static long
-psauxwrite(Chan*, void *a, long n, vlong)
-{- return i8042auxcmds(a, n);
-}
-
-void
-psauxlink(void)
-{- psauxq = qopen(1024, Qcoalesce, 0, 0);
- if(psauxq == nil)
- panic("psauxlink");- qnoblock(psauxq, 1);
- i8042auxenable(psauxputc);
- addarchfile("psaux", DMEXCL|0660, psauxread, psauxwrite);-}
--- a/sys/src/9/pc64/fns.h
+++ b/sys/src/9/pc64/fns.h
@@ -49,7 +49,6 @@
void halt(void);
void mwait(void*);
int i8042auxcmd(int);
-int i8042auxcmds(uchar*, int);
void i8042auxenable(void (*)(int, int));
void i8042reset(void);
void i8250console(void);
--
⑨