summaryrefslogtreecommitdiffstats
path: root/sys/arm/mv
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2013-12-13 23:56:53 +0000
committerian <ian@FreeBSD.org>2013-12-13 23:56:53 +0000
commiteae48ec05ef90176b68b7b5c7ebf3e4c792448aa (patch)
tree95426e39c61df08e259d54ab1d73d5aefa98c198 /sys/arm/mv
parent689fd5c39017daa19a00a6cce247ad10ba00c1e7 (diff)
downloadFreeBSD-src-eae48ec05ef90176b68b7b5c7ebf3e4c792448aa.zip
FreeBSD-src-eae48ec05ef90176b68b7b5c7ebf3e4c792448aa.tar.gz
MFC r257648, r257649, r257660:
Begin reducing code duplication in arm pmap.c and pmap-v6.c by factoring out common code related to mapping device memory into a new devmap.c file. Remove the growing duplication of code that used pmap_devmap_find_pa() and then did some math with the returned results to generate a virtual address, and likewise in reverse to get a physical address. Now there are a pair of functions, arm_devmap_vtop() and arm_devmap_ptov(), to do that. The bus_space_map() implementations are rewritten in terms of these. Move remaining code and data related to static device mapping into the new devmap.[ch] files. Emphasize the MD nature of these things by using the prefix arm_devmap_ on the function and type names (already a few of these things found their way into MI code, hopefully it will be harder to do by accident in the future).
Diffstat (limited to 'sys/arm/mv')
-rw-r--r--sys/arm/mv/mv_localbus.c5
-rw-r--r--sys/arm/mv/mv_machdep.c11
-rw-r--r--sys/arm/mv/mvvar.h1
3 files changed, 10 insertions, 7 deletions
diff --git a/sys/arm/mv/mv_localbus.c b/sys/arm/mv/mv_localbus.c
index 09f9348..363a2b7 100644
--- a/sys/arm/mv/mv_localbus.c
+++ b/sys/arm/mv/mv_localbus.c
@@ -37,6 +37,9 @@ __FBSDID("$FreeBSD$");
#include <sys/rman.h>
#include <sys/malloc.h>
+#include <vm/vm.h>
+
+#include <machine/devmap.h>
#include <machine/fdt.h>
#include <dev/ofw/ofw_bus.h>
@@ -380,7 +383,7 @@ localbus_get_devinfo(device_t bus, device_t child)
}
int
-fdt_localbus_devmap(phandle_t dt_node, struct pmap_devmap *fdt_devmap,
+fdt_localbus_devmap(phandle_t dt_node, struct arm_devmap_entry *fdt_devmap,
int banks_max_num, int *banks_added)
{
pcell_t ranges[MV_LOCALBUS_MAX_BANKS * MV_LOCALBUS_MAX_BANK_CELLS];
diff --git a/sys/arm/mv/mv_machdep.c b/sys/arm/mv/mv_machdep.c
index 8dfeb7b..5002839 100644
--- a/sys/arm/mv/mv_machdep.c
+++ b/sys/arm/mv/mv_machdep.c
@@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$");
#include <vm/pmap.h>
#include <machine/bus.h>
+#include <machine/devmap.h>
#include <machine/machdep.h>
#include <arm/mv/mvreg.h> /* XXX */
@@ -245,12 +246,12 @@ initarm_late_init(void)
}
#define FDT_DEVMAP_MAX (MV_WIN_CPU_MAX + 2)
-static struct pmap_devmap fdt_devmap[FDT_DEVMAP_MAX] = {
+static struct arm_devmap_entry fdt_devmap[FDT_DEVMAP_MAX] = {
{ 0, 0, 0, 0, 0, }
};
static int
-platform_sram_devmap(struct pmap_devmap *map)
+platform_sram_devmap(struct arm_devmap_entry *map)
{
#if !defined(SOC_MV_ARMADAXP)
phandle_t child, root;
@@ -295,10 +296,10 @@ out:
* real implementation of this function in dev/fdt/fdt_pci.c overrides the weak
* alias defined here.
*/
-int mv_default_fdt_pci_devmap(phandle_t node, struct pmap_devmap *devmap,
+int mv_default_fdt_pci_devmap(phandle_t node, struct arm_devmap_entry *devmap,
vm_offset_t io_va, vm_offset_t mem_va);
int
-mv_default_fdt_pci_devmap(phandle_t node, struct pmap_devmap *devmap,
+mv_default_fdt_pci_devmap(phandle_t node, struct arm_devmap_entry *devmap,
vm_offset_t io_va, vm_offset_t mem_va)
{
@@ -322,7 +323,7 @@ platform_devmap_init(void)
int i, num_mapped;
i = 0;
- pmap_devmap_bootstrap_table = &fdt_devmap[0];
+ arm_devmap_register_table(&fdt_devmap[0]);
/*
* IMMR range.
diff --git a/sys/arm/mv/mvvar.h b/sys/arm/mv/mvvar.h
index 754541f..54abf46 100644
--- a/sys/arm/mv/mvvar.h
+++ b/sys/arm/mv/mvvar.h
@@ -66,7 +66,6 @@ struct decode_win {
vm_paddr_t remap;
};
-extern const struct pmap_devmap pmap_devmap[];
extern const struct gpio_config mv_gpio_config[];
extern const struct decode_win *cpu_wins;
extern const struct decode_win *idma_wins;
OpenPOWER on IntegriCloud