From owner-svn-src-projects@FreeBSD.ORG  Mon Jan 16 21:31:03 2012
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id E85D5106564A;
	Mon, 16 Jan 2012 21:31:03 +0000 (UTC)
	(envelope-from nwhitehorn@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id BD1688FC13;
	Mon, 16 Jan 2012 21:31:03 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q0GLV3Jv052685;
	Mon, 16 Jan 2012 21:31:03 GMT
	(envelope-from nwhitehorn@svn.freebsd.org)
Received: (from nwhitehorn@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q0GLV3aR052683;
	Mon, 16 Jan 2012 21:31:03 GMT
	(envelope-from nwhitehorn@svn.freebsd.org)
Message-Id: <201201162131.q0GLV3aR052683@svn.freebsd.org>
From: Nathan Whitehorn <nwhitehorn@FreeBSD.org>
Date: Mon, 16 Jan 2012 21:31:03 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r230235 - projects/pseries/dev/uart
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 16 Jan 2012 21:31:04 -0000

Author: nwhitehorn
Date: Mon Jan 16 21:31:03 2012
New Revision: 230235
URL: http://svn.freebsd.org/changeset/base/230235

Log:
  Allow uart(4) devices not to have any memory resources or I/O ports.

Modified:
  projects/pseries/dev/uart/uart_core.c

Modified: projects/pseries/dev/uart/uart_core.c
==============================================================================
--- projects/pseries/dev/uart/uart_core.c	Mon Jan 16 21:25:41 2012	(r230234)
+++ projects/pseries/dev/uart/uart_core.c	Mon Jan 16 21:31:03 2012	(r230235)
@@ -342,8 +342,6 @@ uart_bus_probe(device_t dev, int regshft
 		sc->sc_rres = bus_alloc_resource(dev, sc->sc_rtype,
 		    &sc->sc_rrid, 0, ~0, uart_getrange(sc->sc_class),
 		    RF_ACTIVE);
-		if (sc->sc_rres == NULL)
-			return (ENXIO);
 	}
 
 	/*
@@ -353,8 +351,10 @@ uart_bus_probe(device_t dev, int regshft
 	 * accordingly. In general, you don't want to permanently disrupt
 	 * console I/O.
 	 */
-	sc->sc_bas.bsh = rman_get_bushandle(sc->sc_rres);
-	sc->sc_bas.bst = rman_get_bustag(sc->sc_rres);
+	if (sc->sc_rres != NULL) {
+		sc->sc_bas.bsh = rman_get_bushandle(sc->sc_rres);
+		sc->sc_bas.bst = rman_get_bustag(sc->sc_rres);
+	}
 	sc->sc_bas.chan = chan;
 	sc->sc_bas.regshft = regshft;
 	sc->sc_bas.rclk = (rclk == 0) ? sc->sc_class->uc_rclk : rclk;
@@ -369,7 +369,9 @@ uart_bus_probe(device_t dev, int regshft
 	}
 
 	error = UART_PROBE(sc);
-	bus_release_resource(dev, sc->sc_rtype, sc->sc_rrid, sc->sc_rres);
+	if (sc->sc_rres != NULL)
+		bus_release_resource(dev, sc->sc_rtype, sc->sc_rrid,
+		    sc->sc_rres);
 	return ((error) ? error : BUS_PROBE_DEFAULT);
 }
 
@@ -411,12 +413,10 @@ uart_bus_attach(device_t dev)
 	 */
 	sc->sc_rres = bus_alloc_resource(dev, sc->sc_rtype, &sc->sc_rrid,
 	    0, ~0, uart_getrange(sc->sc_class), RF_ACTIVE);
-	if (sc->sc_rres == NULL) {
-		mtx_destroy(&sc->sc_hwmtx_s);
-		return (ENXIO);
+	if (sc->sc_rres != NULL) {
+		sc->sc_bas.bsh = rman_get_bushandle(sc->sc_rres);
+		sc->sc_bas.bst = rman_get_bustag(sc->sc_rres);
 	}
-	sc->sc_bas.bsh = rman_get_bushandle(sc->sc_rres);
-	sc->sc_bas.bst = rman_get_bustag(sc->sc_rres);
 
 	sc->sc_irid = 0;
 	sc->sc_ires = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->sc_irid,