mirror of https://gitee.com/openkylin/linux.git
mtd: slram: use memremap() instead of ioremap()
Convert slram to use memremap() to map the memory it uses to back an MTD device, as this is the proper interface for mapping memory. This change enables normal memory to be used to back an MTD device on arm64, as arm64 prevents ioremap() being used on normal memory. Signed-off-by: Roy Franz <roy.franz@cavium.com> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: David Daney <david.daney@cavium.com> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
9de8da4774
commit
cb9e20633d
|
@ -163,8 +163,9 @@ static int register_device(char *name, unsigned long start, unsigned long length
|
|||
}
|
||||
|
||||
if (!(((slram_priv_t *)(*curmtd)->mtdinfo->priv)->start =
|
||||
ioremap(start, length))) {
|
||||
E("slram: ioremap failed\n");
|
||||
memremap(start, length,
|
||||
MEMREMAP_WB | MEMREMAP_WT | MEMREMAP_WC))) {
|
||||
E("slram: memremap failed\n");
|
||||
return -EIO;
|
||||
}
|
||||
((slram_priv_t *)(*curmtd)->mtdinfo->priv)->end =
|
||||
|
@ -186,7 +187,7 @@ static int register_device(char *name, unsigned long start, unsigned long length
|
|||
|
||||
if (mtd_device_register((*curmtd)->mtdinfo, NULL, 0)) {
|
||||
E("slram: Failed to register new device\n");
|
||||
iounmap(((slram_priv_t *)(*curmtd)->mtdinfo->priv)->start);
|
||||
memunmap(((slram_priv_t *)(*curmtd)->mtdinfo->priv)->start);
|
||||
kfree((*curmtd)->mtdinfo->priv);
|
||||
kfree((*curmtd)->mtdinfo);
|
||||
return(-EAGAIN);
|
||||
|
@ -206,7 +207,7 @@ static void unregister_devices(void)
|
|||
while (slram_mtdlist) {
|
||||
nextitem = slram_mtdlist->next;
|
||||
mtd_device_unregister(slram_mtdlist->mtdinfo);
|
||||
iounmap(((slram_priv_t *)slram_mtdlist->mtdinfo->priv)->start);
|
||||
memunmap(((slram_priv_t *)slram_mtdlist->mtdinfo->priv)->start);
|
||||
kfree(slram_mtdlist->mtdinfo->priv);
|
||||
kfree(slram_mtdlist->mtdinfo);
|
||||
kfree(slram_mtdlist);
|
||||
|
|
Loading…
Reference in New Issue