summaryrefslogtreecommitdiffstats
path: root/sys/arm/xscale
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2015-01-21 01:06:08 +0000
committerian <ian@FreeBSD.org>2015-01-21 01:06:08 +0000
commitc25b839fb87a16beaf55843df79865bc1ec5cae0 (patch)
tree3ca2071ba877fa738001c7bbd1987b50baa34d23 /sys/arm/xscale
parentbb3fec85f3e1707e781d798d53ae711a5269082a (diff)
downloadFreeBSD-src-c25b839fb87a16beaf55843df79865bc1ec5cae0.zip
FreeBSD-src-c25b839fb87a16beaf55843df79865bc1ec5cae0.tar.gz
Revise the arm bus_space implementation to avoid dereferencing the tag on
every operation to retrieve the bs_cookie value almost nothing actually uses. The bus_space struct contains a private data pointer (poorly named bs_cookie, now renamed to bs_privdata) which is used only by a few old armv4 xscale implementations. The bus_space functions were all defined to take this value as the first parameter instead of the bus_space_tag_t, requiring all the inline macro and function expansions to dereference the tag to pass it to another function, which never uses it. Now all the functions take the tag as the first parameter and retrieve the privdata if they need it. Also fix a couple bus_space_unmap() implementations that were calling kva_free() instead of pmap_unmapdev(). Discussed with: cognet
Diffstat (limited to 'sys/arm/xscale')
-rw-r--r--sys/arm/xscale/i80321/i80321_space.c40
-rw-r--r--sys/arm/xscale/i8134x/i81342_space.c30
-rw-r--r--sys/arm/xscale/ixp425/avila_ata.c38
-rw-r--r--sys/arm/xscale/ixp425/cambria_exp_space.c34
-rw-r--r--sys/arm/xscale/ixp425/ixp425_a4x_space.c2
-rw-r--r--sys/arm/xscale/ixp425/ixp425_pci_space.c151
-rw-r--r--sys/arm/xscale/ixp425/ixp425_space.c2
-rw-r--r--sys/arm/xscale/pxa/pxa_space.c20
8 files changed, 148 insertions, 169 deletions
diff --git a/sys/arm/xscale/i80321/i80321_space.c b/sys/arm/xscale/i80321/i80321_space.c
index ce1db83..44a2ca8 100644
--- a/sys/arm/xscale/i80321/i80321_space.c
+++ b/sys/arm/xscale/i80321/i80321_space.c
@@ -182,7 +182,7 @@ i80321_bs_init(bus_space_tag_t bs, void *cookie)
{
*bs = i80321_bs_tag_template;
- bs->bs_cookie = cookie;
+ bs->bs_privdata = cookie;
}
void
@@ -190,7 +190,7 @@ i80321_io_bs_init(bus_space_tag_t bs, void *cookie)
{
*bs = i80321_bs_tag_template;
- bs->bs_cookie = cookie;
+ bs->bs_privdata = cookie;
bs->bs_map = i80321_io_bs_map;
bs->bs_unmap = i80321_io_bs_unmap;
@@ -204,7 +204,7 @@ i80321_mem_bs_init(bus_space_tag_t bs, void *cookie)
{
*bs = i80321_bs_tag_template;
- bs->bs_cookie = cookie;
+ bs->bs_privdata = cookie;
bs->bs_map = i80321_mem_bs_map;
bs->bs_unmap = i80321_mem_bs_unmap;
@@ -216,7 +216,7 @@ i80321_mem_bs_init(bus_space_tag_t bs, void *cookie)
/* *** Routines shared by i80321, PCI IO, and PCI MEM. *** */
int
-i80321_bs_subregion(void *t, bus_space_handle_t bsh, bus_size_t offset,
+i80321_bs_subregion(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset,
bus_size_t size, bus_space_handle_t *nbshp)
{
@@ -225,7 +225,7 @@ i80321_bs_subregion(void *t, bus_space_handle_t bsh, bus_size_t offset,
}
void
-i80321_bs_barrier(void *t, bus_space_handle_t bsh, bus_size_t offset,
+i80321_bs_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset,
bus_size_t len, int flags)
{
@@ -236,7 +236,7 @@ i80321_bs_barrier(void *t, bus_space_handle_t bsh, bus_size_t offset,
extern struct i80321_softc *i80321_softc;
int
-i80321_io_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
+i80321_io_bs_map(bus_space_tag_t tag, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
{
struct i80321_softc *sc = i80321_softc;
@@ -264,14 +264,14 @@ i80321_io_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
}
void
-i80321_io_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
+i80321_io_bs_unmap(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t size)
{
/* Nothing to do. */
}
int
-i80321_io_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
+i80321_io_bs_alloc(bus_space_tag_t tag, bus_addr_t rstart, bus_addr_t rend,
bus_size_t size, bus_size_t alignment, bus_size_t boundary, int flags,
bus_addr_t *bpap, bus_space_handle_t *bshp)
{
@@ -280,7 +280,7 @@ i80321_io_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
}
void
-i80321_io_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
+i80321_io_bs_free(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t size)
{
panic("i80321_io_bs_free(): not implemented");
@@ -290,33 +290,23 @@ i80321_io_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
/* *** Routines for PCI MEM. *** */
extern int badaddr_read(void *, int, void *);
int
-i80321_mem_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
+i80321_mem_bs_map(bus_space_tag_t tag, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
{
- vm_paddr_t pa, endpa;
- pa = trunc_page(bpa);
- endpa = round_page(bpa + size);
-
- *bshp = (vm_offset_t)pmap_mapdev(pa, endpa - pa);
-
+ *bshp = (vm_offset_t)pmap_mapdev(bpa, size);
return (0);
}
void
-i80321_mem_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
+i80321_mem_bs_unmap(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t size)
{
- vm_offset_t va, endva;
-
- va = trunc_page((vm_offset_t)t);
- endva = va + round_page(size);
- /* Free the kernel virtual mapping. */
- kva_free(va, endva - va);
+ pmap_unmapdev((vm_offset_t)h, size);
}
int
-i80321_mem_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
+i80321_mem_bs_alloc(bus_space_tag_t tag, bus_addr_t rstart, bus_addr_t rend,
bus_size_t size, bus_size_t alignment, bus_size_t boundary, int flags,
bus_addr_t *bpap, bus_space_handle_t *bshp)
{
@@ -325,7 +315,7 @@ i80321_mem_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
}
void
-i80321_mem_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
+i80321_mem_bs_free(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t size)
{
panic("i80321_mem_bs_free(): not implemented");
diff --git a/sys/arm/xscale/i8134x/i81342_space.c b/sys/arm/xscale/i8134x/i81342_space.c
index bd19a77..e194474 100644
--- a/sys/arm/xscale/i8134x/i81342_space.c
+++ b/sys/arm/xscale/i8134x/i81342_space.c
@@ -183,7 +183,7 @@ i81342_bs_init(bus_space_tag_t bs, void *cookie)
{
*bs = i81342_bs_tag_template;
- bs->bs_cookie = cookie;
+ bs->bs_privdata = cookie;
}
void
@@ -191,7 +191,7 @@ i81342_io_bs_init(bus_space_tag_t bs, void *cookie)
{
*bs = i81342_bs_tag_template;
- bs->bs_cookie = cookie;
+ bs->bs_privdata = cookie;
bs->bs_map = i81342_io_bs_map;
bs->bs_unmap = i81342_io_bs_unmap;
@@ -205,7 +205,7 @@ i81342_mem_bs_init(bus_space_tag_t bs, void *cookie)
{
*bs = i81342_bs_tag_template;
- bs->bs_cookie = cookie;
+ bs->bs_privdata = cookie;
bs->bs_map = i81342_mem_bs_map;
bs->bs_unmap = i81342_mem_bs_unmap;
@@ -217,7 +217,7 @@ i81342_mem_bs_init(bus_space_tag_t bs, void *cookie)
/* *** Routines shared by i81342, PCI IO, and PCI MEM. *** */
int
-i81342_bs_subregion(void *t, bus_space_handle_t bsh, bus_size_t offset,
+i81342_bs_subregion(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset,
bus_size_t size, bus_space_handle_t *nbshp)
{
@@ -226,7 +226,7 @@ i81342_bs_subregion(void *t, bus_space_handle_t bsh, bus_size_t offset,
}
void
-i81342_bs_barrier(void *t, bus_space_handle_t bsh, bus_size_t offset,
+i81342_bs_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset,
bus_size_t len, int flags)
{
@@ -236,7 +236,7 @@ i81342_bs_barrier(void *t, bus_space_handle_t bsh, bus_size_t offset,
/* *** Routines for PCI IO. *** */
int
-i81342_io_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
+i81342_io_bs_map(bus_space_tag_t tag, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
{
@@ -245,14 +245,14 @@ i81342_io_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
}
void
-i81342_io_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
+i81342_io_bs_unmap(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t size)
{
/* Nothing to do. */
}
int
-i81342_io_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
+i81342_io_bs_alloc(bus_space_tag_t tag, bus_addr_t rstart, bus_addr_t rend,
bus_size_t size, bus_size_t alignment, bus_size_t boundary, int flags,
bus_addr_t *bpap, bus_space_handle_t *bshp)
{
@@ -261,7 +261,7 @@ i81342_io_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
}
void
-i81342_io_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
+i81342_io_bs_free(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t size)
{
panic("i81342_io_bs_free(): not implemented");
@@ -272,10 +272,10 @@ i81342_io_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
extern int badaddr_read(void *, int, void *);
static vm_offset_t allocable = 0xe1000000;
int
-i81342_mem_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
+i81342_mem_bs_map(bus_space_tag_t tag, bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
{
- struct i81342_pci_softc *sc = (struct i81342_pci_softc *)t;
+ struct i81342_pci_softc *sc = (struct i81342_pci_softc *)tag->bs_privdata;
struct i81342_pci_map *tmp;
vm_offset_t addr, endaddr;
vm_paddr_t paddr;
@@ -315,12 +315,12 @@ i81342_mem_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
}
void
-i81342_mem_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
+i81342_mem_bs_unmap(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t size)
{
#if 0
vm_offset_t va, endva;
- va = trunc_page((vm_offset_t)t);
+ va = trunc_page((vm_offset_t)h);
endva = va + round_page(size);
/* Free the kernel virtual mapping. */
@@ -329,7 +329,7 @@ i81342_mem_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
}
int
-i81342_mem_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
+i81342_mem_bs_alloc(bus_space_tag_t tag, bus_addr_t rstart, bus_addr_t rend,
bus_size_t size, bus_size_t alignment, bus_size_t boundary, int flags,
bus_addr_t *bpap, bus_space_handle_t *bshp)
{
@@ -338,7 +338,7 @@ i81342_mem_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
}
void
-i81342_mem_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
+i81342_mem_bs_free(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t size)
{
panic("i81342_mem_bs_free(): not implemented");
diff --git a/sys/arm/xscale/ixp425/avila_ata.c b/sys/arm/xscale/ixp425/avila_ata.c
index e630714..217cfc8 100644
--- a/sys/arm/xscale/ixp425/avila_ata.c
+++ b/sys/arm/xscale/ixp425/avila_ata.c
@@ -147,9 +147,9 @@ struct ata_avila_softc {
static void ata_avila_intr(void *);
bs_protos(ata);
-static void ata_bs_rm_2_s(void *, bus_space_handle_t, bus_size_t,
+static void ata_bs_rm_2_s(bus_space_tag_t tag, bus_space_handle_t, bus_size_t,
u_int16_t *, bus_size_t);
-static void ata_bs_wm_2_s(void *, bus_space_handle_t, bus_size_t,
+static void ata_bs_wm_2_s(bus_space_tag_t tag, bus_space_handle_t, bus_size_t,
const u_int16_t *, bus_size_t);
static int
@@ -200,7 +200,7 @@ ata_avila_attach(device_t dev)
* XXX probably should just make this generic for
* accessing the expansion bus.
*/
- sc->sc_expbus_tag.bs_cookie = sc; /* NB: backpointer */
+ sc->sc_expbus_tag.bs_privdata = sc; /* NB: backpointer */
/* read single */
sc->sc_expbus_tag.bs_r_1 = ata_bs_r_1,
sc->sc_expbus_tag.bs_r_2 = ata_bs_r_2,
@@ -355,25 +355,25 @@ disable_16(struct ata_avila_softc *sc)
}
uint8_t
-ata_bs_r_1(void *t, bus_space_handle_t h, bus_size_t o)
+ata_bs_r_1(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o)
{
- struct ata_avila_softc *sc = t;
+ struct ata_avila_softc *sc = tag->bs_privdata;
return bus_space_read_1(sc->sc_iot, h, o);
}
void
-ata_bs_w_1(void *t, bus_space_handle_t h, bus_size_t o, u_int8_t v)
+ata_bs_w_1(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o, u_int8_t v)
{
- struct ata_avila_softc *sc = t;
+ struct ata_avila_softc *sc = tag->bs_privdata;
bus_space_write_1(sc->sc_iot, h, o, v);
}
uint16_t
-ata_bs_r_2(void *t, bus_space_handle_t h, bus_size_t o)
+ata_bs_r_2(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o)
{
- struct ata_avila_softc *sc = t;
+ struct ata_avila_softc *sc = tag->bs_privdata;
uint16_t v;
enable_16(sc);
@@ -383,9 +383,9 @@ ata_bs_r_2(void *t, bus_space_handle_t h, bus_size_t o)
}
void
-ata_bs_w_2(void *t, bus_space_handle_t h, bus_size_t o, uint16_t v)
+ata_bs_w_2(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o, uint16_t v)
{
- struct ata_avila_softc *sc = t;
+ struct ata_avila_softc *sc = tag->bs_privdata;
enable_16(sc);
bus_space_write_2(sc->sc_iot, h, o, v);
@@ -393,10 +393,10 @@ ata_bs_w_2(void *t, bus_space_handle_t h, bus_size_t o, uint16_t v)
}
void
-ata_bs_rm_2(void *t, bus_space_handle_t h, bus_size_t o,
+ata_bs_rm_2(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o,
u_int16_t *d, bus_size_t c)
{
- struct ata_avila_softc *sc = t;
+ struct ata_avila_softc *sc = tag->bs_privdata;
enable_16(sc);
bus_space_read_multi_2(sc->sc_iot, h, o, d, c);
@@ -404,10 +404,10 @@ ata_bs_rm_2(void *t, bus_space_handle_t h, bus_size_t o,
}
void
-ata_bs_wm_2(void *t, bus_space_handle_t h, bus_size_t o,
+ata_bs_wm_2(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o,
const u_int16_t *d, bus_size_t c)
{
- struct ata_avila_softc *sc = t;
+ struct ata_avila_softc *sc = tag->bs_privdata;
enable_16(sc);
bus_space_write_multi_2(sc->sc_iot, h, o, d, c);
@@ -417,10 +417,10 @@ ata_bs_wm_2(void *t, bus_space_handle_t h, bus_size_t o,
/* XXX workaround ata driver by (incorrectly) byte swapping stream cases */
void
-ata_bs_rm_2_s(void *t, bus_space_handle_t h, bus_size_t o,
+ata_bs_rm_2_s(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o,
u_int16_t *d, bus_size_t c)
{
- struct ata_avila_softc *sc = t;
+ struct ata_avila_softc *sc = tag->bs_privdata;
uint16_t v;
bus_size_t i;
@@ -437,10 +437,10 @@ ata_bs_rm_2_s(void *t, bus_space_handle_t h, bus_size_t o,
}
void
-ata_bs_wm_2_s(void *t, bus_space_handle_t h, bus_size_t o,
+ata_bs_wm_2_s(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o,
const u_int16_t *d, bus_size_t c)
{
- struct ata_avila_softc *sc = t;
+ struct ata_avila_softc *sc = tag->bs_privdata;
bus_size_t i;
enable_16(sc);
diff --git a/sys/arm/xscale/ixp425/cambria_exp_space.c b/sys/arm/xscale/ixp425/cambria_exp_space.c
index 30dfac5..9dce577 100644
--- a/sys/arm/xscale/ixp425/cambria_exp_space.c
+++ b/sys/arm/xscale/ixp425/cambria_exp_space.c
@@ -83,9 +83,9 @@ disable_16(struct ixp425_softc *sc, bus_size_t cs)
}
static uint8_t
-cambria_bs_r_1(void *t, bus_space_handle_t h, bus_size_t o)
+cambria_bs_r_1(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o)
{
- struct expbus_softc *exp = t;
+ struct expbus_softc *exp = tag->bs_privdata;
struct ixp425_softc *sc = exp->sc;
uint8_t v;
@@ -96,9 +96,9 @@ cambria_bs_r_1(void *t, bus_space_handle_t h, bus_size_t o)
}
static void
-cambria_bs_w_1(void *t, bus_space_handle_t h, bus_size_t o, u_int8_t v)
+cambria_bs_w_1(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o, u_int8_t v)
{
- struct expbus_softc *exp = t;
+ struct expbus_softc *exp = tag->bs_privdata;
struct ixp425_softc *sc = exp->sc;
EXP_LOCK(exp);
@@ -107,9 +107,9 @@ cambria_bs_w_1(void *t, bus_space_handle_t h, bus_size_t o, u_int8_t v)
}
static uint16_t
-cambria_bs_r_2(void *t, bus_space_handle_t h, bus_size_t o)
+cambria_bs_r_2(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o)
{
- struct expbus_softc *exp = t;
+ struct expbus_softc *exp = tag->bs_privdata;
struct ixp425_softc *sc = exp->sc;
uint16_t v;
@@ -122,9 +122,9 @@ cambria_bs_r_2(void *t, bus_space_handle_t h, bus_size_t o)
}
static void
-cambria_bs_w_2(void *t, bus_space_handle_t h, bus_size_t o, uint16_t v)
+cambria_bs_w_2(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o, uint16_t v)
{
- struct expbus_softc *exp = t;
+ struct expbus_softc *exp = tag->bs_privdata;
struct ixp425_softc *sc = exp->sc;
EXP_LOCK(exp);
@@ -135,10 +135,10 @@ cambria_bs_w_2(void *t, bus_space_handle_t h, bus_size_t o, uint16_t v)
}
static void
-cambria_bs_rm_2(void *t, bus_space_handle_t h, bus_size_t o,
+cambria_bs_rm_2(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o,
u_int16_t *d, bus_size_t c)
{
- struct expbus_softc *exp = t;
+ struct expbus_softc *exp = tag->bs_privdata;
struct ixp425_softc *sc = exp->sc;
EXP_LOCK(exp);
@@ -149,10 +149,10 @@ cambria_bs_rm_2(void *t, bus_space_handle_t h, bus_size_t o,
}
static void
-cambria_bs_wm_2(void *t, bus_space_handle_t h, bus_size_t o,
+cambria_bs_wm_2(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o,
const u_int16_t *d, bus_size_t c)
{
- struct expbus_softc *exp = t;
+ struct expbus_softc *exp = tag->bs_privdata;
struct ixp425_softc *sc = exp->sc;
EXP_LOCK(exp);
@@ -165,10 +165,10 @@ cambria_bs_wm_2(void *t, bus_space_handle_t h, bus_size_t o,
/* XXX workaround ata driver by (incorrectly) byte swapping stream cases */
static void
-cambria_bs_rm_2_s(void *t, bus_space_handle_t h, bus_size_t o,
+cambria_bs_rm_2_s(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o,
u_int16_t *d, bus_size_t c)
{
- struct expbus_softc *exp = t;
+ struct expbus_softc *exp = tag->bs_privdata;
struct ixp425_softc *sc = exp->sc;
uint16_t v;
bus_size_t i;
@@ -188,10 +188,10 @@ cambria_bs_rm_2_s(void *t, bus_space_handle_t h, bus_size_t o,
}
static void
-cambria_bs_wm_2_s(void *t, bus_space_handle_t h, bus_size_t o,
+cambria_bs_wm_2_s(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t o,
const u_int16_t *d, bus_size_t c)
{
- struct expbus_softc *exp = t;
+ struct expbus_softc *exp = tag->bs_privdata;
struct ixp425_softc *sc = exp->sc;
bus_size_t i;
@@ -244,7 +244,7 @@ cambria_exp_bus_init(struct ixp425_softc *sc)
c3.sc = sc;
c3.csoff = EXP_TIMING_CS3_OFFSET;
EXP_LOCK_INIT(&c3);
- cambria_exp_bs_tag.bs_cookie = &c3;
+ cambria_exp_bs_tag.bs_privdata = &c3;
cs3 = EXP_BUS_READ_4(sc, EXP_TIMING_CS3_OFFSET);
/* XXX force slowest possible timings and byte mode */
diff --git a/sys/arm/xscale/ixp425/ixp425_a4x_space.c b/sys/arm/xscale/ixp425/ixp425_a4x_space.c
index 74239db..23e48e8 100644
--- a/sys/arm/xscale/ixp425/ixp425_a4x_space.c
+++ b/sys/arm/xscale/ixp425/ixp425_a4x_space.c
@@ -66,7 +66,7 @@ bs_protos(generic_armv4);
struct bus_space ixp425_a4x_bs_tag = {
/* cookie */
- .bs_cookie = (void *) 0,
+ .bs_privdata = (void *) 0,
/* mapping/unmapping */
.bs_map = generic_bs_map,
diff --git a/sys/arm/xscale/ixp425/ixp425_pci_space.c b/sys/arm/xscale/ixp425/ixp425_pci_space.c
index 8617e8e..bec3d9c 100644
--- a/sys/arm/xscale/ixp425/ixp425_pci_space.c
+++ b/sys/arm/xscale/ixp425/ixp425_pci_space.c
@@ -72,30 +72,30 @@ bs_protos(ixp425_pci_io);
bs_protos(ixp425_pci_mem);
/* special I/O functions */
-static u_int8_t _pci_io_bs_r_1(void *, bus_space_handle_t, bus_size_t);
-static u_int16_t _pci_io_bs_r_2(void *, bus_space_handle_t, bus_size_t);
-static u_int32_t _pci_io_bs_r_4(void *, bus_space_handle_t, bus_size_t);
+static u_int8_t _pci_io_bs_r_1(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
+static u_int16_t _pci_io_bs_r_2(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
+static u_int32_t _pci_io_bs_r_4(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
-static void _pci_io_bs_w_1(void *, bus_space_handle_t, bus_size_t, u_int8_t);
-static void _pci_io_bs_w_2(void *, bus_space_handle_t, bus_size_t, u_int16_t);
-static void _pci_io_bs_w_4(void *, bus_space_handle_t, bus_size_t, u_int32_t);
+static void _pci_io_bs_w_1(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int8_t);
+static void _pci_io_bs_w_2(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int16_t);
+static void _pci_io_bs_w_4(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int32_t);
#ifdef __ARMEB__
-static u_int8_t _pci_io_bs_r_1_s(void *, bus_space_handle_t, bus_size_t);
-static u_int16_t _pci_io_bs_r_2_s(void *, bus_space_handle_t, bus_size_t);
-static u_int32_t _pci_io_bs_r_4_s(void *, bus_space_handle_t, bus_size_t);
+static u_int8_t _pci_io_bs_r_1_s(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
+static u_int16_t _pci_io_bs_r_2_s(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
+static u_int32_t _pci_io_bs_r_4_s(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
-static void _pci_io_bs_w_1_s(void *, bus_space_handle_t, bus_size_t, u_int8_t);
-static void _pci_io_bs_w_2_s(void *, bus_space_handle_t, bus_size_t, u_int16_t);
-static void _pci_io_bs_w_4_s(void *, bus_space_handle_t, bus_size_t, u_int32_t);
+static void _pci_io_bs_w_1_s(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int8_t);
+static void _pci_io_bs_w_2_s(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int16_t);
+static void _pci_io_bs_w_4_s(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int32_t);
-static u_int8_t _pci_mem_bs_r_1(void *, bus_space_handle_t, bus_size_t);
-static u_int16_t _pci_mem_bs_r_2(void *, bus_space_handle_t, bus_size_t);
-static u_int32_t _pci_mem_bs_r_4(void *, bus_space_handle_t, bus_size_t);
+static u_int8_t _pci_mem_bs_r_1(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
+static u_int16_t _pci_mem_bs_r_2(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
+static u_int32_t _pci_mem_bs_r_4(bus_space_tag_t tag, bus_space_handle_t, bus_size_t);
-static void _pci_mem_bs_w_1(void *, bus_space_handle_t, bus_size_t, u_int8_t);
-static void _pci_mem_bs_w_2(void *, bus_space_handle_t, bus_size_t, u_int16_t);
-static void _pci_mem_bs_w_4(void *, bus_space_handle_t, bus_size_t, u_int32_t);
+static void _pci_mem_bs_w_1(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int8_t);
+static void _pci_mem_bs_w_2(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int16_t);
+static void _pci_mem_bs_w_4(bus_space_tag_t tag, bus_space_handle_t, bus_size_t, u_int32_t);
#endif
struct bus_space ixp425_pci_io_bs_tag_template = {
@@ -146,7 +146,7 @@ void
ixp425_io_bs_init(bus_space_tag_t bs, void *cookie)
{
*bs = ixp425_pci_io_bs_tag_template;
- bs->bs_cookie = cookie;
+ bs->bs_privdata = cookie;
}
struct bus_space ixp425_pci_mem_bs_tag_template = {
@@ -202,12 +202,12 @@ void
ixp425_mem_bs_init(bus_space_tag_t bs, void *cookie)
{
*bs = ixp425_pci_mem_bs_tag_template;
- bs->bs_cookie = cookie;
+ bs->bs_privdata = cookie;
}
/* common routine */
int
-ixp425_pci_bs_subregion(void *t, bus_space_handle_t bsh, bus_size_t offset,
+ixp425_pci_bs_subregion(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset,
bus_size_t size, bus_space_handle_t *nbshp)
{
*nbshp = bsh + offset;
@@ -215,7 +215,7 @@ ixp425_pci_bs_subregion(void *t, bus_space_handle_t bsh, bus_size_t offset,
}
void
-ixp425_pci_bs_barrier(void *t, bus_space_handle_t bsh, bus_size_t offset,
+ixp425_pci_bs_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset,
bus_size_t len, int flags)
{
/* NULL */
@@ -223,7 +223,7 @@ ixp425_pci_bs_barrier(void *t, bus_space_handle_t bsh, bus_size_t offset,
/* io bs */
int
-ixp425_pci_io_bs_map(void *t, bus_addr_t bpa, bus_size_t size,
+ixp425_pci_io_bs_map(bus_space_tag_t tag, bus_addr_t bpa, bus_size_t size,
int cacheable, bus_space_handle_t *bshp)
{
*bshp = bpa;
@@ -231,13 +231,13 @@ ixp425_pci_io_bs_map(void *t, bus_addr_t bpa, bus_size_t size,
}
void
-ixp425_pci_io_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
+ixp425_pci_io_bs_unmap(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t size)
{
/* Nothing to do. */
}
int
-ixp425_pci_io_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
+ixp425_pci_io_bs_alloc(bus_space_tag_t tag, bus_addr_t rstart, bus_addr_t rend,
bus_size_t size, bus_size_t alignment, bus_size_t boundary, int cacheable,
bus_addr_t *bpap, bus_space_handle_t *bshp)
{
@@ -245,14 +245,14 @@ ixp425_pci_io_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
}
void
-ixp425_pci_io_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
+ixp425_pci_io_bs_free(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t size)
{
panic("ixp425_pci_io_bs_free(): not implemented\n");
}
/* special I/O functions */
static __inline u_int32_t
-_bs_r(void *v, bus_space_handle_t ioh, bus_size_t off, u_int32_t be)
+_bs_r(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off, u_int32_t be)
{
u_int32_t data;
@@ -266,75 +266,75 @@ _bs_r(void *v, bus_space_handle_t ioh, bus_size_t off, u_int32_t be)
}
static u_int8_t
-_pci_io_bs_r_1(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_io_bs_r_1(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
u_int32_t data, n, be;
n = (ioh + off) % 4;
be = (0xf & ~(1U << n)) << NP_CBE_SHIFT;
- data = _bs_r(v, ioh, off, be);
+ data = _bs_r(tag, ioh, off, be);
return data >> (8 * n);
}
static u_int16_t
-_pci_io_bs_r_2(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_io_bs_r_2(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
u_int32_t data, n, be;
n = (ioh + off) % 4;
be = (0xf & ~((1U << n) | (1U << (n + 1)))) << NP_CBE_SHIFT;
- data = _bs_r(v, ioh, off, be);
+ data = _bs_r(tag, ioh, off, be);
return data >> (8 * n);
}
static u_int32_t
-_pci_io_bs_r_4(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_io_bs_r_4(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
u_int32_t data;
- data = _bs_r(v, ioh, off, 0);
+ data = _bs_r(tag, ioh, off, 0);
return data;
}
#ifdef __ARMEB__
static u_int8_t
-_pci_io_bs_r_1_s(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_io_bs_r_1_s(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
u_int32_t data, n, be;
n = (ioh + off) % 4;
be = (0xf & ~(1U << n)) << NP_CBE_SHIFT;
- data = _bs_r(v, ioh, off, be);
+ data = _bs_r(tag, ioh, off, be);
return data >> (8 * n);
}
static u_int16_t
-_pci_io_bs_r_2_s(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_io_bs_r_2_s(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
u_int32_t data, n, be;
n = (ioh + off) % 4;
be = (0xf & ~((1U << n) | (1U << (n + 1)))) << NP_CBE_SHIFT;
- data = _bs_r(v, ioh, off, be);
+ data = _bs_r(tag, ioh, off, be);
return data >> (8 * n);
}
static u_int32_t
-_pci_io_bs_r_4_s(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_io_bs_r_4_s(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
u_int32_t data;
- data = _bs_r(v, ioh, off, 0);
+ data = _bs_r(tag, ioh, off, 0);
return le32toh(data);
}
#endif /* __ARMEB__ */
static __inline void
-_bs_w(void *v, bus_space_handle_t ioh, bus_size_t off,
+_bs_w(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int32_t be, u_int32_t data)
{
CSR_WRITE_4(PCI_NP_AD, (ioh + off) & ~3);
@@ -345,7 +345,7 @@ _bs_w(void *v, bus_space_handle_t ioh, bus_size_t off,
}
static void
-_pci_io_bs_w_1(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_io_bs_w_1(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int8_t val)
{
u_int32_t data, n, be;
@@ -353,11 +353,11 @@ _pci_io_bs_w_1(void *v, bus_space_handle_t ioh, bus_size_t off,
n = (ioh + off) % 4;
be = (0xf & ~(1U << n)) << NP_CBE_SHIFT;
data = val << (8 * n);
- _bs_w(v, ioh, off, be, data);
+ _bs_w(tag, ioh, off, be, data);
}
static void
-_pci_io_bs_w_2(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_io_bs_w_2(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int16_t val)
{
u_int32_t data, n, be;
@@ -365,19 +365,19 @@ _pci_io_bs_w_2(void *v, bus_space_handle_t ioh, bus_size_t off,
n = (ioh + off) % 4;
be = (0xf & ~((1U << n) | (1U << (n + 1)))) << NP_CBE_SHIFT;
data = val << (8 * n);
- _bs_w(v, ioh, off, be, data);
+ _bs_w(tag, ioh, off, be, data);
}
static void
-_pci_io_bs_w_4(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_io_bs_w_4(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int32_t val)
{
- _bs_w(v, ioh, off, 0, val);
+ _bs_w(tag, ioh, off, 0, val);
}
#ifdef __ARMEB__
static void
-_pci_io_bs_w_1_s(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_io_bs_w_1_s(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int8_t val)
{
u_int32_t data, n, be;
@@ -385,11 +385,11 @@ _pci_io_bs_w_1_s(void *v, bus_space_handle_t ioh, bus_size_t off,
n = (ioh + off) % 4;
be = (0xf & ~(1U << n)) << NP_CBE_SHIFT;
data = val << (8 * n);
- _bs_w(v, ioh, off, be, data);
+ _bs_w(tag, ioh, off, be, data);
}
static void
-_pci_io_bs_w_2_s(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_io_bs_w_2_s(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int16_t val)
{
u_int32_t data, n, be;
@@ -397,46 +397,35 @@ _pci_io_bs_w_2_s(void *v, bus_space_handle_t ioh, bus_size_t off,
n = (ioh + off) % 4;
be = (0xf & ~((1U << n) | (1U << (n + 1)))) << NP_CBE_SHIFT;
data = val << (8 * n);
- _bs_w(v, ioh, off, be, data);
+ _bs_w(tag, ioh, off, be, data);
}
static void
-_pci_io_bs_w_4_s(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_io_bs_w_4_s(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int32_t val)
{
- _bs_w(v, ioh, off, 0, htole32(val));
+ _bs_w(tag, ioh, off, 0, htole32(val));
}
#endif /* __ARMEB__ */
/* mem bs */
int
-ixp425_pci_mem_bs_map(void *t, bus_addr_t bpa, bus_size_t size,
+ixp425_pci_mem_bs_map(bus_space_tag_t tag, bus_addr_t bpa, bus_size_t size,
int cacheable, bus_space_handle_t *bshp)
{
- vm_paddr_t pa, endpa;
-
- pa = trunc_page(bpa);
- endpa = round_page(bpa + size);
-
- *bshp = (vm_offset_t)pmap_mapdev(pa, endpa - pa);
-
+ *bshp = (vm_offset_t)pmap_mapdev(bpa, size);
return (0);
}
void
-ixp425_pci_mem_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
+ixp425_pci_mem_bs_unmap(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t size)
{
- vm_offset_t va, endva;
-
- va = trunc_page((vm_offset_t)t);
- endva = va + round_page(size);
- /* Free the kernel virtual mapping. */
- kva_free(va, endva - va);
+ pmap_unmapdev((vm_offset_t)h, size);
}
int
-ixp425_pci_mem_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
+ixp425_pci_mem_bs_alloc(bus_space_tag_t tag, bus_addr_t rstart, bus_addr_t rend,
bus_size_t size, bus_size_t alignment, bus_size_t boundary, int cacheable,
bus_addr_t *bpap, bus_space_handle_t *bshp)
{
@@ -444,52 +433,52 @@ ixp425_pci_mem_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend,
}
void
-ixp425_pci_mem_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
+ixp425_pci_mem_bs_free(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t size)
{
panic("ixp425_mem_bs_free(): not implemented\n");
}
#ifdef __ARMEB__
static u_int8_t
-_pci_mem_bs_r_1(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_mem_bs_r_1(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
- return ixp425_pci_mem_bs_r_1(v, ioh, off);
+ return ixp425_pci_mem_bs_r_1(tag, ioh, off);
}
static u_int16_t
-_pci_mem_bs_r_2(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_mem_bs_r_2(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
- return (ixp425_pci_mem_bs_r_2(v, ioh, off));
+ return (ixp425_pci_mem_bs_r_2(tag, ioh, off));
}
static u_int32_t
-_pci_mem_bs_r_4(void *v, bus_space_handle_t ioh, bus_size_t off)
+_pci_mem_bs_r_4(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off)
{
u_int32_t data;
- data = ixp425_pci_mem_bs_r_4(v, ioh, off);
+ data = ixp425_pci_mem_bs_r_4(tag, ioh, off);
return (le32toh(data));
}
static void
-_pci_mem_bs_w_1(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_mem_bs_w_1(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int8_t val)
{
- ixp425_pci_mem_bs_w_1(v, ioh, off, val);
+ ixp425_pci_mem_bs_w_1(tag, ioh, off, val);
}
static void
-_pci_mem_bs_w_2(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_mem_bs_w_2(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int16_t val)
{
- ixp425_pci_mem_bs_w_2(v, ioh, off, val);
+ ixp425_pci_mem_bs_w_2(tag, ioh, off, val);
}
static void
-_pci_mem_bs_w_4(void *v, bus_space_handle_t ioh, bus_size_t off,
+_pci_mem_bs_w_4(bus_space_tag_t tag, bus_space_handle_t ioh, bus_size_t off,
u_int32_t val)
{
- ixp425_pci_mem_bs_w_4(v, ioh, off, htole32(val));
+ ixp425_pci_mem_bs_w_4(tag, ioh, off, htole32(val));
}
#endif /* __ARMEB__ */
diff --git a/sys/arm/xscale/ixp425/ixp425_space.c b/sys/arm/xscale/ixp425/ixp425_space.c
index 982ad4b..102bcd2 100644
--- a/sys/arm/xscale/ixp425/ixp425_space.c
+++ b/sys/arm/xscale/ixp425/ixp425_space.c
@@ -63,7 +63,7 @@ bs_protos(generic_armv4);
struct bus_space ixp425_bs_tag = {
/* cookie */
- .bs_cookie = (void *) 0,
+ .bs_privdata = (void *) 0,
/* mapping/unmapping */
.bs_map = generic_bs_map,
diff --git a/sys/arm/xscale/pxa/pxa_space.c b/sys/arm/xscale/pxa/pxa_space.c
index f728e1d..cfaac37 100644
--- a/sys/arm/xscale/pxa/pxa_space.c
+++ b/sys/arm/xscale/pxa/pxa_space.c
@@ -145,7 +145,7 @@ pxa_obio_tag_init()
{
bcopy(&_base_tag, &_obio_tag, sizeof(struct bus_space));
- _obio_tag.bs_cookie = (void *)PXA2X0_PERIPH_OFFSET;
+ _obio_tag.bs_privdata = (void *)PXA2X0_PERIPH_OFFSET;
obio_tag = &_obio_tag;
}
@@ -161,7 +161,7 @@ pxa_bus_tag_alloc(bus_addr_t offset)
}
bcopy(&_base_tag, tag, sizeof(struct bus_space));
- tag->bs_cookie = (void *)offset;
+ tag->bs_privdata = (void *)offset;
return ((bus_space_tag_t)tag);
}
@@ -169,11 +169,11 @@ pxa_bus_tag_alloc(bus_addr_t offset)
#define READ_SINGLE(type, proto, base) \
type \
- proto(void *cookie, bus_space_handle_t bsh, bus_size_t offset) \
+ proto(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset) \
{ \
bus_addr_t tag_offset; \
type value; \
- tag_offset = (bus_addr_t)cookie; \
+ tag_offset = (bus_addr_t)tag->bs_privdata; \
value = base(NULL, bsh + tag_offset, offset); \
return (value); \
}
@@ -186,11 +186,11 @@ READ_SINGLE(u_int32_t, pxa_bs_r_4, generic_bs_r_4)
#define WRITE_SINGLE(type, proto, base) \
void \
- proto(void *cookie, bus_space_handle_t bsh, bus_size_t offset, \
+ proto(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, \
type value) \
{ \
bus_addr_t tag_offset; \
- tag_offset = (bus_addr_t)cookie; \
+ tag_offset = (bus_addr_t)tag->bs_privdata; \
base(NULL, bsh + tag_offset, offset, value); \
}
@@ -202,11 +202,11 @@ WRITE_SINGLE(u_int32_t, pxa_bs_w_4, generic_bs_w_4)
#define READ_MULTI(type, proto, base) \
void \
- proto(void *cookie, bus_space_handle_t bsh, bus_size_t offset, \
+ proto(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, \
type *dest, bus_size_t count) \
{ \
bus_addr_t tag_offset; \
- tag_offset = (bus_addr_t)cookie; \
+ tag_offset = (bus_addr_t)tag->bs_privdata; \
base(NULL, bsh + tag_offset, offset, dest, count); \
}
@@ -219,11 +219,11 @@ READ_MULTI(u_int8_t, pxa_bs_rr_1, generic_bs_rr_1)
#define WRITE_MULTI(type, proto, base) \
void \
- proto(void *cookie, bus_space_handle_t bsh, bus_size_t offset, \
+ proto(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, \
const type *src, bus_size_t count) \
{ \
bus_addr_t tag_offset; \
- tag_offset = (bus_addr_t)cookie; \
+ tag_offset = (bus_addr_t)tag->bs_privdata; \
base(NULL, bsh + tag_offset, offset, src, count); \
}
OpenPOWER on IntegriCloud