svn commit: r244696 - projects/efika_mx/sys/dev/fdt
Aleksandr Rybalko
ray at FreeBSD.org
Wed Dec 26 14:52:40 UTC 2012
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;
More information about the svn-src-projects
mailing list