From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Xingyu Wu <xingyu.wu@starfivetech.com>,
Thomas Gleixner <tglx@linutronix.de>,
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Philipp Zabel <p.zabel@pengutronix.de>,
Walker Chen <walker.chen@starfivetech.com>,
Samin Guo <samin.guo@starfivetech.com>,
linux-kernel@vger.kernel.org, Conor Dooley <conor@kernel.org>
Subject: Re: [PATCH v7 2/3] clocksource: Add JH7110 timer driver
Date: Wed, 25 Oct 2023 16:39:14 +0200 [thread overview]
Message-ID: <d0e70434-e273-4799-c5ec-bbee1b3f5cc7@linaro.org> (raw)
In-Reply-To: <bb819333-52d3-49fc-9bb9-1a227bd5ca8f@starfivetech.com>
Hi Xingyu,
On 25/10/2023 11:04, Xingyu Wu wrote:
> On 2023/10/24 22:56, Daniel Lezcano wrote:
>>
>> Hi Xingyu,
>>
>>
>> On 19/10/2023 07:35, Xingyu Wu wrote:
>>> Add timer driver for the StarFive JH7110 SoC.
>>
>> As it is a new timer, please add a proper nice description explaining the timer hardware, thanks.
>
> OK. Will add the description in next version.
>
>>
>>> Signed-off-by: Xingyu Wu <xingyu.wu@starfivetech.com>
>>> ---
>>> MAINTAINERS | 7 +
>>> drivers/clocksource/Kconfig | 11 +
>>> drivers/clocksource/Makefile | 1 +
>>> drivers/clocksource/timer-jh7110.c | 380 +++++++++++++++++++++++++++++
>>> 4 files changed, 399 insertions(+)
>>> create mode 100644 drivers/clocksource/timer-jh7110.c
>>>
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index 7a7bd8bd80e9..91c09b399131 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -20473,6 +20473,13 @@ S: Maintained
>>> F: Documentation/devicetree/bindings/sound/starfive,jh7110-tdm.yaml
>>> F: sound/soc/starfive/jh7110_tdm.c
>>> +STARFIVE JH7110 TIMER DRIVER
>>> +M: Samin Guo <samin.guo@starfivetech.com>
>>> +M: Xingyu Wu <xingyu.wu@starfivetech.com>
>>> +S: Supported
>>> +F: Documentation/devicetree/bindings/timer/starfive,jh7110-timer.yaml
>>> +F: drivers/clocksource/timer-jh7110.c
>>> +
>>> STARFIVE JH71X0 CLOCK DRIVERS
>>> M: Emil Renner Berthing <kernel@esmil.dk>
>>> M: Hal Feng <hal.feng@starfivetech.com>
>>> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
>>> index 0ba0dc4ecf06..821abcc1e517 100644
>>> --- a/drivers/clocksource/Kconfig
>>> +++ b/drivers/clocksource/Kconfig
>>> @@ -641,6 +641,17 @@ config RISCV_TIMER
>>> is accessed via both the SBI and the rdcycle instruction. This is
>>> required for all RISC-V systems.
>>> +config STARFIVE_JH7110_TIMER
>>> + bool "Timer for the STARFIVE JH7110 SoC"
>>> + depends on ARCH_STARFIVE || COMPILE_TEST
>>
>> You may want to use ARCH_STARFIVE only if the platform can make this timer optional. Otherwise, set the option from the platform Kconfig and put the bool "bla bla" if COMPILE_TEST
>
> Yes, this timer only be used on the StarFive SoC. So I intend to modify to this:
>
> bool "Timer for the STARFIVE JH7110 SoC" if COMPILE_TEST
> depends on ARCH_STARFIVE
In this case, you should change the platform config and select the timer
from there. Remove the depends on ARCH_STARFIVE so it is possible enable
cross test compilation. Otherwise COMPILE_TEST will not work on other
platforms.
[ ... ]
>>> +struct jh7110_clkevt {
>>> + struct clock_event_device evt;
>>> + struct clocksource cs;
>>> + bool cs_is_valid;
>>> + struct clk *clk;
>>> + struct reset_control *rst;
>>> + u32 rate;
>>> + u32 reload_val;
>>> + void __iomem *base;
>>> + char name[sizeof("jh7110-timer.chX")];
>>> +};
>>> +
>>> +struct jh7110_timer_priv {
>>> + struct clk *pclk;
>>> + struct reset_control *prst;
>>> + struct jh7110_clkevt clkevt[JH7110_TIMER_CH_MAX];
>>
>> Why do you need several clock events and clock sources ?
>
> This timer has four counters (channels) which run independently. So each counter can have its own clock event and clock source to configure different settings.
The kernel only needs one clocksource. Usually multiple clockevents are
per-cpu based system.
The driver does not seem to have a per cpu timer but just initializing
multiple clockevents which will end up unused, wasting energy.
--
<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
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Xingyu Wu <xingyu.wu@starfivetech.com>,
Thomas Gleixner <tglx@linutronix.de>,
Emil Renner Berthing <emil.renner.berthing@canonical.com>,
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Albert Ou <aou@eecs.berkeley.edu>,
Philipp Zabel <p.zabel@pengutronix.de>,
Walker Chen <walker.chen@starfivetech.com>,
Samin Guo <samin.guo@starfivetech.com>,
linux-kernel@vger.kernel.org, Conor Dooley <conor@kernel.org>
Subject: Re: [PATCH v7 2/3] clocksource: Add JH7110 timer driver
Date: Wed, 25 Oct 2023 16:39:14 +0200 [thread overview]
Message-ID: <d0e70434-e273-4799-c5ec-bbee1b3f5cc7@linaro.org> (raw)
In-Reply-To: <bb819333-52d3-49fc-9bb9-1a227bd5ca8f@starfivetech.com>
Hi Xingyu,
On 25/10/2023 11:04, Xingyu Wu wrote:
> On 2023/10/24 22:56, Daniel Lezcano wrote:
>>
>> Hi Xingyu,
>>
>>
>> On 19/10/2023 07:35, Xingyu Wu wrote:
>>> Add timer driver for the StarFive JH7110 SoC.
>>
>> As it is a new timer, please add a proper nice description explaining the timer hardware, thanks.
>
> OK. Will add the description in next version.
>
>>
>>> Signed-off-by: Xingyu Wu <xingyu.wu@starfivetech.com>
>>> ---
>>> MAINTAINERS | 7 +
>>> drivers/clocksource/Kconfig | 11 +
>>> drivers/clocksource/Makefile | 1 +
>>> drivers/clocksource/timer-jh7110.c | 380 +++++++++++++++++++++++++++++
>>> 4 files changed, 399 insertions(+)
>>> create mode 100644 drivers/clocksource/timer-jh7110.c
>>>
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index 7a7bd8bd80e9..91c09b399131 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -20473,6 +20473,13 @@ S: Maintained
>>> F: Documentation/devicetree/bindings/sound/starfive,jh7110-tdm.yaml
>>> F: sound/soc/starfive/jh7110_tdm.c
>>> +STARFIVE JH7110 TIMER DRIVER
>>> +M: Samin Guo <samin.guo@starfivetech.com>
>>> +M: Xingyu Wu <xingyu.wu@starfivetech.com>
>>> +S: Supported
>>> +F: Documentation/devicetree/bindings/timer/starfive,jh7110-timer.yaml
>>> +F: drivers/clocksource/timer-jh7110.c
>>> +
>>> STARFIVE JH71X0 CLOCK DRIVERS
>>> M: Emil Renner Berthing <kernel@esmil.dk>
>>> M: Hal Feng <hal.feng@starfivetech.com>
>>> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
>>> index 0ba0dc4ecf06..821abcc1e517 100644
>>> --- a/drivers/clocksource/Kconfig
>>> +++ b/drivers/clocksource/Kconfig
>>> @@ -641,6 +641,17 @@ config RISCV_TIMER
>>> is accessed via both the SBI and the rdcycle instruction. This is
>>> required for all RISC-V systems.
>>> +config STARFIVE_JH7110_TIMER
>>> + bool "Timer for the STARFIVE JH7110 SoC"
>>> + depends on ARCH_STARFIVE || COMPILE_TEST
>>
>> You may want to use ARCH_STARFIVE only if the platform can make this timer optional. Otherwise, set the option from the platform Kconfig and put the bool "bla bla" if COMPILE_TEST
>
> Yes, this timer only be used on the StarFive SoC. So I intend to modify to this:
>
> bool "Timer for the STARFIVE JH7110 SoC" if COMPILE_TEST
> depends on ARCH_STARFIVE
In this case, you should change the platform config and select the timer
from there. Remove the depends on ARCH_STARFIVE so it is possible enable
cross test compilation. Otherwise COMPILE_TEST will not work on other
platforms.
[ ... ]
>>> +struct jh7110_clkevt {
>>> + struct clock_event_device evt;
>>> + struct clocksource cs;
>>> + bool cs_is_valid;
>>> + struct clk *clk;
>>> + struct reset_control *rst;
>>> + u32 rate;
>>> + u32 reload_val;
>>> + void __iomem *base;
>>> + char name[sizeof("jh7110-timer.chX")];
>>> +};
>>> +
>>> +struct jh7110_timer_priv {
>>> + struct clk *pclk;
>>> + struct reset_control *prst;
>>> + struct jh7110_clkevt clkevt[JH7110_TIMER_CH_MAX];
>>
>> Why do you need several clock events and clock sources ?
>
> This timer has four counters (channels) which run independently. So each counter can have its own clock event and clock source to configure different settings.
The kernel only needs one clocksource. Usually multiple clockevents are
per-cpu based system.
The driver does not seem to have a per cpu timer but just initializing
multiple clockevents which will end up unused, wasting energy.
--
<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:[~2023-10-25 14:39 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-19 5:34 [PATCH v7 0/3] Add timer driver for StarFive JH7110 RISC-V SoC Xingyu Wu
2023-10-19 5:34 ` Xingyu Wu
2023-10-19 5:34 ` [PATCH v7 1/3] dt-bindings: timer: Add timer for StarFive JH7110 SoC Xingyu Wu
2023-10-19 5:34 ` Xingyu Wu
2023-10-19 5:35 ` [PATCH v7 2/3] clocksource: Add JH7110 timer driver Xingyu Wu
2023-10-19 5:35 ` Xingyu Wu
2023-10-24 13:13 ` Emil Renner Berthing
2023-10-24 13:13 ` Emil Renner Berthing
2023-10-25 8:39 ` Xingyu Wu
2023-10-25 8:39 ` Xingyu Wu
2023-10-24 14:56 ` Daniel Lezcano
2023-10-24 14:56 ` Daniel Lezcano
2023-10-25 9:04 ` Xingyu Wu
2023-10-25 9:04 ` Xingyu Wu
2023-10-25 14:39 ` Daniel Lezcano [this message]
2023-10-25 14:39 ` Daniel Lezcano
2023-10-27 9:17 ` Xingyu Wu
2023-10-27 9:17 ` Xingyu Wu
2023-10-27 13:34 ` Daniel Lezcano
2023-11-02 13:15 ` Xingyu Wu
2023-11-02 13:15 ` Xingyu Wu
2023-11-02 14:29 ` Daniel Lezcano
2023-11-02 14:29 ` Daniel Lezcano
2023-11-08 3:45 ` Xingyu Wu
2023-11-08 3:45 ` Xingyu Wu
2023-11-08 9:10 ` Daniel Lezcano
2023-11-08 9:10 ` Daniel Lezcano
2023-11-09 7:51 ` Xingyu Wu
2023-11-09 7:51 ` Xingyu Wu
2023-11-10 17:40 ` Samuel Holland
2023-11-10 17:40 ` Samuel Holland
2023-11-10 18:02 ` Daniel Lezcano
2023-11-10 18:02 ` Daniel Lezcano
2023-11-13 2:19 ` Xingyu Wu
2023-11-13 2:19 ` Xingyu Wu
2023-10-19 5:35 ` [PATCH v7 3/3] riscv: dts: jh7110: starfive: Add timer node Xingyu Wu
2023-10-19 5:35 ` Xingyu Wu
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=d0e70434-e273-4799-c5ec-bbee1b3f5cc7@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=aou@eecs.berkeley.edu \
--cc=christophe.jaillet@wanadoo.fr \
--cc=conor@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=emil.renner.berthing@canonical.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=p.zabel@pengutronix.de \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=robh+dt@kernel.org \
--cc=samin.guo@starfivetech.com \
--cc=tglx@linutronix.de \
--cc=walker.chen@starfivetech.com \
--cc=xingyu.wu@starfivetech.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.