Message ID | 20211101193531.15078-2-semen.protsenko@linaro.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 7cd925a8823d16de5614d3f0aabea9948747accd |
Headers | show |
Series | clocksource: exynos_mct: Enable MCT on ARM64 | expand |
On 01/11/2021 20:35, Sam Protsenko wrote: > From: Marek Szyprowski <m.szyprowski@samsung.com> > > Move interrupts allocation from exynos4_timer_resources() into separate > function together with the interrupt number parsing code from > mct_init_dt(), so the code for managing interrupts is kept together. > While touching exynos4_timer_resources() function, move of_iomap() to it. > No functional changes. > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> > Tested-by: Chanwoo Choi <cw00.choi@samsung.com> > Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > --- Applied, thx [ ... ]
On Tue, 16 Nov 2021 at 18:00, Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > > On 01/11/2021 20:35, Sam Protsenko wrote: > > From: Marek Szyprowski <m.szyprowski@samsung.com> > > > > Move interrupts allocation from exynos4_timer_resources() into separate > > function together with the interrupt number parsing code from > > mct_init_dt(), so the code for managing interrupts is kept together. > > While touching exynos4_timer_resources() function, move of_iomap() to it. > > No functional changes. > > > > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> > > Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com> > > Tested-by: Chanwoo Choi <cw00.choi@samsung.com> > > Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > > --- > > Applied, thx > Hi Daniel, Can you please let me know the URL for your tree where you applied this one? I checked [1] and linux-next, but this patch seems nowhere to be found. [1] https://git.kernel.org/pub/scm/linux/kernel/git/daniel.lezcano/linux.git/ Thanks! > [ ... ] > > -- > <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs > > Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | > <http://twitter.com/#!/linaroorg> Twitter | > <http://www.linaro.org/linaro-blog/> Blog
diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c index 5e3e96d3d1b9..857cf12ebe57 100644 --- a/drivers/clocksource/exynos_mct.c +++ b/drivers/clocksource/exynos_mct.c @@ -504,11 +504,14 @@ static int exynos4_mct_dying_cpu(unsigned int cpu) return 0; } -static int __init exynos4_timer_resources(struct device_node *np, void __iomem *base) +static int __init exynos4_timer_resources(struct device_node *np) { - int err, cpu; struct clk *mct_clk, *tick_clk; + reg_base = of_iomap(np, 0); + if (!reg_base) + panic("%s: unable to ioremap mct address space\n", __func__); + tick_clk = of_clk_get_by_name(np, "fin_pll"); if (IS_ERR(tick_clk)) panic("%s: unable to determine tick clock rate\n", __func__); @@ -519,9 +522,27 @@ static int __init exynos4_timer_resources(struct device_node *np, void __iomem * panic("%s: unable to retrieve mct clock instance\n", __func__); clk_prepare_enable(mct_clk); - reg_base = base; - if (!reg_base) - panic("%s: unable to ioremap mct address space\n", __func__); + return 0; +} + +static int __init exynos4_timer_interrupts(struct device_node *np, + unsigned int int_type) +{ + int nr_irqs, i, err, cpu; + + mct_int_type = int_type; + + /* This driver uses only one global timer interrupt */ + mct_irqs[MCT_G0_IRQ] = irq_of_parse_and_map(np, MCT_G0_IRQ); + + /* + * Find out the number of local irqs specified. The local + * timer irqs are specified after the four global timer + * irqs are specified. + */ + nr_irqs = of_irq_count(np); + for (i = MCT_L0_IRQ; i < nr_irqs; i++) + mct_irqs[i] = irq_of_parse_and_map(np, i); if (mct_int_type == MCT_INT_PPI) { @@ -581,24 +602,13 @@ static int __init exynos4_timer_resources(struct device_node *np, void __iomem * static int __init mct_init_dt(struct device_node *np, unsigned int int_type) { - u32 nr_irqs, i; int ret; - mct_int_type = int_type; - - /* This driver uses only one global timer interrupt */ - mct_irqs[MCT_G0_IRQ] = irq_of_parse_and_map(np, MCT_G0_IRQ); - - /* - * Find out the number of local irqs specified. The local - * timer irqs are specified after the four global timer - * irqs are specified. - */ - nr_irqs = of_irq_count(np); - for (i = MCT_L0_IRQ; i < nr_irqs; i++) - mct_irqs[i] = irq_of_parse_and_map(np, i); + ret = exynos4_timer_resources(np); + if (ret) + return ret; - ret = exynos4_timer_resources(np, of_iomap(np, 0)); + ret = exynos4_timer_interrupts(np, int_type); if (ret) return ret;