From owner-p4-projects@FreeBSD.ORG Fri Apr 28 05:43:52 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 64ADB16A403; Fri, 28 Apr 2006 05:43:52 +0000 (UTC) X-Original-To: perforce@freebsd.org 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 22D2D16A401 for ; Fri, 28 Apr 2006 05:43:52 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C83D143D4C for ; Fri, 28 Apr 2006 05:43:51 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k3S5hpnR009012 for ; Fri, 28 Apr 2006 05:43:51 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k3S5hpp4009009 for perforce@freebsd.org; Fri, 28 Apr 2006 05:43:51 GMT (envelope-from marcel@freebsd.org) Date: Fri, 28 Apr 2006 05:43:51 GMT Message-Id: <200604280543.k3S5hpp4009009@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 Cc: Subject: PERFORCE change 96283 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Apr 2006 05:43:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=96283 Change 96283 by marcel@marcel_nfs on 2006/04/28 05:42:50 Improve the output of devinfo(8): put the device name and number in the description of the resource managers. As for the interrupt resources, since we numbered them from 1 to the number of ports, give it a description that maps sub- device to port number. Avoid using 'irq' or 'interrupt' as that may actually cause confusion. Multiple puc(4) devices won't confuse anyone this way. Affected files ... .. //depot/projects/uart/dev/puc/puc.c#39 edit Differences ... ==== //depot/projects/uart/dev/puc/puc.c#39 (text+ko) ==== @@ -189,6 +189,7 @@ int puc_bfe_attach(device_t dev) { + char buffer[64]; struct puc_bar *bar; struct puc_port *port; struct puc_softc *sc; @@ -205,26 +206,33 @@ for (idx = 0; idx < PUC_PCI_BARS; idx++) sc->sc_bar[idx].b_rid = -1; - sc->sc_ioport.rm_type = RMAN_ARRAY; - sc->sc_ioport.rm_descr = "I/O port space"; - error = rman_init(&sc->sc_ioport); - if (error) + do { + sc->sc_ioport.rm_type = RMAN_ARRAY; + error = rman_init(&sc->sc_ioport); + if (!error) { + sc->sc_iomem.rm_type = RMAN_ARRAY; + error = rman_init(&sc->sc_iomem); + if (!error) { + sc->sc_irq.rm_type = RMAN_ARRAY; + error = rman_init(&sc->sc_irq); + if (!error) + break; + rman_fini(&sc->sc_iomem); + } + rman_fini(&sc->sc_ioport); + } return (error); - sc->sc_iomem.rm_type = RMAN_ARRAY; - sc->sc_iomem.rm_descr = "Memory mapped I/O space"; - error = rman_init(&sc->sc_iomem); - if (error) { - rman_fini(&sc->sc_ioport); - return (error); - } - sc->sc_irq.rm_type = RMAN_ARRAY; - sc->sc_irq.rm_descr = "Interrupt vector space"; - error = rman_init(&sc->sc_irq); - if (error) { - rman_fini(&sc->sc_iomem); - rman_fini(&sc->sc_ioport); - return (error); - } + } while (0); + + snprintf(buffer, sizeof(buffer), "%s I/O port mapping", + device_get_nameunit(dev)); + sc->sc_ioport.rm_descr = strdup(buffer, M_PUC); + snprintf(buffer, sizeof(buffer), "%s I/O memory mapping", + device_get_nameunit(dev)); + sc->sc_iomem.rm_descr = strdup(buffer, M_PUC); + snprintf(buffer, sizeof(buffer), "%s port numbers", + device_get_nameunit(dev)); + sc->sc_irq.rm_descr = strdup(buffer, M_PUC); error = puc_config(sc, PUC_CFG_GET_NPORTS, 0, &res); KASSERT(error == 0, ("%s %d", __func__, __LINE__)); @@ -362,8 +370,11 @@ bar->b_rid, bar->b_res); } rman_fini(&sc->sc_irq); + free(__DECONST(void *, sc->sc_irq.rm_descr), M_PUC); rman_fini(&sc->sc_iomem); + free(__DECONST(void *, sc->sc_iomem.rm_descr), M_PUC); rman_fini(&sc->sc_ioport); + free(__DECONST(void *, sc->sc_ioport.rm_descr), M_PUC); free(sc->sc_port, M_PUC); return (error); }