diff options
| author | Marius Strobl <marius@FreeBSD.org> | 2005-06-04 21:54:31 +0000 |
|---|---|---|
| committer | Marius Strobl <marius@FreeBSD.org> | 2005-06-04 21:54:31 +0000 |
| commit | 3a61f787fbef3a9d79c236c3ef304872c4c752c8 (patch) | |
| tree | 1898fbb5445e5e8dcfc7535d4b84168d69882873 /sys/dev/uart | |
| parent | 852962d3c5fec2c149e0d58edc8345f1148afeff (diff) | |
Notes
Diffstat (limited to 'sys/dev/uart')
| -rw-r--r-- | sys/dev/uart/uart_kbd_sun.c | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/sys/dev/uart/uart_kbd_sun.c b/sys/dev/uart/uart_kbd_sun.c index 97c8bc5efe31..4d024d2ea878 100644 --- a/sys/dev/uart/uart_kbd_sun.c +++ b/sys/dev/uart/uart_kbd_sun.c @@ -190,22 +190,27 @@ sunkbd_configure(int flags) { struct sunkbd_softc *sc; - if (KBD_IS_CONFIGURED(&sunkbd_softc.sc_kbd)) - goto found; - - if (!KBD_IS_INITIALIZED(&sunkbd_softc.sc_kbd)) { - if (uart_cpu_getdev(UART_DEV_KEYBOARD, &uart_keyboard)) - return (0); - if (uart_probe(&uart_keyboard)) + /* + * We are only prepared to be used for the high-level console + * when the keyboard is both configured and attached. + */ + if (!(flags & KB_CONF_PROBE_ONLY)) { + if (KBD_IS_INITIALIZED(&sunkbd_softc.sc_kbd)) + goto found; + else return (0); - uart_init(&uart_keyboard); - - uart_keyboard.type = UART_DEV_KEYBOARD; - uart_keyboard.attach = sunkbd_attach; - uart_add_sysdev(&uart_keyboard); - KBD_INIT_DONE(&sunkbd_softc.sc_kbd); } + if (uart_cpu_getdev(UART_DEV_KEYBOARD, &uart_keyboard)) + return (0); + if (uart_probe(&uart_keyboard)) + return (0); + uart_init(&uart_keyboard); + + uart_keyboard.type = UART_DEV_KEYBOARD; + uart_keyboard.attach = sunkbd_attach; + uart_add_sysdev(&uart_keyboard); + if (sunkbd_probe_keyboard(&uart_keyboard) == -1) return (0); @@ -222,7 +227,6 @@ sunkbd_configure(int flags) kbd_register(&sc->sc_kbd); sc->sc_sysdev = &uart_keyboard; - KBD_CONFIG_DONE(&sc->sc_kbd); found: /* Return number of found keyboards. */ @@ -254,6 +258,7 @@ sunkbd_attach(struct uart_softc *sc) &sunkbd_softc, SWI_TTY, INTR_TYPE_TTY, &sc->sc_softih); sc->sc_opened = 1; + KBD_INIT_DONE(&sunkbd_softc.sc_kbd); } return (0); |
