From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>,
Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
Mans Rullgard <mans@mansr.com>, Mason <slash.tmp@free.fr>
Subject: Re: [PATCH v2] clocksource/drivers/tango_xtal: Add new timer for Tango SoCs
Date: Wed, 7 Oct 2015 18:03:52 +0200 [thread overview]
Message-ID: <56154268.5060700@linaro.org> (raw)
In-Reply-To: <56151B5B.90404@sigmadesigns.com>
On 10/07/2015 03:17 PM, Marc Gonzalez wrote:
> On 07/10/2015 14:31, Daniel Lezcano wrote:
>> On 10/07/2015 01:35 PM, Marc Gonzalez wrote:
>>> Sigma Designs Tango platforms provide a 27 MHz crystal oscillator.
>>> Use it for clocksource, sched_clock, and delay_timer.
>>>
>>> Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
>>> ---
>>> AFAICS, clocksource_register_hz does not report failures via its
>>> return value (always 0) but writes warnings to stdout?
>>
>> Yeah, it returns always 0. I suggest you assume it is returning an error
>> code, that will be safer for future changes in the framework (if any).
>
> I suppose I'd also need to check the return value of of_clk_get?
> (Looks like you mention it implicitly below.)
>
>>> Open question: can I call register_current_timer_delay,
>>> sched_clock_register, clocksource_register_hz in any order?
>>> ---
>>
>> Yes, I think so. Thomas ?
>>
>> [ ... ]
>>
>>> +static void __init tango_clocksource_init(struct device_node *np)
>>> +{
>>> + struct clk *clk = of_clk_get(np, 0);
>>> + unsigned int xtal_freq = clk_get_rate(clk);
>>> + xtal_in_cnt = of_iomap(np, 0);
>>> + if (xtal_in_cnt == NULL)
>>> + panic("%s: of_iomap failed\n", np->full_name);
>>
>> ^^^^^^^^^^^
>>
>> That does not comply with the Linux kernel coding style.
>
> <confused>
>
> scripts/checkpatch.pl only complains about a missing blank line after
> the declaration block. (Sorry, I'll fix that.)
>
>> xtal_in_cnt = of_iomap(np, 0);
>> if (!xtal_in_cnt) {
>> pr_err("Argh!");
>> return;
>> }
>
> I know "!xtal_in_cnt" is equivalent to "xtal_in_cnt == NULL" but I'd
> rather emphasize the fact that xtal_in_cnt is a pointer, not a bool.
> (Documentation/CodingStyle does not mandate this particular idiom.)
Yes, if you prefer you can use != NULL.
> I'm also confused that you've replaced panic() with pr_err/return.
> AFAIU, if I don't have a clocksource/sched_clock, the system is dead
> in the water. Might as well stop there, and wait for the operator to
> fix whatever needs fixing. (Several clksrc drivers do this.)
Hmm, yeah that's true but also we have platforms with different
clocksources, so we don't want to panic if the next clocksource will
succeed. That's the logic behind not doing panic. There is some legacy
code still using panic but that should be fixed.
I don't know if your platform can fall under this category, but it would
be a good practice to pr_err or pr_warn instead of panic in order to be
consistent with the current direction in the recent drivers.
>> clk = of_clk_get(np, 0);
>> if (!clk) {
>
> AFAICT, checking for NULL is not good enough here.
> of_clk_get returns ERR_PTR(rc) style errors.
> Looks like I'd need "if (IS_ERR(clk))"
Yep :)
-- Daniel
--
<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-10-07 16:03 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-06 15:10 [PATCH v1] clocksource: Sigma Designs Tango 27 MHz xtal Marc Gonzalez
2015-10-06 23:09 ` Daniel Lezcano
2015-10-07 8:23 ` Marc Gonzalez
2015-10-07 9:47 ` Daniel Lezcano
2015-10-07 11:14 ` Marc Gonzalez
2015-10-07 11:35 ` Daniel Lezcano
2015-10-07 11:35 ` [PATCH v2] clocksource/drivers/tango_xtal: Add new timer for Tango SoCs Marc Gonzalez
2015-10-07 12:31 ` Daniel Lezcano
2015-10-07 13:17 ` Marc Gonzalez
2015-10-07 16:03 ` Daniel Lezcano [this message]
2015-10-07 20:12 ` Mason
2015-10-09 12:13 ` [PATCH v3] " Marc Gonzalez
2015-10-09 13:24 ` Daniel Lezcano
2015-10-09 13:46 ` Marc Gonzalez
2015-10-09 14:21 ` Daniel Lezcano
2015-10-09 16:39 ` Nicolas Pitre
2015-10-09 14:37 ` [PATCH v4] " Marc Gonzalez
2015-10-09 14:42 ` Daniel Lezcano
2015-10-09 14:59 ` [PATCH v5] " Marc Gonzalez
2015-10-16 12:07 ` Daniel Lezcano
2015-10-09 14:51 ` [PATCH v4] " Måns Rullgård
2015-10-09 15:42 ` Marc Gonzalez
2015-10-09 16:01 ` Måns Rullgård
2015-10-09 16:36 ` Marc Gonzalez
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=56154268.5060700@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mans@mansr.com \
--cc=marc_gonzalez@sigmadesigns.com \
--cc=slash.tmp@free.fr \
--cc=tglx@linutronix.de \
/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.