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

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
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -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]);