Commit b3dd9303 authored by Linus Walleij's avatar Linus Walleij Committed by Boris Brezillon

mtd: maps: physmap: Leave assigned complex mappings

SoC-specific drivers might provide their own map->xxx()
implementations, and calling simple_map_init() unconditionally will
override those implementations.

Make sure map->read is NULL before calling simple_map_init().
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
parent c78f59d7
......@@ -514,10 +514,20 @@ static int physmap_flash_probe(struct platform_device *dev)
err = physmap_addr_gpios_map_init(&info->maps[i]);
if (err)
goto err_out;
} else {
simple_map_init(&info->maps[i]);
}
#ifdef CONFIG_MTD_COMPLEX_MAPPINGS
/*
* Only use the simple_map implementation if map hooks are not
* implemented. Since map->read() is mandatory checking for its
* presence is enough.
*/
if (!info->maps[i].read)
simple_map_init(&info->maps[i]);
#else
simple_map_init(&info->maps[i]);
#endif
if (info->probe_type) {
info->mtds[i] = do_map_probe(info->probe_type,
&info->maps[i]);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment