From: pure.logic@nexus-software.ie (Bryan O'Donoghue)
To: linux-arm-kernel@lists.infradead.org
Subject: [GIT PULL] Greybus driver subsystem for 4.9-rc1
Date: Thu, 15 Sep 2016 11:35:56 +0100 [thread overview]
Message-ID: <1473935756.10230.42.camel@nexus-software.ie> (raw)
In-Reply-To: <20160915101330.GB6718@leverpostej>
On Thu, 2016-09-15 at 11:13 +0100, Mark Rutland wrote:
> On Thu, Sep 15, 2016 at 10:35:33AM +0100, Bryan O'Donoghue wrote:
> >?
> I don't think the history matters,
Your comment seemed to indicate you thought we were reading a
architectural timer directly - which we aren't.
> and I don't think that one can rely
> on get_cycles() in this manner outside of arch code.
I don't follow your meaning. What's wrong with get_cycles() ? You've
already said you don't think reading an architectural timer directly is
correct.
The objective is to read one of the free-running counters in MSM8994,
clocked by the PMIC. The refclk provided by PMIC is distributed to each
processor in the system.
> Looking at the
> state of the tree [1] as of the final commit [2] in the greybus
> branch,
> my points still stand:
>
> * The "google,greybus-frame-time-counter" node is superfluous. It
> does
> ? not describe a particular device,
It describes a timer running @ 19.2MHz, clocked by PMIC refclk.
> and duplicates information we have
> ? elsewhere.
Can you give an example ?
> It does not explicitly define the relationship with the
> ? underlying clocksource.
> * The clock-frequency property isn't necessary. The architected timer
> ? drivers know the frequency of the architected timers (MMIO or
> sysreg),
> ? and they should be queried as to the frequency.
OK so if I'm understanding you. You think get_cycles() is fine but that
instead of encoding a "greybus-frame-time-counter" the platform code
should interrogate the frequency provided - is that correct ?
> Beyond that, the fallback code using cpufreq and presumably an actual
> cycle counter will be broken in a number of cases
Of course the fallback will be broken... it's not supposed to work if
you don't have a timer that can be used - just compile, run and print a
complaint - i.e., this won't really do FrameTime on an x86... then
again since so much of the underlying greybus/unipro hardware -
requires a 19.2MHz refclk - if you were to try to do greybus on x86
you'd need to solve that problem.
>
> Per the comment at the top of the file, it looks like you want a
> system-wide stable clocksource. If you want that, you need to use a
> generic API that allows drivers and arch code to actually provide
> that,
> rather than building one yourself that doesn't work.
Hmm. The objective is to read one of the timers clocked by the PMIC
refclk input. refclk is provided to each processor in the system - and
on MSM8994 clocks the MMIO timers. It's used to drive the PLL on the
other processors - which in turn drive the timers that the Modules use
to read their own local counters. We want to read that counter on MSM
directly - get_cycles() has worked nicely so far.
>
> If you're trying to synchronise with other agents in the system that
> are
> reading from the MMIO arch timers,
No. The MMIO timers are useful only to the MSM. We don't have any type
of parallel (or serial) bus that can access that on-chip resource.
MSM8994 -- > USB
? ? ? ? ? ? ?APBridge (timer) -> UniPro bus
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -> Module with a UART
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -> Module with a GPIO
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -> Module with an etc, etc
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -> SPI bus
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -> SVC
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Owns FrameTime
So the SVC owns FrameTime and diseminates that to other entities in the
system by way of a GPIO and greybus. It's up to the MSM8994 to select a
timer that works for it - the other processors in the system are
responsible for their own timers.
---
bod
WARNING: multiple messages have this Message-ID (diff)
From: "Bryan O'Donoghue" <pure.logic@nexus-software.ie>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Greg KH <gregkh@linuxfoundation.org>,
Arnd Bergmann <arnd@arndb.de>,
linux-kernel@vger.kernel.org,
Johan Hovold <johan@hovoldconsulting.com>,
Rui Miguel Silva <rmfrfs@gmail.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Sandeep Patil <sspatil@google.com>,
Matt Porter <mporter@kernel.crashing.org>,
John Stultz <john.stultz@linaro.org>,
Rob Herring <robh@kernel.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Alex Elder <elder@linaro.org>, David Lin <dtwlin@google.com>,
Vaibhav Agarwal <vaibhav.agarwal@linaro.org>,
Mark Greer <mgreer@animalcreek.com>,
marc.zyngier@arm.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [GIT PULL] Greybus driver subsystem for 4.9-rc1
Date: Thu, 15 Sep 2016 11:35:56 +0100 [thread overview]
Message-ID: <1473935756.10230.42.camel@nexus-software.ie> (raw)
In-Reply-To: <20160915101330.GB6718@leverpostej>
On Thu, 2016-09-15 at 11:13 +0100, Mark Rutland wrote:
> On Thu, Sep 15, 2016 at 10:35:33AM +0100, Bryan O'Donoghue wrote:
> >
> I don't think the history matters,
Your comment seemed to indicate you thought we were reading a
architectural timer directly - which we aren't.
> and I don't think that one can rely
> on get_cycles() in this manner outside of arch code.
I don't follow your meaning. What's wrong with get_cycles() ? You've
already said you don't think reading an architectural timer directly is
correct.
The objective is to read one of the free-running counters in MSM8994,
clocked by the PMIC. The refclk provided by PMIC is distributed to each
processor in the system.
> Looking at the
> state of the tree [1] as of the final commit [2] in the greybus
> branch,
> my points still stand:
>
> * The "google,greybus-frame-time-counter" node is superfluous. It
> does
> not describe a particular device,
It describes a timer running @ 19.2MHz, clocked by PMIC refclk.
> and duplicates information we have
> elsewhere.
Can you give an example ?
> It does not explicitly define the relationship with the
> underlying clocksource.
> * The clock-frequency property isn't necessary. The architected timer
> drivers know the frequency of the architected timers (MMIO or
> sysreg),
> and they should be queried as to the frequency.
OK so if I'm understanding you. You think get_cycles() is fine but that
instead of encoding a "greybus-frame-time-counter" the platform code
should interrogate the frequency provided - is that correct ?
> Beyond that, the fallback code using cpufreq and presumably an actual
> cycle counter will be broken in a number of cases
Of course the fallback will be broken... it's not supposed to work if
you don't have a timer that can be used - just compile, run and print a
complaint - i.e., this won't really do FrameTime on an x86... then
again since so much of the underlying greybus/unipro hardware -
requires a 19.2MHz refclk - if you were to try to do greybus on x86
you'd need to solve that problem.
>
> Per the comment at the top of the file, it looks like you want a
> system-wide stable clocksource. If you want that, you need to use a
> generic API that allows drivers and arch code to actually provide
> that,
> rather than building one yourself that doesn't work.
Hmm. The objective is to read one of the timers clocked by the PMIC
refclk input. refclk is provided to each processor in the system - and
on MSM8994 clocks the MMIO timers. It's used to drive the PLL on the
other processors - which in turn drive the timers that the Modules use
to read their own local counters. We want to read that counter on MSM
directly - get_cycles() has worked nicely so far.
>
> If you're trying to synchronise with other agents in the system that
> are
> reading from the MMIO arch timers,
No. The MMIO timers are useful only to the MSM. We don't have any type
of parallel (or serial) bus that can access that on-chip resource.
MSM8994 -- > USB
APBridge (timer) -> UniPro bus
-> Module with a UART
-> Module with a GPIO
-> Module with an etc, etc
-> SPI bus
-> SVC
Owns FrameTime
So the SVC owns FrameTime and diseminates that to other entities in the
system by way of a GPIO and greybus. It's up to the MSM8994 to select a
timer that works for it - the other processors in the system are
responsible for their own timers.
---
bod
next prev parent reply other threads:[~2016-09-15 10:35 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-14 10:09 [GIT PULL] Greybus driver subsystem for 4.9-rc1 Greg KH
2016-09-14 17:36 ` Mark Rutland
2016-09-14 17:36 ` Mark Rutland
2016-09-14 18:07 ` Greg KH
2016-09-14 18:07 ` Greg KH
2016-09-14 18:29 ` Greg KH
2016-09-14 18:29 ` Greg KH
2016-09-14 19:05 ` Joe Perches
2016-09-14 19:05 ` Joe Perches
2016-09-15 9:35 ` Bryan O'Donoghue
2016-09-15 9:35 ` Bryan O'Donoghue
2016-09-15 10:13 ` Mark Rutland
2016-09-15 10:13 ` Mark Rutland
2016-09-15 10:35 ` Bryan O'Donoghue [this message]
2016-09-15 10:35 ` Bryan O'Donoghue
2016-09-15 10:47 ` Bryan O'Donoghue
2016-09-15 10:47 ` Bryan O'Donoghue
2016-09-15 11:20 ` Mark Rutland
2016-09-15 11:20 ` Mark Rutland
2016-09-15 11:48 ` Bryan O'Donoghue
2016-09-15 11:48 ` Bryan O'Donoghue
2016-09-15 12:46 ` Mark Rutland
2016-09-15 12:46 ` Mark Rutland
2016-09-15 15:40 ` Bryan O'Donoghue
2016-09-15 15:40 ` Bryan O'Donoghue
2016-09-15 15:47 ` Mark Rutland
2016-09-15 15:47 ` Mark Rutland
2016-09-15 16:09 ` Bryan O'Donoghue
2016-09-15 16:09 ` Bryan O'Donoghue
2016-09-14 20:07 ` Rob Herring
2016-09-14 20:07 ` Rob Herring
2016-09-15 10:17 ` Greg KH
2016-09-15 10:17 ` Greg KH
2016-09-15 11:02 ` Bryan O'Donoghue
2016-09-15 11:02 ` Bryan O'Donoghue
[not found] ` <20160915122141.650632149@bubbles.kroah.org>
[not found] ` <20160915122234.640367870@bubbles.kroah.org>
2016-09-15 13:16 ` [patch 11/32] greybus: camera driver Laurent Pinchart
2016-09-15 14:45 ` [GIT PULL] Greybus driver subsystem for 4.9-rc1 Mark Brown
2016-09-16 6:05 ` Greg KH
2016-09-16 10:18 ` Mark Brown
2016-09-16 13:22 ` Greg KH
2016-09-16 14:24 ` Greg KH
2016-09-20 6:41 ` Greg KH
2016-09-20 7:12 ` Vaibhav Agarwal
2016-09-16 12:18 ` Arnd Bergmann
2016-09-21 13:02 ` Mark Rutland
2016-09-21 14:13 ` Greg KH
2016-09-16 6:40 ` [patch 00/32] Greybus driver subsystem Greg KH
2016-09-16 6:41 ` [patch 02/32] greybus: interface control logic Greg KH
2016-09-16 13:22 ` [patch 03/32] greybus: operations logic Greg KH
2016-09-16 13:23 ` [patch 04/32] greybus: host driver framework Greg KH
2016-09-16 13:23 ` [patch 05/32] greybus: trace.h Greg KH
2016-09-16 13:23 ` [patch 06/32] greybus: svc driver/watchdog Greg KH
2016-09-16 13:23 ` [patch 07/32] greybus: core code Greg KH
2016-09-16 13:24 ` [patch 08/32] greybus: bootrom driver Greg KH
2016-09-16 13:24 ` [patch 09/32] greybus: firmware download class driver Greg KH
2016-09-16 13:24 ` [patch 10/32] greybus: audio driver Greg KH
2016-09-16 13:25 ` [patch 11/32] greybus: camera driver Greg KH
2016-09-16 13:25 ` [patch 12/32] greybus: es2 host driver Greg KH
2016-10-07 13:43 ` Pavel Machek
2016-09-16 14:09 ` [patch 13/32] greybus: HID driver Greg KH
2016-09-16 14:10 ` [patch 14/32] greybus: LED driver Greg KH
2016-10-07 13:36 ` Pavel Machek
2016-10-07 13:41 ` Greg KH
2016-09-16 14:10 ` [patch 15/32] greybus: logging driver Greg KH
2016-09-16 14:10 ` [patch 16/32] greybus: loopback driver Greg KH
2016-09-16 14:10 ` [patch 17/32] greybus: power supply driver Greg KH
2016-10-07 13:49 ` Pavel Machek
2016-10-07 14:12 ` Greg KH
2016-10-07 18:15 ` Pavel Machek
2016-09-16 14:11 ` [patch 18/32] greybus: raw driver Greg KH
2016-09-16 14:11 ` [patch 19/32] greybus: timesync driver Greg KH
2016-09-16 14:11 ` [patch 20/32] greybus: vibrator driver Greg KH
2016-09-16 14:19 ` [patch 21/32] greybus: arche platform driver Greg KH
2016-09-16 14:20 ` [patch 22/32] greybus: bridged phy bus code Greg KH
2016-09-16 14:20 ` [patch 23/32] greybus: bridged phy gpio driver Greg KH
2016-09-16 14:20 ` [patch 24/32] greybus: bridged phy i2c driver Greg KH
2016-09-16 14:20 ` [patch 25/32] greybus: bridged phy pwm driver Greg KH
2016-09-16 14:21 ` [patch 26/32] greybus: bridged phy sdio driver Greg KH
2016-09-16 14:21 ` [patch 27/32] greybus: bridged phy spi driver Greg KH
2016-09-16 14:21 ` [patch 28/32] greybus: bridged phy uart driver Greg KH
2016-09-16 14:21 ` [patch 29/32] greybus: bridged phy usb driver Greg KH
2016-09-16 14:22 ` [patch 30/32] greybus: tools Greg KH
2016-09-16 14:22 ` [patch 31/32] greybus: documentation Greg KH
2016-09-16 14:22 ` [patch 32/32] greybus: add to the build Greg KH
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=1473935756.10230.42.camel@nexus-software.ie \
--to=pure.logic@nexus-software.ie \
--cc=linux-arm-kernel@lists.infradead.org \
/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.