Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Dec 2012 14:52:39 +0000 (UTC)
From:      Aleksandr Rybalko <ray@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r244696 - projects/efika_mx/sys/dev/fdt
Message-ID:  <201212261452.qBQEqdDv085726@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ray
Date: Wed Dec 26 14:52:39 2012
New Revision: 244696
URL: http://svnweb.freebsd.org/changeset/base/244696

Log:
  Move device mapping to fdtbus_activate_resource.
  
  Sponsored by:	FreeBSD Foundation

Modified:
  projects/efika_mx/sys/dev/fdt/fdt_common.c
  projects/efika_mx/sys/dev/fdt/fdtbus.c
  projects/efika_mx/sys/dev/fdt/simplebus.c

Modified: projects/efika_mx/sys/dev/fdt/fdt_common.c
==============================================================================
--- projects/efika_mx/sys/dev/fdt/fdt_common.c	Wed Dec 26 13:07:17 2012	(r244695)
+++ projects/efika_mx/sys/dev/fdt/fdt_common.c	Wed Dec 26 14:52:39 2012	(r244696)
@@ -421,12 +421,12 @@ fdt_regsize(phandle_t node, u_long *base
 int
 fdt_reg_to_rl(phandle_t node, struct resource_list *rl)
 {
-	u_long start, end, count;
+	u_long count;
 	pcell_t *reg, *regptr;
 	pcell_t addr_cells, size_cells;
 	int tuple_size, tuples;
 	int i, rv;
-	bus_space_handle_t vaddr;
+	bus_space_handle_t start, end;
 	long busaddr, bussize;
 
 	if (fdt_addrsize_cells(OF_parent(node), &addr_cells, &size_cells) != 0)
@@ -457,14 +457,12 @@ fdt_reg_to_rl(phandle_t node, struct res
 
 		/* Calculate address range relative to base. */
 		start += busaddr;
-		if (bus_space_map(fdtbus_bs_tag, start, count, 0, &vaddr) != 0)
-			panic("Couldn't map the device memory");
-		end = vaddr + count - 1;
+		end = start + count - 1;
 
-		debugf("reg addr start = %lx, end = %lx, count = %lx\n", vaddr,
+		debugf("reg addr start = %lx, end = %lx, count = %lx\n", start,
 		    end, count);
 
-		resource_list_add(rl, SYS_RES_MEMORY, i, vaddr, end,
+		resource_list_add(rl, SYS_RES_MEMORY, i, start, end,
 		    count);
 	}
 	rv = 0;

Modified: projects/efika_mx/sys/dev/fdt/fdtbus.c
==============================================================================
--- projects/efika_mx/sys/dev/fdt/fdtbus.c	Wed Dec 26 13:07:17 2012	(r244695)
+++ projects/efika_mx/sys/dev/fdt/fdtbus.c	Wed Dec 26 14:52:39 2012	(r244696)
@@ -616,6 +616,16 @@ static int
 fdtbus_activate_resource(device_t bus, device_t child, int type, int rid,
     struct resource *res)
 {
+	bus_space_handle_t p;
+	int error;
+
+	if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) {
+		error = bus_space_map(rman_get_bustag(res),
+		    rman_get_bushandle(res), rman_get_size(res), 0, &p);
+		if (error)
+			return (error);
+		rman_set_bushandle(res, p);
+	}
 
 	return (rman_activate_resource(res));
 }

Modified: projects/efika_mx/sys/dev/fdt/simplebus.c
==============================================================================
--- projects/efika_mx/sys/dev/fdt/simplebus.c	Wed Dec 26 13:07:17 2012	(r244695)
+++ projects/efika_mx/sys/dev/fdt/simplebus.c	Wed Dec 26 14:52:39 2012	(r244696)
@@ -185,7 +185,6 @@ simplebus_attach(device_t dev)
 			device_printf(dev,
 			    "%s: could not process 'reg' "
 			    "property\n", di->di_ofw.obd_name);
-			/* XXX should unmap */
 			ofw_bus_gen_destroy_devinfo(&di->di_ofw);
 			free(di, M_SIMPLEBUS);
 			continue;
@@ -195,7 +194,6 @@ simplebus_attach(device_t dev)
 			device_printf(dev, "%s: could not process "
 			    "'interrupts' property\n", di->di_ofw.obd_name);
 			resource_list_free(&di->di_res);
-			/* XXX should unmap */
 			ofw_bus_gen_destroy_devinfo(&di->di_ofw);
 			free(di, M_SIMPLEBUS);
 			continue;
@@ -207,7 +205,6 @@ simplebus_attach(device_t dev)
 			device_printf(dev, "could not add child: %s\n",
 			    di->di_ofw.obd_name);
 			resource_list_free(&di->di_res);
-			/* XXX should unmap */
 			ofw_bus_gen_destroy_devinfo(&di->di_ofw);
 			free(di, M_SIMPLEBUS);
 			continue;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212261452.qBQEqdDv085726>