From: Jes Sorensen Date: Tue, 5 May 2015 22:36:26 +0000 (-0400) Subject: staging: unisys: visorchipset: Use ioremap direction rather than heavy visor_memregion X-Git-Tag: firefly_0821_release~176^2~1545^2~812 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=dd412751129876dbeee811843fefe3b369e487ad;p=firefly-linux-kernel-4.4.55.git staging: unisys: visorchipset: Use ioremap direction rather than heavy visor_memregion Signed-off-by: Jes Sorensen Signed-off-by: Benjamin Romer Signed-off-by: Greg Kroah-Hartman --- 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;