From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Vladimir Murzin <vladimir.murzin@arm.com>,
arnd@arndb.de, linux@arm.linux.org.uk,
gregkh@linuxfoundation.org, tglx@linutronix.de,
u.kleine-koenig@pengutronix.de, afaerber@suse.de,
mcoquelin.stm32@gmail.com
Cc: Mark.Rutland@arm.com, Pawel.Moll@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
jslaby@suse.cz, robh+dt@kernel.org, devicetree@vger.kernel.org,
linux-serial@vger.kernel.org, linux-api@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 02/10] clockevents/drivers: add MPS2 Timer driver
Date: Wed, 25 Nov 2015 16:10:16 +0100 [thread overview]
Message-ID: <5655CF58.6030507@linaro.org> (raw)
In-Reply-To: <5655CADA.1010803@arm.com>
On 11/25/2015 03:51 PM, Vladimir Murzin wrote:
> Hi Daniel,
>
> Thanks for you review, I agree on all concerns raised and address them
> in the next version. Just some points to confirm below (I left only
> relevant parts).
>
>>> +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)
>>> + return IRQ_NONE;
>>
>> Why that could happen ? Add a comment.
>>
>
> Sort of defensive programming, I never seen it happens, but just in case
> of spurious interrupts... Do you prefer to get rid of this check or
>
> /* spurious interrupt? */
> if (!status)
> return IRQ_NONE;
>
> would be fine to you?
Yes, that would be fine, but if it does never happen, we don't really
need this check. If you prefer to make sure there isn't a spurious
interrupt and considering it shouldn't happen, a pr_info trace may help
to spot this misbehavior.
>>> +}
>>> +
>>> +static void __init mps2_timer_init(struct device_node *np)
>>> +{
>>> + static int clksrc;
>>> +
>>> + if (!clksrc && !mps2_clocksource_init(np))
>>> + clksrc = 1;
>>> + else
>>> + mps2_clockevents_init(np);
>>
>> That assumes the clocksource is defined before the clockevents in the
>> DT. If it is not the case, the mps2_clocksource_init will fail (and spit
>> errors) and mps2_clockevents_init() won't be called.
>>
>
> Does following (stolen from efm32) look better to you?
>
> static void __init mps2_timer_init(struct device_node *np)
> {
> static int has_clocksource, has_clockevent;
> int ret;
>
> if (!has_clocksource) {
> ret = mps2_clocksource_init(np);
> if (!ret) {
> has_clocksource = 1;
> return;
> }
> }
>
> if (!has_clockevent) {
> ret = mps2_clockevent_init(np);
> if (!ret) {
> has_clockevent = 1;
> return;
> }
> }
> }
Yes.
I don't like to have a "CLOCKSOURCE_OF_DECLARE" to initialize a
clockevent but I can't blame you, this is what is done in the other drivers.
>>> +}
>>> +
>>> +CLOCKSOURCE_OF_DECLARE(mps2_timer, "arm,mps2-timer", mps2_timer_init);
>>>
>>
>>
>
--
<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
WARNING: multiple messages have this Message-ID (diff)
From: daniel.lezcano@linaro.org (Daniel Lezcano)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 02/10] clockevents/drivers: add MPS2 Timer driver
Date: Wed, 25 Nov 2015 16:10:16 +0100 [thread overview]
Message-ID: <5655CF58.6030507@linaro.org> (raw)
In-Reply-To: <5655CADA.1010803@arm.com>
On 11/25/2015 03:51 PM, Vladimir Murzin wrote:
> Hi Daniel,
>
> Thanks for you review, I agree on all concerns raised and address them
> in the next version. Just some points to confirm below (I left only
> relevant parts).
>
>>> +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)
>>> + return IRQ_NONE;
>>
>> Why that could happen ? Add a comment.
>>
>
> Sort of defensive programming, I never seen it happens, but just in case
> of spurious interrupts... Do you prefer to get rid of this check or
>
> /* spurious interrupt? */
> if (!status)
> return IRQ_NONE;
>
> would be fine to you?
Yes, that would be fine, but if it does never happen, we don't really
need this check. If you prefer to make sure there isn't a spurious
interrupt and considering it shouldn't happen, a pr_info trace may help
to spot this misbehavior.
>>> +}
>>> +
>>> +static void __init mps2_timer_init(struct device_node *np)
>>> +{
>>> + static int clksrc;
>>> +
>>> + if (!clksrc && !mps2_clocksource_init(np))
>>> + clksrc = 1;
>>> + else
>>> + mps2_clockevents_init(np);
>>
>> That assumes the clocksource is defined before the clockevents in the
>> DT. If it is not the case, the mps2_clocksource_init will fail (and spit
>> errors) and mps2_clockevents_init() won't be called.
>>
>
> Does following (stolen from efm32) look better to you?
>
> static void __init mps2_timer_init(struct device_node *np)
> {
> static int has_clocksource, has_clockevent;
> int ret;
>
> if (!has_clocksource) {
> ret = mps2_clocksource_init(np);
> if (!ret) {
> has_clocksource = 1;
> return;
> }
> }
>
> if (!has_clockevent) {
> ret = mps2_clockevent_init(np);
> if (!ret) {
> has_clockevent = 1;
> return;
> }
> }
> }
Yes.
I don't like to have a "CLOCKSOURCE_OF_DECLARE" to initialize a
clockevent but I can't blame you, this is what is done in the other drivers.
>>> +}
>>> +
>>> +CLOCKSOURCE_OF_DECLARE(mps2_timer, "arm,mps2-timer", mps2_timer_init);
>>>
>>
>>
>
--
<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
next prev parent reply other threads:[~2015-11-25 15:10 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-25 10:33 [RFC PATCH 00/10] Support for Cortex-M Prototyping System Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` [RFC PATCH 01/10] dt-bindings: document the MPS2 timer bindings Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
[not found] ` <1448447621-17900-2-git-send-email-vladimir.murzin-5wv7dgnIgG8@public.gmane.org>
2015-11-25 20:04 ` Rob Herring
2015-11-25 20:04 ` Rob Herring
2015-11-25 20:04 ` Rob Herring
2015-11-25 10:33 ` [RFC PATCH 02/10] clockevents/drivers: add MPS2 Timer driver Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
[not found] ` <1448447621-17900-3-git-send-email-vladimir.murzin-5wv7dgnIgG8@public.gmane.org>
2015-11-25 13:40 ` Daniel Lezcano
2015-11-25 13:40 ` Daniel Lezcano
2015-11-25 13:40 ` Daniel Lezcano
2015-11-25 14:51 ` Vladimir Murzin
2015-11-25 14:51 ` Vladimir Murzin
2015-11-25 15:10 ` Daniel Lezcano [this message]
2015-11-25 15:10 ` Daniel Lezcano
[not found] ` <5655CF58.6030507-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-11-25 15:21 ` Vladimir Murzin
2015-11-25 15:21 ` Vladimir Murzin
2015-11-25 15:21 ` Vladimir Murzin
2015-11-25 10:33 ` [RFC PATCH 03/10] dt-bindings: document the MPS2 UART bindings Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
[not found] ` <1448447621-17900-4-git-send-email-vladimir.murzin-5wv7dgnIgG8@public.gmane.org>
2015-11-25 20:07 ` Rob Herring
2015-11-25 20:07 ` Rob Herring
2015-11-25 20:07 ` Rob Herring
2015-12-01 11:35 ` Vladimir Murzin
2015-12-01 11:35 ` Vladimir Murzin
2015-12-01 11:35 ` Vladimir Murzin
2015-11-25 10:33 ` [RFC PATCH 04/10] serial: mps2-uart: add MPS2 UART driver Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` [RFC PATCH 05/10] serial: mps2-uart: add support for early console Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` [RFC PATCH 06/10] ARM: mps2: introduce MPS2 platform Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
[not found] ` <1448447621-17900-1-git-send-email-vladimir.murzin-5wv7dgnIgG8@public.gmane.org>
2015-11-25 10:33 ` [RFC PATCH 07/10] ARM: mps2: add low-level debug support Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` [RFC PATCH 08/10] ARM: configs: add MPS2 defconfig Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 11:22 ` [RFC PATCH 00/10] Support for Cortex-M Prototyping System Arnd Bergmann
2015-11-25 11:22 ` Arnd Bergmann
2015-11-25 11:22 ` Arnd Bergmann
2015-11-25 14:39 ` Vladimir Murzin
2015-11-25 14:39 ` Vladimir Murzin
2015-11-25 14:39 ` Vladimir Murzin
2015-11-25 10:33 ` [RFC PATCH 09/10] ARM: dts: introduce MPS2 AN385/AN386 Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
2015-11-25 10:33 ` [RFC PATCH 10/10] ARM: dts: introduce MPS2 AN399/AN400 Vladimir Murzin
2015-11-25 10:33 ` Vladimir Murzin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5655CF58.6030507@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=Mark.Rutland@arm.com \
--cc=Pawel.Moll@arm.com \
--cc=afaerber@suse.de \
--cc=arnd@arndb.de \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=gregkh@linuxfoundation.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=jslaby@suse.cz \
--cc=linux-api@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mcoquelin.stm32@gmail.com \
--cc=robh+dt@kernel.org \
--cc=tglx@linutronix.de \
--cc=u.kleine-koenig@pengutronix.de \
--cc=vladimir.murzin@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.