summaryrefslogtreecommitdiffstats
path: root/sys/dev/atkbdc/atkbd.c
diff options
context:
space:
mode:
authoryokota <yokota@FreeBSD.org>1999-08-22 09:52:33 +0000
committeryokota <yokota@FreeBSD.org>1999-08-22 09:52:33 +0000
commitc9a6c5e45ee0200a3cfb5349733d904c3bb9339f (patch)
treec863c8a9db1db731c5f9cddf215957eab25b7c1f /sys/dev/atkbdc/atkbd.c
parentae67da834bc3aff6bb01df8bccc2d8f0ff8b97c9 (diff)
downloadFreeBSD-src-c9a6c5e45ee0200a3cfb5349733d904c3bb9339f.zip
FreeBSD-src-c9a6c5e45ee0200a3cfb5349733d904c3bb9339f.tar.gz
- Remove cdevsw entry points in individual keyboard drivers;
instead, use generic entry points for all drivers. - Eliminate bogus makedev(). - Eliminate softc in the lower drivers, as it is no longer necessary. Submitted (95%) by: phk
Diffstat (limited to 'sys/dev/atkbdc/atkbd.c')
-rw-r--r--sys/dev/atkbdc/atkbd.c113
1 files changed, 8 insertions, 105 deletions
diff --git a/sys/dev/atkbdc/atkbd.c b/sys/dev/atkbdc/atkbd.c
index 8ad4f1f..0d00ee6 100644
--- a/sys/dev/atkbdc/atkbd.c
+++ b/sys/dev/atkbdc/atkbd.c
@@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: atkbd.c,v 1.12 1999/07/18 06:16:25 yokota Exp $
+ * $Id: atkbd.c,v 1.13 1999/08/15 06:06:14 yokota Exp $
*/
#include "atkbd.h"
@@ -49,45 +49,8 @@
#include <isa/isareg.h>
-#define ATKBD_SOFTC(unit) \
- ((atkbd_softc_t *)devclass_get_softc(atkbd_devclass, unit))
-
-extern devclass_t atkbd_devclass;
-
static timeout_t atkbd_timeout;
-#ifdef KBD_INSTALL_CDEV
-
-static d_open_t atkbdopen;
-static d_close_t atkbdclose;
-static d_read_t atkbdread;
-static d_ioctl_t atkbdioctl;
-static d_poll_t atkbdpoll;
-
-static struct cdevsw atkbd_cdevsw = {
- /* open */ atkbdopen,
- /* close */ atkbdclose,
- /* read */ atkbdread,
- /* write */ nowrite,
- /* ioctl */ atkbdioctl,
- /* stop */ nostop,
- /* reset */ noreset,
- /* devtotty */ nodevtotty,
- /* poll */ atkbdpoll,
- /* mmap */ nommap,
- /* strategy */ nostrategy,
- /* name */ ATKBD_DRIVER_NAME,
- /* parms */ noparms,
- /* maj */ -1,
- /* dump */ nodump,
- /* psize */ nopsize,
- /* flags */ 0,
- /* maxio */ 0,
- /* bmaj */ -1
-};
-
-#endif /* KBD_INSTALL_CDEV */
-
int
atkbd_probe_unit(int unit, int port, int irq, int flags)
{
@@ -108,15 +71,12 @@ atkbd_probe_unit(int unit, int port, int irq, int flags)
}
int
-atkbd_attach_unit(int unit, atkbd_softc_t *sc, int port, int irq, int flags)
+atkbd_attach_unit(int unit, keyboard_t **kbd, int port, int irq, int flags)
{
keyboard_switch_t *sw;
int args[2];
int error;
- if (sc->flags & ATKBD_ATTACHED)
- return 0;
-
sw = kbd_get_switch(ATKBD_DRIVER_NAME);
if (sw == NULL)
return ENXIO;
@@ -124,19 +84,18 @@ atkbd_attach_unit(int unit, atkbd_softc_t *sc, int port, int irq, int flags)
/* reset, initialize and enable the device */
args[0] = port;
args[1] = irq;
- sc->kbd = NULL;
+ *kbd = NULL;
error = (*sw->probe)(unit, args, flags);
if (error)
return error;
- error = (*sw->init)(unit, &sc->kbd, args, flags);
+ error = (*sw->init)(unit, kbd, args, flags);
if (error)
return error;
- (*sw->enable)(sc->kbd);
+ (*sw->enable)(*kbd);
#ifdef KBD_INSTALL_CDEV
/* attach a virtual keyboard cdev */
- error = kbd_attach(makedev(0, ATKBD_MKMINOR(unit)), sc->kbd,
- &atkbd_cdevsw);
+ error = kbd_attach(*kbd);
if (error)
return error;
#endif
@@ -145,12 +104,10 @@ atkbd_attach_unit(int unit, atkbd_softc_t *sc, int port, int irq, int flags)
* This is a kludge to compensate for lost keyboard interrupts.
* A similar code used to be in syscons. See below. XXX
*/
- atkbd_timeout(sc->kbd);
+ atkbd_timeout(*kbd);
if (bootverbose)
- (*sw->diag)(sc->kbd, bootverbose);
-
- sc->flags |= ATKBD_ATTACHED;
+ (*sw->diag)(*kbd, bootverbose);
return 0;
}
@@ -192,60 +149,6 @@ atkbd_timeout(void *arg)
/* cdev driver functions */
-#ifdef KBD_INSTALL_CDEV
-
-static int
-atkbdopen(dev_t dev, int flag, int mode, struct proc *p)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- if (sc == NULL)
- return ENXIO;
- if (mode & (FWRITE | O_CREAT | O_APPEND | O_TRUNC))
- return ENODEV;
-
- /* FIXME: set the initial input mode (K_XLATE?) and lock state? */
- return genkbdopen(&sc->gensc, sc->kbd, flag, mode, p);
-}
-
-static int
-atkbdclose(dev_t dev, int flag, int mode, struct proc *p)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- return genkbdclose(&sc->gensc, sc->kbd, flag, mode, p);
-}
-
-static int
-atkbdread(dev_t dev, struct uio *uio, int flag)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- return genkbdread(&sc->gensc, sc->kbd, uio, flag);
-}
-
-static int
-atkbdioctl(dev_t dev, u_long cmd, caddr_t arg, int flag, struct proc *p)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- return genkbdioctl(&sc->gensc, sc->kbd, cmd, arg, flag, p);
-}
-
-static int
-atkbdpoll(dev_t dev, int event, struct proc *p)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- return genkbdpoll(&sc->gensc, sc->kbd, event, p);
-}
-
-#endif /* KBD_INSTALL_CDEV */
/* LOW-LEVEL */
OpenPOWER on IntegriCloud