From owner-p4-projects@FreeBSD.ORG Fri Nov 5 03:07:17 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8AE7616A4D0; Fri, 5 Nov 2004 03:07:16 +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 3EDC116A4CE for ; Fri, 5 Nov 2004 03:07:16 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1830643D46 for ; Fri, 5 Nov 2004 03:07:16 +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 iA537FN9057190 for ; Fri, 5 Nov 2004 03:07:15 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iA537FZU057187 for perforce@freebsd.org; Fri, 5 Nov 2004 03:07:15 GMT (envelope-from marcel@freebsd.org) Date: Fri, 5 Nov 2004 03:07:15 GMT Message-Id: <200411050307.iA537FZU057187@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 64284 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: Fri, 05 Nov 2004 03:07:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=64284 Change 64284 by marcel@marcel_nfs on 2004/11/05 03:07:01 The scc(4) driver provides as many (subordinate) busses as there are channels and as many children on each of the busses as there are serial modes. Attach an ivar for the mode to each child so that drivers that can handle the mode can attach to the child. Affected files ... .. //depot/projects/uart/dev/scc/scc_bus.h#2 edit .. //depot/projects/uart/dev/uart/uart_bus_scc.c#3 edit Differences ... ==== //depot/projects/uart/dev/scc/scc_bus.h#2 (text+ko) ==== @@ -32,9 +32,16 @@ #define SCC_IVAR_CHANNEL 0 #define SCC_IVAR_CLASS 1 #define SCC_IVAR_CLOCK 2 -#define SCC_IVAR_REGSHFT 3 +#define SCC_IVAR_MODE 3 +#define SCC_IVAR_REGSHFT 4 +/* Hardware class -- the SCC type. */ #define SCC_CLASS_SAB82532 0 #define SCC_CLASS_Z8530 1 +/* The possible modes supported by the SCC. */ +#define SCC_MODE_ASYNC 0 +#define SCC_MODE_BISYNC 1 +#define SCC_MODE_HDLC 2 + #endif /* _DEV_SCC_BUS_H_ */ ==== //depot/projects/uart/dev/uart/uart_bus_scc.c#3 (text+ko) ==== @@ -64,12 +64,15 @@ { device_t parent; struct uart_softc *sc; - uintptr_t ch, cl, rs; + uintptr_t ch, cl, md, rs; parent = device_get_parent(dev); sc = device_get_softc(dev); - if (BUS_READ_IVAR(parent, dev, SCC_IVAR_CLASS, &cl)) + if (BUS_READ_IVAR(parent, dev, SCC_IVAR_MODE, &md) || + BUS_READ_IVAR(parent, dev, SCC_IVAR_CLASS, &cl)) + return (ENXIO); + if (md != SCC_MODE_ASYNC) return (ENXIO); switch (cl) { case SCC_CLASS_SAB82532: @@ -81,12 +84,11 @@ default: return (ENXIO); } - if (BUS_READ_IVAR(parent, dev, SCC_IVAR_CHANNEL, &ch)) - ch = 0; - if (BUS_READ_IVAR(parent, dev, SCC_IVAR_CLOCK, &cl)) - cl = 0; - if (BUS_READ_IVAR(parent, dev, SCC_IVAR_REGSHFT, &rs)) - rs = 0; + if (BUS_READ_IVAR(parent, dev, SCC_IVAR_CHANNEL, &ch) || + BUS_READ_IVAR(parent, dev, SCC_IVAR_CLOCK, &cl) || + BUS_READ_IVAR(parent, dev, SCC_IVAR_REGSHFT, &rs)) + return (ENXIO); + return (uart_bus_probe(dev, rs, cl, 0, ch)); }