From 63cac40a313249a3462473fb6b248c04433690e1 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Mon, 5 Jan 2009 22:13:18 +0000 Subject: Restrict FIFO depth to 1 byte on m4k/m5k/m8k/m9k. Hopefully this prevents hardware faults from happening. --- sys/arch/sparc64/dev/com_ebus.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'sys') 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) -- cgit v1.2.3