From: Guo Ren <ren_guo@c-sky.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: tglx@linutronix.de, jason@lakedaemon.net, marc.zyngier@arm.com,
robh+dt@kernel.org, mark.rutland@arm.com, anurup.m@huawei.com,
Jonathan.Cameron@huawei.com, will.deacon@arm.com,
zhangshaokun@hisilicon.com, jhogan@kernel.org,
paul.burton@mips.com, peterz@infradead.org, f.fainelli@gmail.com,
arnd@arndb.de, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH V9 3/8] clocksource: add C-SKY SMP timer
Date: Tue, 2 Oct 2018 13:40:25 +0800 [thread overview]
Message-ID: <20181002054024.GA12645@guoren> (raw)
In-Reply-To: <88e320f2-8cf0-fdb9-c9b0-ee25d7a4d00f@linaro.org>
On Mon, Oct 01, 2018 at 11:14:14AM +0200, Daniel Lezcano wrote:
> On 01/10/2018 03:35, Guo Ren wrote:
> > This timer is used by SMP system and use mfcr/mtcr instruction
> > to access the regs.
> >
> > Changelog:
> > - Remove #define CPUHP_AP_CSKY_TIMER_STARTING
> > - Add CPUHP_AP_CSKY_TIMER_STARTING in cpuhotplug.h
> > - Support csky mp timer alpha version.
> > - Just use low-counter with 32bit width as clocksource.
> > - Coding convention with upstream feed-back.
> >
> > Signed-off-by: Guo Ren <ren_guo@c-sky.com>
> > ---
> > drivers/clocksource/Kconfig | 8 ++
> > drivers/clocksource/Makefile | 1 +
> > drivers/clocksource/csky_mptimer.c | 176 +++++++++++++++++++++++++++++++++++++
> > include/linux/cpuhotplug.h | 1 +
> > 4 files changed, 186 insertions(+)
> > create mode 100644 drivers/clocksource/csky_mptimer.c
> >
> > diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
> > index a11f4ba..a28043f 100644
> > --- a/drivers/clocksource/Kconfig
> > +++ b/drivers/clocksource/Kconfig
> > @@ -620,4 +620,12 @@ config RISCV_TIMER
> > is accessed via both the SBI and the rdcycle instruction. This is
> > required for all RISC-V systems.
> >
> > +config CSKY_MPTIMER
> > + bool "C-SKY Multi Processor Timer"
> > + depends on CSKY
> > + select TIMER_OF
> > + help
> > + Say yes here to enable C-SKY SMP timer driver used for C-SKY SMP
> > + system.
> > +
> > endmenu
>
> The same rule applies here for COMPILE_TEST.
Ok
> And please rename the file: timer-mp-csky.c
Ok
> > + return (u64) mfcr(PTIM_CCVR);
>
> extra space
Ok
>
> > +}
> > +
> > +static u64 clksrc_read(struct clocksource *c)
> > +{
> > + return (u64) mfcr(PTIM_CCVR);
>
> extra space
Ok
> > + */
> > +
>
> extra line
Ok
>
> > + for_each_possible_cpu(cpu) {
> > + to = per_cpu_ptr(&csky_to, cpu);
> > +
> > + if (cpu == 0) {
> > + to->flags |= TIMER_OF_IRQ;
> > + to->of_irq.handler = timer_interrupt;
> > +
> > + ret = timer_of_init(np, to);
> > + if (ret)
> > + return ret;
> > +
> > + rate = timer_of_rate(to);
> > + irq = to->of_irq.irq;
> > + } else {
> > + ret = timer_of_init(np, to);
> > + if (ret)
> > + return ret;
> > +
> > + to->of_clk.rate = rate;
> > + to->of_irq.irq = irq;
> > + }
> > + }
>
>
> Isn't possible to replace this loop which is a bit confusing by:
>
> - no irq flag specified for timer-of
> - request irq before
Ok, but I've a bit different :)
> So we end up with:
>
> irq = irq_of_parse_and_map(np, 0);
> if (irq <= 0)
> return -EINVAL;
panic();
I want a panic here. Return will make debug confused and directly tell
the people where is wrong. It's root-timer for us and it must bootup.
If it's a co-timer, I also think return is good.
>
> ret = request_irq(irq, csky_timer_interrupt,
> IRQF_TIMER | IRQF_PERCPU,
> "csky_mp_timer", &csky_to));
ret = request_percpu_irq(irq, csky_timer_interrupt,
"csky_mp_timer", &csky_to);
I'll use request_percpu_irq the same as in timer_of and I've tested it's
Ok.
> if (ret)
> return ret;
Pls let me panic here.
>
> for_each_possible_cpu(cpu) {
> to = per_cpu_ptr(&csky_to, cpu);
> ret = timer_of_init(np, to);
> if (ret)
> goto rollback;
Pls let me panic here.
> }
Best Regards
Guo Ren
next prev parent reply other threads:[~2018-10-02 5:40 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-01 1:35 [PATCH V9 0/8] C-SKY(csky) Linux Kernel Drivers Guo Ren
2018-10-01 1:35 ` Guo Ren
2018-10-01 1:35 ` [PATCH V9 1/8] irqchip: add C-SKY SMP interrupt controller Guo Ren
2018-10-01 1:35 ` [PATCH V9 2/8] dt-bindings: interrupt-controller: C-SKY SMP intc Guo Ren
2018-10-01 1:35 ` [PATCH V9 3/8] clocksource: add C-SKY SMP timer Guo Ren
2018-10-01 9:14 ` Daniel Lezcano
2018-10-02 5:40 ` Guo Ren [this message]
2018-10-02 7:59 ` Daniel Lezcano
2018-10-04 16:14 ` Guo Ren
2018-10-01 1:35 ` [PATCH V9 4/8] dt-bindings: timer: C-SKY Multi-processor timer Guo Ren
2018-10-01 1:36 ` [PATCH V9 5/8] dt-bindings: interrupt-controller: C-SKY APB intc Guo Ren
2018-10-01 1:36 ` [PATCH V9 6/8] irqchip: add C-SKY APB bus interrupt controller Guo Ren
2018-10-01 1:36 ` [PATCH V9 7/8] dt-bindings: timer: gx6605s SOC timer Guo Ren
2018-10-01 1:36 ` [PATCH V9 8/8] clocksource: add gx6605s SOC system timer Guo Ren
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=20181002054024.GA12645@guoren \
--to=ren_guo@c-sky.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=anurup.m@huawei.com \
--cc=arnd@arndb.de \
--cc=daniel.lezcano@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=jason@lakedaemon.net \
--cc=jhogan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.zyngier@arm.com \
--cc=mark.rutland@arm.com \
--cc=paul.burton@mips.com \
--cc=peterz@infradead.org \
--cc=robh+dt@kernel.org \
--cc=tglx@linutronix.de \
--cc=will.deacon@arm.com \
--cc=zhangshaokun@hisilicon.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.