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

[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
...@@ -417,7 +417,15 @@ struct platform_device at32_sm_device = { ...@@ -417,7 +417,15 @@ struct platform_device at32_sm_device = {
.resource = sm_resource, .resource = sm_resource,
.num_resources = ARRAY_SIZE(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[] = { static struct resource intc0_resource[] = {
PBMEM(0xfff00400), PBMEM(0xfff00400),
...@@ -443,6 +451,7 @@ static struct clk hramc_clk = { ...@@ -443,6 +451,7 @@ static struct clk hramc_clk = {
.mode = hsb_clk_mode, .mode = hsb_clk_mode,
.get_rate = hsb_clk_get_rate, .get_rate = hsb_clk_get_rate,
.users = 1, .users = 1,
.index = 3,
}; };
static struct resource smc0_resource[] = { static struct resource smc0_resource[] = {
...@@ -1080,6 +1089,9 @@ void __init at32_clock_init(void) ...@@ -1080,6 +1089,9 @@ void __init at32_clock_init(void)
for (i = 0; i < ARRAY_SIZE(at32_clock_list); i++) { for (i = 0; i < ARRAY_SIZE(at32_clock_list); i++) {
struct clk *clk = at32_clock_list[i]; struct clk *clk = at32_clock_list[i];
if (clk->users == 0)
continue;
if (clk->mode == &cpu_clk_mode) if (clk->mode == &cpu_clk_mode)
cpu_mask |= 1 << clk->index; cpu_mask |= 1 << clk->index;
else if (clk->mode == &hsb_clk_mode) else if (clk->mode == &hsb_clk_mode)
......
...@@ -135,6 +135,7 @@ int avr32_hpt_init(unsigned int count) ...@@ -135,6 +135,7 @@ int avr32_hpt_init(unsigned int count)
pr_debug("timer: could not get clk: %ld\n", PTR_ERR(pclk)); pr_debug("timer: could not get clk: %ld\n", PTR_ERR(pclk));
goto out_error; goto out_error;
} }
clk_enable(pclk);
regs = platform_get_resource(&at32_systc0_device, IORESOURCE_MEM, 0); regs = platform_get_resource(&at32_systc0_device, IORESOURCE_MEM, 0);
if (!regs) { if (!regs) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment