aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/uart
diff options
context:
space:
mode:
authorMarcel Moolenaar <marcel@FreeBSD.org>2005-01-31 04:31:22 +0000
committerMarcel Moolenaar <marcel@FreeBSD.org>2005-01-31 04:31:22 +0000
commita2e25ee10d621e4710ffe597c26aaf5328c9dc1e (patch)
tree1e8709b72c23467645b10189b918a1c1a88bdfea /sys/dev/uart
parent2554d6b9b46027599948c7e3ad937c08a44ec593 (diff)
Notes
Diffstat (limited to 'sys/dev/uart')
-rw-r--r--sys/dev/uart/uart_kbd_sun.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sys/dev/uart/uart_kbd_sun.c b/sys/dev/uart/uart_kbd_sun.c
index 05254182c30cf..034965959332e 100644
--- a/sys/dev/uart/uart_kbd_sun.c
+++ b/sys/dev/uart/uart_kbd_sun.c
@@ -194,12 +194,14 @@ sunkbd_configure(int flags)
if (uart_probe(&uart_keyboard))
return (0);
uart_init(&uart_keyboard);
- if (sunkbd_probe_keyboard(&uart_keyboard) == -1)
- return (0);
+
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);
+
sc = &sunkbd_softc;
callout_init(&sc->sc_repeat_callout, 0);
sc->sc_repeat_key = -1;
@@ -221,6 +223,15 @@ static int
sunkbd_attach(struct uart_softc *sc)
{
+ /*
+ * Don't attach if we didn't probe the keyboard. Note that
+ * the UART is still marked as a system device in that case.
+ */
+ if (sunkbd_softc.sc_sysdev == NULL) {
+ device_printf(sc->sc_dev, "keyboard not present\n");
+ return (0);
+ }
+
if (sc->sc_sysdev != NULL) {
sunkbd_softc.sc_uart = sc;