From: William Breathitt Gray <vilhelm.gray@gmail.com>
To: David Lechner <david@lechnology.com>
Cc: linux-iio@vger.kernel.org,
Robert Nelson <robertcnelson@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/8] docs: counter: add unit timer sysfs attributes
Date: Mon, 1 Nov 2021 13:08:46 +0900 [thread overview]
Message-ID: <YX9oTuLB1d6CqQOK@shinobu> (raw)
In-Reply-To: <d5d7454b-e0a0-7436-10d7-dcb402885479@lechnology.com>
[-- Attachment #1: Type: text/plain, Size: 3404 bytes --]
On Sat, Oct 30, 2021 at 11:40:27AM -0500, David Lechner wrote:
> On 10/28/21 2:59 AM, William Breathitt Gray wrote:
> > On Wed, Oct 27, 2021 at 10:30:36AM -0500, David Lechner wrote:
> >> On 10/27/21 1:46 AM, William Breathitt Gray wrote:
> >>> On Sat, Oct 16, 2021 at 08:33:39PM -0500, David Lechner wrote:
> >>>> This documents new unit timer sysfs attributes for the counter
> >>>> subsystem.
> >>>>
> >>>> Signed-off-by: David Lechner <david@lechnology.com>
> >>>
> >>> Hello David,
> >>>
> >>> The unit timer is effectively a Count in its own right, so instead of
> >>> introducing new sysfs attributes you can just implement it as another
> >>> Count in the driver. Count 0 is "QPOSCNT", so set the name of this new
> >>> Count 1 as "Unit Timer" (or the datasheet naming if more apt) to
> >>> differentiate the Counts. You can then provide the "unit_timer_enable",
> >>> "unit_timer_period", and "unit_timer_time" functionalities as respective
> >>> Count 1 extensions ("enable" and "period") and Count 1 "count".
> >
> > Actually if the counter function here is COUNTER_FUNCTION_DECREASE, then
>
> It is an increasing counter.
>
> > instead of introducing a new "period" extension, define this as a
> > "ceiling" extension; that's what ceiling represents in the Counter
> > interface: "the upper limit for the respective counter", which is the
> > period of a timer counting down to a timeout.
>
> In one of the other patches, you made a comment about the semantics
> of ceiling with relation to the overflow event. We can indeed treat
> the timer as a counter and the period as the ceiling. However, the
> unit timer event occurs when the count is equal to the period (ceiling)
> whereas an overflow event occurs when the count exceeds the ceiling.
> So what would this event be called in generic counter terms? "timeout"
> doesn't seem right.
Okay, so COUNTER_EVENT_THRESHOLD would be the respective Counter event
type for this behavior because the event triggers once a threshold is
reached (ceiling in this case).
But implementing the unit timer as a counter might not be the best path
forward as you've mentioned below.
> >
> > William Breathitt Gray
> >
> >>>
> >>> If you believe it appropriate, you can provide the raw timer ticks via
> >>> the Count 1 "count" while a nanoseconds interface is provided via a
> >>> Count 1 extension "timeout" (or something similar).
> >>>
>
> One area where this concept of treating a timer as a counter potentially
> breaks down is the issue of CPU frequency scaling. By treating the unit
> timer as a timer, then the kernel could take care of any changes in clock
> rate internally by automatically adjusting the prescalar and period on
> rate change events. But if we are just treating it as a counter, then we
> should probably just have an attribute that provides the clock rate and
> if we want to support CPU frequency scaling, add an event that indicates
> that the clock rate changed.
You're right, treating the unit timer as a counter might not be the most
appropriate interface. Because this is a timer afterall, perhaps
exposing this via the hrtimer API is better. You then have an existing
interface available designed for timer configuration, and you can
leverage the struct hrtimer function callback to handle your timeout
interrupts.
William Breathitt Gray
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2021-11-01 4:08 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-17 1:33 [PATCH 0/8] counter: ti-eqep: implement features for speed measurement David Lechner
2021-10-17 1:33 ` [PATCH 1/8] counter/ti-eqep: implement over/underflow events David Lechner
2021-10-17 11:10 ` Jonathan Cameron
2021-10-25 7:13 ` William Breathitt Gray
2021-10-27 15:23 ` David Lechner
2021-10-28 6:41 ` William Breathitt Gray
2021-10-17 1:33 ` [PATCH 2/8] counter/ti-eqep: add support for direction David Lechner
2021-10-17 11:11 ` Jonathan Cameron
2021-10-25 7:29 ` William Breathitt Gray
2021-10-17 1:33 ` [PATCH 3/8] counter/ti-eqep: add support for unit timer David Lechner
2021-10-17 11:20 ` Jonathan Cameron
2021-10-25 8:48 ` William Breathitt Gray
2021-10-27 15:28 ` David Lechner
2021-10-28 7:48 ` William Breathitt Gray
2021-10-28 13:42 ` David Lechner
2021-10-30 8:35 ` William Breathitt Gray
2021-10-17 1:33 ` [PATCH 4/8] docs: counter: add unit timer sysfs attributes David Lechner
2021-10-17 11:23 ` Jonathan Cameron
2021-10-27 6:46 ` William Breathitt Gray
2021-10-27 15:30 ` David Lechner
2021-10-28 7:59 ` William Breathitt Gray
2021-10-30 16:40 ` David Lechner
2021-11-01 4:08 ` William Breathitt Gray [this message]
2021-11-01 5:27 ` William Breathitt Gray
2021-10-17 1:33 ` [PATCH 5/8] counter/ti-eqep: add support for latched position David Lechner
2021-10-27 7:44 ` William Breathitt Gray
2021-10-27 15:40 ` David Lechner
2021-10-28 8:12 ` William Breathitt Gray
2021-10-17 1:33 ` [PATCH 6/8] docs: counter: add latch_mode and latched_count sysfs attributes David Lechner
2021-10-17 11:26 ` Jonathan Cameron
2021-10-27 7:54 ` William Breathitt Gray
2021-10-27 17:00 ` David Lechner
2021-10-30 1:32 ` William Breathitt Gray
2021-10-30 14:39 ` Jonathan Cameron
2021-11-01 5:11 ` William Breathitt Gray
2021-10-17 1:33 ` [PATCH 7/8] counter/ti-eqep: add support for edge capture unit David Lechner
2021-10-17 11:29 ` Jonathan Cameron
2021-10-27 8:23 ` William Breathitt Gray
2021-10-27 17:28 ` David Lechner
2021-10-17 1:33 ` [PATCH 8/8] docs: counter: add edge_capture_unit_* attributes David Lechner
2021-10-27 8:26 ` William Breathitt Gray
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=YX9oTuLB1d6CqQOK@shinobu \
--to=vilhelm.gray@gmail.com \
--cc=david@lechnology.com \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robertcnelson@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox