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

Commit 188ff65d authored by Haavard Skinnemoen's avatar Haavard Skinnemoen
Browse files

[AVR32] Don't enable clocks with no users



Bring the code that sets the initial PM clock masks in line with the
comment preceding it by only enabling clocks that have users != 0.
Fix SM clock definition and avr32_hpt_init() so that the SM and TC0
clocks keep ticking.

Signed-off-by: default avatarHaavard Skinnemoen <hskinnemoen@atmel.com>
parent 19b7ce8b
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -417,7 +417,15 @@ struct platform_device at32_sm_device = {
	.resource	= sm_resource,
	.num_resources	= ARRAY_SIZE(sm_resource),
};
DEV_CLK(pclk, at32_sm, pbb, 0);
static struct clk at32_sm_pclk = {
	.name		= "pclk",
	.dev		= &at32_sm_device.dev,
	.parent		= &pbb_clk,
	.mode		= pbb_clk_mode,
	.get_rate	= pbb_clk_get_rate,
	.users		= 1,
	.index		= 0,
};

static struct resource intc0_resource[] = {
	PBMEM(0xfff00400),
@@ -443,6 +451,7 @@ static struct clk hramc_clk = {
	.mode		= hsb_clk_mode,
	.get_rate	= hsb_clk_get_rate,
	.users		= 1,
	.index		= 3,
};

static struct resource smc0_resource[] = {
@@ -1080,6 +1089,9 @@ void __init at32_clock_init(void)
	for (i = 0; i < ARRAY_SIZE(at32_clock_list); i++) {
		struct clk *clk = at32_clock_list[i];

		if (clk->users == 0)
			continue;

		if (clk->mode == &cpu_clk_mode)
			cpu_mask |= 1 << clk->index;
		else if (clk->mode == &hsb_clk_mode)
+1 −0
Original line number Diff line number Diff line
@@ -135,6 +135,7 @@ int avr32_hpt_init(unsigned int count)
		pr_debug("timer: could not get clk: %ld\n", PTR_ERR(pclk));
		goto out_error;
	}
	clk_enable(pclk);

	regs = platform_get_resource(&at32_systc0_device, IORESOURCE_MEM, 0);
	if (!regs) {