From owner-p4-projects@FreeBSD.ORG Mon Nov 15 03:06:22 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3203016A4D1; Mon, 15 Nov 2004 03:06:22 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D84E916A4CE for ; Mon, 15 Nov 2004 03:06:21 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A4E0443D54 for ; Mon, 15 Nov 2004 03:06:20 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAF36Kme037783 for ; Mon, 15 Nov 2004 03:06:20 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAF36KBj037780 for perforce@freebsd.org; Mon, 15 Nov 2004 03:06:20 GMT (envelope-from marcel@freebsd.org) Date: Mon, 15 Nov 2004 03:06:20 GMT Message-Id: <200411150306.iAF36KBj037780@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65139 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 03:06:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=65139 Change 65139 by marcel@marcel_nfs on 2004/11/15 03:05:56 IFC @65138 Affected files ... .. //depot/projects/uart/dev/acpica/acpi_snc.c#2 integrate .. //depot/projects/uart/dev/em/if_em.c#10 integrate .. //depot/projects/uart/dev/puc/puc_sbus.c#7 integrate .. //depot/projects/uart/dev/uart/uart_bus.h#33 integrate .. //depot/projects/uart/dev/uart/uart_core.c#37 integrate .. //depot/projects/uart/dev/uart/uart_dev_ns8250.c#31 integrate .. //depot/projects/uart/dev/uart/uart_subr.c#4 integrate .. //depot/projects/uart/ia64/conf/GENERIC.hints#5 integrate .. //depot/projects/uart/modules/acpi/Makefile#8 integrate .. //depot/projects/uart/pci/if_sk.c#8 integrate Differences ... ==== //depot/projects/uart/dev/acpica/acpi_snc.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/acpica/acpi_snc.c,v 1.2 2004/11/13 23:39:56 imp Exp $ + * $FreeBSD: src/sys/dev/acpica/acpi_snc.c,v 1.3 2004/11/14 20:37:41 truckman Exp $ */ #include "opt_acpi.h" @@ -125,20 +125,20 @@ acpi_snc_oids[i].comment); } - return_VALUE(0); + return (0); } static int acpi_snc_detach(device_t dev) { - return_VALUE(0); + return (0); } #if 0 static int acpi_snc_suspend(device_t dev) { struct acpi_snc_softc *sc = device_get_softc(dev); - return_VALUE(0); + return (0); } static int ==== //depot/projects/uart/dev/em/if_em.c#10 (text+ko) ==== @@ -31,7 +31,7 @@ ***************************************************************************/ -/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.53 2004/11/12 11:03:07 rwatson Exp $*/ +/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.54 2004/11/14 20:20:28 rwatson Exp $*/ #include @@ -598,8 +598,14 @@ IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; - + + /* + * em_encap() can modify our pointer, and or make it NULL on + * failure. In that event, we can't requeue. + */ if (em_encap(adapter, &m_head)) { + if (m_head == NULL) + break; ifp->if_flags |= IFF_OACTIVE; IFQ_DRV_PREPEND(&ifp->if_snd, m_head); break; @@ -1248,15 +1254,24 @@ struct ether_header eh; m_head = m_pullup(m_head, sizeof(eh)); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } eh = *mtod(m_head, struct ether_header *); M_PREPEND(m_head, sizeof(*evl), M_DONTWAIT); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } m_head = m_pullup(m_head, sizeof(*evl)); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } evl = mtod(m_head, struct ether_vlan_header *); bcopy(&eh, evl, sizeof(*evl)); evl->evl_proto = evl->evl_encap_proto; ==== //depot/projects/uart/dev/puc/puc_sbus.c#7 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/puc/puc_sbus.c,v 1.4 2004/08/12 17:41:30 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/puc/puc_sbus.c,v 1.5 2004/11/15 02:47:37 marcel Exp $"); #include "opt_puc.h" @@ -51,7 +51,7 @@ const char *nm; nm = ofw_bus_get_name(dev); - if (!strcmp(nm, "zs")) { + if (!strcmp(nm, "zs") && device_get_unit(dev) == 0) { device_set_desc(dev, "Zilog Z8530 dual channel SCC"); return (0); } ==== //depot/projects/uart/dev/uart/uart_bus.h#33 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/uart/uart_bus.h,v 1.7 2004/10/12 08:22:31 phk Exp $ + * $FreeBSD: src/sys/dev/uart/uart_bus.h,v 1.8 2004/11/14 23:12:14 marcel Exp $ */ #ifndef _DEV_UART_BUS_H_ @@ -80,6 +80,7 @@ #define UART_IOCTL_BREAK 1 #define UART_IOCTL_IFLOW 2 #define UART_IOCTL_OFLOW 3 +#define UART_IOCTL_BAUD 4 /* * UART class & instance (=softc) ==== //depot/projects/uart/dev/uart/uart_core.c#37 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_core.c,v 1.10 2004/07/10 21:16:01 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_core.c,v 1.11 2004/11/14 23:12:14 marcel Exp $"); #ifndef KLD_MODULE #include "opt_comconsole.h" @@ -404,6 +404,11 @@ } if (sc->sc_sysdev != NULL) { + if (sc->sc_sysdev->baudrate == 0) { + if (UART_IOCTL(sc, UART_IOCTL_BAUD, + (intptr_t)&sc->sc_sysdev->baudrate) != 0) + sc->sc_sysdev->baudrate = -1; + } switch (sc->sc_sysdev->type) { case UART_DEV_CONSOLE: device_printf(dev, "console"); ==== //depot/projects/uart/dev/uart/uart_dev_ns8250.c#31 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.10 2004/08/06 15:51:31 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.12 2004/11/15 00:00:24 marcel Exp $"); #include #include @@ -468,7 +468,7 @@ ns8250_bus_ioctl(struct uart_softc *sc, int request, intptr_t data) { struct uart_bas *bas; - int error; + int baudrate, divisor, error; uint8_t efr, lcr; bas = &sc->sc_bas; @@ -514,6 +514,20 @@ uart_setreg(bas, REG_LCR, lcr); uart_barrier(bas); break; + case UART_IOCTL_BAUD: + lcr = uart_getreg(bas, REG_LCR); + uart_setreg(bas, REG_LCR, lcr | LCR_DLAB); + uart_barrier(bas); + divisor = uart_getdreg(bas, REG_DL); + uart_barrier(bas); + uart_setreg(bas, REG_LCR, lcr); + uart_barrier(bas); + baudrate = (divisor > 0) ? bas->rclk / divisor / 16 : 0; + if (baudrate > 0) + *(int*)data = baudrate; + else + error = ENXIO; + break; default: error = EINVAL; break; ==== //depot/projects/uart/dev/uart/uart_subr.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_subr.c,v 1.2 2004/03/20 08:38:33 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_subr.c,v 1.3 2004/11/14 21:38:22 marcel Exp $"); #include #include @@ -242,6 +242,26 @@ */ if (addr == ~0U) return (EINVAL); + + /* + * Accept only the well-known baudrates. Any invalid baudrate + * is silently replaced with a 0-valued baudrate. The 0 baudrate + * has special meaning. It means that we're not supposed to + * program the baudrate and simply communicate with whatever + * speed the hardware is currently programmed for. + */ + if (di->baudrate >= 19200) { + if (di->baudrate % 19200) + di->baudrate = 0; + } else if (di->baudrate >= 1200) { + if (di->baudrate % 1200) + di->baudrate = 0; + } else if (di->baudrate > 0) { + if (di->baudrate % 75) + di->baudrate = 0; + } else + di->baudrate = 0; + /* XXX the size of the mapping depends on the UART class. */ if (bus_space_map(di->bas.bst, addr, 8, 0, &di->bas.bsh) != 0) return (EINVAL); ==== //depot/projects/uart/ia64/conf/GENERIC.hints#5 (text+ko) ==== @@ -1,2 +1,2 @@ -# $FreeBSD: src/sys/ia64/conf/GENERIC.hints,v 1.7 2004/03/20 04:23:03 marcel Exp $ -hw.uart.console="io:0x3f8,br:115200" +# $FreeBSD: src/sys/ia64/conf/GENERIC.hints,v 1.8 2004/11/14 23:42:48 marcel Exp $ +hw.uart.console="io:0x3f8" ==== //depot/projects/uart/modules/acpi/Makefile#8 (text+ko) ==== @@ -1,4 +1,12 @@ -# $FreeBSD: src/sys/modules/acpi/Makefile,v 1.41 2004/11/11 22:54:57 imp Exp $ +# $FreeBSD: src/sys/modules/acpi/Makefile,v 1.42 2004/11/14 20:53:17 scottl Exp $ + +.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "ia64" +.error "ACPI can only be compiled into the kernel on the amd64 and ia64 platforms" +.endif + +.if ${MACHINE_ARCH} != "i386" +.error "The ACPI module is only for i386" +.endif SUBDIR= acpi acpi_asus acpi_panasonic acpi_snc acpi_toshiba acpi_video ==== //depot/projects/uart/pci/if_sk.c#8 (text+ko) ==== @@ -48,7 +48,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/pci/if_sk.c,v 1.88 2004/11/13 20:21:57 bz Exp $"); +__FBSDID("$FreeBSD: src/sys/pci/if_sk.c,v 1.89 2004/11/14 20:17:01 obrien Exp $"); /* * SysKonnect SK-NET gigabit ethernet driver for FreeBSD. Supports @@ -136,7 +136,7 @@ #ifndef lint static const char rcsid[] = - "$FreeBSD: src/sys/pci/if_sk.c,v 1.88 2004/11/13 20:21:57 bz Exp $"; + "$FreeBSD: src/sys/pci/if_sk.c,v 1.89 2004/11/14 20:17:01 obrien Exp $"; #endif static struct sk_type sk_devs[] = { @@ -1598,6 +1598,10 @@ } sc->sk_rboff = SK_RBOFF_0; } + device_printf(dev, "type = %s\n", + (sc->sk_type == SK_GENESIS) ? "GENESIS" : "YUKON"); + device_printf(dev, "SK_EPROM0 = 0x%02x\n", skrs); + device_printf(dev, "SRAM size = 0x%06x\n", sc->sk_ramsize); /* Read and save physical media type */ switch(sk_win_read_1(sc, SK_PMDTYPE)) { @@ -1650,6 +1654,12 @@ } } } + + /* read CHIPVER 0xb1. */ + device_printf(dev, "chip ver 0x%02x\n", sk_win_read_1(sc, SK_CHIPVER)); + /* read CONFIG 0x73. */ + device_printf(dev, "chip conf 0x%02x\n", sk_win_read_1(sc, SK_CONFIG)); + sc->sk_devs[SK_PORT_A] = device_add_child(dev, "sk", -1); port = malloc(sizeof(int), M_DEVBUF, M_NOWAIT); *port = SK_PORT_A;