/* try to support NOMMU mmaps on concatenated devices */
static unsigned long concat_get_unmapped_area(struct mtd_info *mtd, unsigned long len, unsigned long offset, unsigned long flags)
/* try to support NOMMU mmaps on concatenated devices */
static unsigned long concat_get_unmapped_area(struct mtd_info *mtd, unsigned long len, unsigned long offset, unsigned long flags)
{
	struct mtd_concat *concat = CONCAT(mtd);
	int i;
	for (i = 0; i < concat->num_subdev; i++) {
		struct mtd_info *subdev = concat->subdev[i];
		if (offset >= subdev->size) {
			offset -= subdev->size;
			continue;
		}
		if (offset + len > subdev->size)
			return (unsigned long) -EINVAL;
		if (subdev->get_unmapped_area)
			return subdev->get_unmapped_area(subdev, len, offset,
							 flags);
		break;
	}
	return (unsigned long) -ENOSYS;
}