From owner-svn-src-user@FreeBSD.ORG  Tue Jul 24 22:48:13 2012
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 4AFB81065672;
	Tue, 24 Jul 2012 22:48:13 +0000 (UTC)
	(envelope-from jceel@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 1C9F38FC17;
	Tue, 24 Jul 2012 22:48:13 +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 q6OMmCod082786;
	Tue, 24 Jul 2012 22:48:12 GMT (envelope-from jceel@svn.freebsd.org)
Received: (from jceel@localhost)
	by svn.freebsd.org (8.14.4/8.14.4/Submit) id q6OMmCoU082783;
	Tue, 24 Jul 2012 22:48:12 GMT (envelope-from jceel@svn.freebsd.org)
Message-Id: <201207242248.q6OMmCoU082783@svn.freebsd.org>
From: Jakub Wojciech Klama <jceel@FreeBSD.org>
Date: Tue, 24 Jul 2012 22:48:12 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r238757 - in user/jceel/soc2012_armv6/sys/arm: arm
	include
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
	src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
	<mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 24 Jul 2012 22:48:13 -0000

Author: jceel
Date: Tue Jul 24 22:48:12 2012
New Revision: 238757
URL: http://svn.freebsd.org/changeset/base/238757

Log:
  Make arm_process_devmap() able to map FDT device nodes which
  are placed directly on root.

Modified:
  user/jceel/soc2012_armv6/sys/arm/arm/machdep.c
  user/jceel/soc2012_armv6/sys/arm/include/pmap.h

Modified: user/jceel/soc2012_armv6/sys/arm/arm/machdep.c
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/arm/machdep.c	Tue Jul 24 22:32:03 2012	(r238756)
+++ user/jceel/soc2012_armv6/sys/arm/arm/machdep.c	Tue Jul 24 22:48:12 2012	(r238757)
@@ -928,26 +928,24 @@ arm_process_devmap(struct pmap_devmap *d
 
 			if (node == -1)
 				goto notfound;
-
+			
 			if ((parent = OF_parent(node)) <= 0)
 				goto notfound;
-
+			
 			if (fdt_addrsize_cells(parent, &addr_cells, &size_cells))
 				goto notfound;
+
+			fdt_regsize(node, &start, &size);
 			
 			if ((par_addr_cells = fdt_parent_addr_cells(parent)) > 2)
-				goto notfound;
+				goto noparent;
 			
 			nranges = fdt_read_ranges(parent, &rptr, addr_cells, 
 			    par_addr_cells, size_cells);
 			
-			if (nranges <= 0)
-				goto notfound;
-
-			fdt_regsize(node, &start, &size);
-
-			start += fdt_ranges_lookup(ranges, nranges, start, size);
-
+			if (nranges > 0)
+				start += fdt_ranges_lookup(ranges, nranges, start, size);
+noparent:
 			entry->pd_pa = rounddown(start, PAGE_SIZE);
 			entry->pd_size = roundup(size, PAGE_SIZE);
 

Modified: user/jceel/soc2012_armv6/sys/arm/include/pmap.h
==============================================================================
--- user/jceel/soc2012_armv6/sys/arm/include/pmap.h	Tue Jul 24 22:32:03 2012	(r238756)
+++ user/jceel/soc2012_armv6/sys/arm/include/pmap.h	Tue Jul 24 22:48:12 2012	(r238757)
@@ -637,9 +637,12 @@ struct pmap_devmap {
 	int		pd_cache;	/* cache attributes */
 };
 
-#define	DEVMAP_FDT(_name, _prot, _cache)	{_name, 0, 0, 0, _prot, _cache}
-#define	DEVMAP_ENTRY(_pa, _size, _prot, _cache)	{NULL, 0, _pa, _size, _prot, _cache}
-#define	DEVMAP_END				{NULL, 0, 0, 0, 0, 0}
+#define	DEVMAP_FDT(_name, _prot, _cache) \
+	{_name, 0, 0, 0, _prot, _cache}
+#define	DEVMAP_ENTRY(_pa, _size, _prot, _cache) \
+	{NULL, 0, _pa, _size, _prot, _cache}
+#define	DEVMAP_END\
+	{NULL, 0, 0, 0, 0, 0}
 
 const struct pmap_devmap *pmap_devmap_find_pa(vm_paddr_t, vm_size_t);
 const struct pmap_devmap *pmap_devmap_find_va(vm_offset_t, vm_size_t);