diff options
Diffstat (limited to 'sys/arch/sparc64/dev/com_ebus.c')
-rw-r--r-- | sys/arch/sparc64/dev/com_ebus.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sys/arch/sparc64/dev/com_ebus.c b/sys/arch/sparc64/dev/com_ebus.c index b3cfb9b77d4..77320bcc315 100644 --- a/sys/arch/sparc64/dev/com_ebus.c +++ b/sys/arch/sparc64/dev/com_ebus.c @@ -1,4 +1,4 @@ -/* $OpenBSD: com_ebus.c,v 1.18 2008/07/10 12:33:40 kettenis Exp $ */ +/* $OpenBSD: com_ebus.c,v 1.19 2009/01/05 22:13:17 kettenis Exp $ */ /* $NetBSD: com_ebus.c,v 1.6 2001/07/24 19:27:10 eeh Exp $ */ /* @@ -203,6 +203,17 @@ com_ebus_attach(struct device *parent, struct device *self, void *aux) cn_tab->cn_putc = comcnputc; } + /* + * Apparently shoving too much data down the TX FIFO on the + * Fujitsu SPARC Enterprise M4000/M5000 causes a hardware + * fault. Avoid this issue by setting the FIFO depth to 1. + * This will effectively disable the TX FIFO, but will still + * enable the RX FIFO, which is what we really care about. + */ + if (OF_getprop(node, "compatible", buf, sizeof(buf)) > 0 && + strcmp(buf, "FJSV,su") == 0) + sc->sc_fifolen = 1; + if (OF_getproplen(ea->ea_node, "keyboard") == 0) printf(": keyboard"); else if (OF_getproplen(ea->ea_node, "mouse") == 0) |