Commit 04dfac09 authored by Tero Kristo's avatar Tero Kristo Committed by Tony Lindgren
Browse files

ARM: omap2+: control: add support for auxiliary control module instances



Control module can have multiple instances in a system, each with separate
address space and features. Add base support for these auxiliary instances,
with support for syscon and clock mappings under them.

Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
Tested-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent e33509c1
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -623,6 +623,7 @@ void __init omap3_ctrl_init(void)

struct control_init_data {
	int index;
	void __iomem *mem;
	s16 offset;
};

@@ -660,17 +661,23 @@ int __init omap2_control_base_init(void)
	struct device_node *np;
	const struct of_device_id *match;
	struct control_init_data *data;
	void __iomem *mem;

	for_each_matching_node_and_match(np, omap_scrm_dt_match_table, &match) {
		data = (struct control_init_data *)match->data;

		omap2_ctrl_base = of_iomap(np, 0);
		if (!omap2_ctrl_base)
		mem = of_iomap(np, 0);
		if (!mem)
			return -ENOMEM;

		if (data->index == TI_CLKM_CTRL) {
			omap2_ctrl_base = mem;
			omap2_ctrl_offset = data->offset;
		}

		data->mem = mem;
	}

	return 0;
}

@@ -713,7 +720,7 @@ int __init omap_control_init(void)
		} else {
			/* No scm_conf found, direct access */
			ret = omap2_clk_provider_init(np, data->index, NULL,
						      omap2_ctrl_base);
						      data->mem);
			if (ret)
				return ret;
		}
+1 −0
Original line number Diff line number Diff line
@@ -203,6 +203,7 @@ enum {
	TI_CLKM_PRM,
	TI_CLKM_SCRM,
	TI_CLKM_CTRL,
	TI_CLKM_CTRL_AUX,
	TI_CLKM_PLLSS,
	CLK_MAX_MEMMAPS
};