Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 359c533f authored by Tony Lindgren's avatar Tony Lindgren
Browse files

Merge commit '1dbcb97c' into omap-for-v4.20/soc

parents 5b394b2d 1dbcb97c
Loading
Loading
Loading
Loading
+38 −1
Original line number Diff line number Diff line
@@ -2160,6 +2160,37 @@ static int of_dev_hwmod_lookup(struct device_node *np,
	return -ENODEV;
}

/**
 * omap_hwmod_fix_mpu_rt_idx - fix up mpu_rt_idx register offsets
 *
 * @oh: struct omap_hwmod *
 * @np: struct device_node *
 *
 * Fix up module register offsets for modules with mpu_rt_idx.
 * Only needed for cpsw with interconnect target module defined
 * in device tree while still using legacy hwmod platform data
 * for rev, sysc and syss registers.
 *
 * Can be removed when all cpsw hwmod platform data has been
 * dropped.
 */
static void omap_hwmod_fix_mpu_rt_idx(struct omap_hwmod *oh,
				      struct device_node *np,
				      struct resource *res)
{
	struct device_node *child = NULL;
	int error;

	child = of_get_next_child(np, child);
	if (!child)
		return;

	error = of_address_to_resource(child, oh->mpu_rt_idx, res);
	if (error)
		pr_err("%s: error mapping mpu_rt_idx: %i\n",
		       __func__, error);
}

/**
 * omap_hwmod_parse_module_range - map module IO range from device tree
 * @oh: struct omap_hwmod *
@@ -2220,7 +2251,13 @@ int omap_hwmod_parse_module_range(struct omap_hwmod *oh,
	size = be32_to_cpup(ranges);

	pr_debug("omap_hwmod: %s %s at 0x%llx size 0x%llx\n",
		 oh->name, np->name, base, size);
		 oh ? oh->name : "", np->name, base, size);

	if (oh && oh->mpu_rt_idx) {
		omap_hwmod_fix_mpu_rt_idx(oh, np, res);

		return 0;
	}

	res->start = base;
	res->end = base + size - 1;