diff options
| author | 2015-05-05 18:36:26 -0400 | |
|---|---|---|
| committer | 2015-05-08 15:26:03 +0200 | |
| commit | dd412751129876dbeee811843fefe3b369e487ad (patch) | |
| tree | 7c44b0d67cf86da9c1f8f734c98be1c18f5b9476 | |
| parent | staging: unisys: visorchipset: parser_init_guts(): Localize memregion usage (diff) | |
staging: unisys: visorchipset: Use ioremap direction rather than heavy visor_memregion
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Benjamin Romer <benjamin.romer@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/staging/unisys/visorbus/visorchipset.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/staging/unisys/visorbus/visorchipset.c b/drivers/staging/unisys/visorbus/visorchipset.c index 2be8514d7b18..9390ed6e90d2 100644 --- a/drivers/staging/unisys/visorbus/visorchipset.c +++ b/drivers/staging/unisys/visorbus/visorchipset.c @@ -397,9 +397,7 @@ parser_init_guts(u64 addr, u32 bytes, bool local, int allocbytes = sizeof(struct parser_context) + bytes; struct parser_context *rc = NULL; struct parser_context *ctx = NULL; - struct memregion *rgn = NULL; struct spar_controlvm_parameters_header *phdr = NULL; - int cnt; if (retry) *retry = false; @@ -438,18 +436,21 @@ parser_init_guts(u64 addr, u32 bytes, bool local, p = __va((unsigned long) (addr)); memcpy(ctx->data, p, bytes); } else { - rgn = visor_memregion_create(addr, bytes); - if (!rgn) { + void __iomem *mapping; + + if (!request_mem_region(addr, bytes, "visorchipset")) { rc = NULL; goto cleanup; } - cnt = visor_memregion_read(rgn, 0, ctx->data, bytes); - visor_memregion_destroy(rgn); - if (cnt < 0) { + mapping = ioremap_cache(addr, bytes); + if (!mapping) { + release_mem_region(addr, bytes); rc = NULL; goto cleanup; } + memcpy_fromio(ctx->data, mapping, bytes); + release_mem_region(addr, bytes); } if (!standard_payload_header) { ctx->byte_stream = true; |
