Module Name: src Committed By: jmcneill Date: Fri Nov 30 16:26:19 UTC 2018
Modified Files: src/sys/dev/ic: com.c comvar.h Log Message: Add support for com(4) without an interrupt by setting the COM_HW_POLL flag To generate a diff of this commit: cvs rdiff -u -r1.349 -r1.350 src/sys/dev/ic/com.c cvs rdiff -u -r1.87 -r1.88 src/sys/dev/ic/comvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/com.c diff -u src/sys/dev/ic/com.c:1.349 src/sys/dev/ic/com.c:1.350 --- src/sys/dev/ic/com.c:1.349 Wed Nov 28 22:28:46 2018 +++ src/sys/dev/ic/com.c Fri Nov 30 16:26:19 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: com.c,v 1.349 2018/11/28 22:28:46 jmcneill Exp $ */ +/* $NetBSD: com.c,v 1.350 2018/11/30 16:26:19 jmcneill Exp $ */ /*- * Copyright (c) 1998, 1999, 2004, 2008 The NetBSD Foundation, Inc. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.349 2018/11/28 22:28:46 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.350 2018/11/30 16:26:19 jmcneill Exp $"); #include "opt_com.h" #include "opt_ddb.h" @@ -379,6 +379,16 @@ com_enable_debugport(struct com_softc *s CSR_WRITE_1(&sc->sc_regs, COM_REG_MCR, sc->sc_mcr); } +static void +com_intr_poll(void *arg) +{ + struct com_softc * const sc = arg; + + comintr(sc); + + callout_schedule(&sc->sc_poll_callout, 1); +} + void com_attach_subr(struct com_softc *sc) { @@ -396,6 +406,8 @@ com_attach_subr(struct com_softc *sc) prop_dictionary_get_bool(dict, "is_console", &is_console); prop_dictionary_get_bool(dict, "force_console", &force_console); callout_init(&sc->sc_diag_callout, 0); + callout_init(&sc->sc_poll_callout, 0); + callout_setfunc(&sc->sc_poll_callout, com_intr_poll, sc); mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_HIGH); #if defined(COM_16650) @@ -676,6 +688,9 @@ fifodone: com_config(sc); SET(sc->sc_hwflags, COM_HW_DEV_OK); + + if (ISSET(sc->sc_hwflags, COM_HW_POLL)) + callout_schedule(&sc->sc_poll_callout, 1); } void Index: src/sys/dev/ic/comvar.h diff -u src/sys/dev/ic/comvar.h:1.87 src/sys/dev/ic/comvar.h:1.88 --- src/sys/dev/ic/comvar.h:1.87 Sun May 27 17:05:06 2018 +++ src/sys/dev/ic/comvar.h Fri Nov 30 16:26:19 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: comvar.h,v 1.87 2018/05/27 17:05:06 jmcneill Exp $ */ +/* $NetBSD: comvar.h,v 1.88 2018/11/30 16:26:19 jmcneill Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. @@ -69,6 +69,7 @@ int com_is_console(bus_space_tag_t, bus_ #define COM_HW_TXFIFO_DISABLE 0x100 #define COM_HW_NO_TXPRELOAD 0x200 #define COM_HW_AFE 0x400 +#define COM_HW_POLL 0x800 /* Buffer size for character buffer */ #ifndef COM_RING_SIZE @@ -166,7 +167,8 @@ struct com_softc { void *sc_si; struct tty *sc_tty; - struct callout sc_diag_callout; + callout_t sc_diag_callout; + callout_t sc_poll_callout; int sc_frequency;