Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1291190 > unrolled thread
| Started by | Daniel Lezcano <daniel.lezcano@linaro.org> |
|---|---|
| First post | 2015-12-14 14:40 +0100 |
| Last post | 2015-12-15 13:50 +0100 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v1 02/10] clockevents/drivers: add MPS2 Timer driver Daniel Lezcano <daniel.lezcano@linaro.org> - 2015-12-14 14:40 +0100
Re: [PATCH v1 02/10] clockevents/drivers: add MPS2 Timer driver Vladimir Murzin <vladimir.murzin@arm.com> - 2015-12-15 13:50 +0100
| From | Daniel Lezcano <daniel.lezcano@linaro.org> |
|---|---|
| Date | 2015-12-14 14:40 +0100 |
| Subject | Re: [PATCH v1 02/10] clockevents/drivers: add MPS2 Timer driver |
| Message-ID | <qFBw5-6M8-5@gated-at.bofh.it> |
On 12/02/2015 10:33 AM, Vladimir Murzin wrote:
> MPS2 platform has simple 32 bits general purpose countdown timers.
>
> The driver uses the first detected timer as a clocksource and the rest
> of the timers as a clockevent
>
> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
> ---
[ ... ]
> +static void clockevent_mps2_writel(u32 val, struct clock_event_device *c, u32 offset)
> +{
> + writel(val, to_mps2_clkevt(c)->reg + offset);
> +}
Is it possible to use writel_relaxed here ?
[ ... ]
> +static int mps2_timer_set_periodic(struct clock_event_device *ce)
> +{
> + u32 clock_count_per_tick = to_mps2_clkevt(ce)->clock_count_per_tick;
> +
> + clockevent_mps2_writel(clock_count_per_tick, ce, TIMER_RELOAD);
> + clockevent_mps2_writel(clock_count_per_tick, ce, TIMER_VALUE);
> + clockevent_mps2_writel(TIMER_CTRL_IE | TIMER_CTRL_ENABLE, ce, TIMER_CTRL);
> +
> + return 0;
> +}
> +
> +static irqreturn_t mps2_timer_interrupt(int irq, void *dev_id)
> +{
> + struct clockevent_mps2 *ce = dev_id;
> + u32 status = readl(ce->reg + TIMER_INT);
> +
> + if (!status) {
> + pr_warn("spuirous interrupt\n");
typo: 'spurious'
[ ... ]
> + ce = kzalloc(sizeof(struct clockevent_mps2), GFP_KERNEL);
> + if (!ce) {
> + ret = -ENOMEM;
> + pr_err("failed to allocate clockevent: %d\n", ret);
There is already a stack trace in the kernel when an allocation fails.
With the above fixed:
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
--
<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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Vladimir Murzin <vladimir.murzin@arm.com> |
|---|---|
| Date | 2015-12-15 13:50 +0100 |
| Message-ID | <qFXdg-4aK-5@gated-at.bofh.it> |
| In reply to | #1291190 |
On 14/12/15 13:36, Daniel Lezcano wrote:
> On 12/02/2015 10:33 AM, Vladimir Murzin wrote:
>> MPS2 platform has simple 32 bits general purpose countdown timers.
>>
>> The driver uses the first detected timer as a clocksource and the rest
>> of the timers as a clockevent
>>
>> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
>> ---
>
> [ ... ]
>
>> +static void clockevent_mps2_writel(u32 val, struct clock_event_device
>> *c, u32 offset)
>> +{
>> + writel(val, to_mps2_clkevt(c)->reg + offset);
>> +}
>
> Is it possible to use writel_relaxed here ?
I think it is possible. I'll update that part.
>
> [ ... ]
>
>> +static int mps2_timer_set_periodic(struct clock_event_device *ce)
>> +{
>> + u32 clock_count_per_tick = to_mps2_clkevt(ce)->clock_count_per_tick;
>> +
>> + clockevent_mps2_writel(clock_count_per_tick, ce, TIMER_RELOAD);
>> + clockevent_mps2_writel(clock_count_per_tick, ce, TIMER_VALUE);
>> + clockevent_mps2_writel(TIMER_CTRL_IE | TIMER_CTRL_ENABLE, ce,
>> TIMER_CTRL);
>> +
>> + return 0;
>> +}
>> +
>> +static irqreturn_t mps2_timer_interrupt(int irq, void *dev_id)
>> +{
>> + struct clockevent_mps2 *ce = dev_id;
>> + u32 status = readl(ce->reg + TIMER_INT);
>> +
>> + if (!status) {
>> + pr_warn("spuirous interrupt\n");
>
> typo: 'spurious'
>
> [ ... ]
>
>> + ce = kzalloc(sizeof(struct clockevent_mps2), GFP_KERNEL);
>> + if (!ce) {
>> + ret = -ENOMEM;
>> + pr_err("failed to allocate clockevent: %d\n", ret);
>
> There is already a stack trace in the kernel when an allocation fails.
>
> With the above fixed:
>
> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>
>
All above fixed locally.
Thanks
Vladimir
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web