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

Commit 064fe81e authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'omap-for-v4.17/soc-pt2-signed' of...

Merge tag 'omap-for-v4.17/soc-pt2-signed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/soc

Pull "Two omap5 specific aux control module patches for v4.17" from Tony Lindgren:

On omap5 there is an aux control module that we are not handling
currently for clocks, so let's add support for it.

* tag 'omap-for-v4.17/soc-pt2-signed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP5: control: add support for control module wkup pad config
  ARM: omap2+: control: add support for auxiliary control module instances
parents 93028494 5aa6d806
Loading
Loading
Loading
Loading
+16 −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;
};

@@ -635,6 +636,10 @@ static const struct control_init_data omap2_ctrl_data = {
	.offset = -OMAP2_CONTROL_GENERAL,
};

static const struct control_init_data ctrl_aux_data = {
	.index = TI_CLKM_CTRL_AUX,
};

static const struct of_device_id omap_scrm_dt_match_table[] = {
	{ .compatible = "ti,am3-scm", .data = &ctrl_data },
	{ .compatible = "ti,am4-scm", .data = &ctrl_data },
@@ -644,6 +649,7 @@ static const struct of_device_id omap_scrm_dt_match_table[] = {
	{ .compatible = "ti,dm816-scrm", .data = &ctrl_data },
	{ .compatible = "ti,omap4-scm-core", .data = &ctrl_data },
	{ .compatible = "ti,omap5-scm-core", .data = &ctrl_data },
	{ .compatible = "ti,omap5-scm-wkup-pad-conf", .data = &ctrl_aux_data },
	{ .compatible = "ti,dra7-scm-core", .data = &ctrl_data },
	{ }
};
@@ -660,17 +666,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 +725,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
};