From: Tomasz Figa <t.figa@samsung.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Tomasz Figa <tomasz.figa@gmail.com>,
Samuel Ortiz <sameo@linux.intel.com>,
linux-arm-kernel@lists.infradead.org,
devicetree-discuss@lists.ozlabs.org,
linux-samsung-soc@vger.kernel.org, kgene.kim@samsung.com,
kyungmin.park@samsung.com, linux@simtec.co.uk,
broonie@opensource.wolfsonmicro.com, kwangwoo.lee@gmail.com,
jacmet@sunsite.dk, augulis.darius@gmail.com,
mcuelenaere@gmail.com, linux@arm.linux.org.uk,
sylvester.nawrocki@gmail.com, buserror@gmail.com,
christer@weinigel.se, jekhor@gmail.com, ghcstop@gmail.com,
mark.rutland@arm.com, heiko@sntech.de, robherring2@gmail.com,
m.szyprowski@samsung.com, john.stultz@linaro.org,
tglx@linutronix.de
Subject: Re: [PATCH v4 04/14] mfd: Add Samsung PWM/timer master driver
Date: Thu, 11 Apr 2013 18:44:33 +0200 [thread overview]
Message-ID: <1718887.H9vPuvORKd@amdc1227> (raw)
In-Reply-To: <201304110035.47776.arnd@arndb.de>
On Thursday 11 of April 2013 00:35:47 Arnd Bergmann wrote:
> On Monday 08 April 2013, Tomasz Figa wrote:
> > On Saturday 06 of April 2013 00:24:18 Tomasz Figa wrote:
> > > On Friday 05 of April 2013 21:54:21 Arnd Bergmann wrote:
> > > > On Friday 05 April 2013, Tomasz Figa wrote:
> > > I'm not sure what you mean by a register-level interface. Something like
> > > samsung_pwm_update_reg(reg, mask, val), which modifies bitfields
> > > according to the mask and value with appropriate synchronization? If
> > > yes, this solves only the problem of access to shared registers.
> > >
> > > The other problems that remain:
> > >
> > > - negotiation of PWM channels to use for clock source and clock events,
> > >
> > > because each board can use different channels for PWM outputs,
> > >
> > > - code duplication caused by both of the drivers doing mostly the same
> > >
> > > things and or having to parse the same data from device tree,
> > >
> > > - both non-DT and DT platforms must be supported,
> > >
> > > - how to keep the ability to load PWM driver as a module (or not load it
> > > at all when PWM is not used on particular board), while retaining
> > > everything that is needed for the clocksource driver in kernel,
> > >
> > > - some platforms can't use PWM timers as system clocksources, while on
> > >
> > > others this is the only timekeeping hardware available.
> >
> > Hmm. Does anybody have an idea of a better way of implementing this PWM
> > timer support, which solves the above problems?
> >
> > This series is a dependency for moving Universal C210 board to DT-based
> > description and it's already almost out of time to get this included for
> > 3.10...
>
> Sorry for not replying earlier. My idea for the register level interface
> was to create a platform_device for each PWM, e.g. using the mfd_cell
> infrastructure. You can then pass a "struct regmap" as the platform
> data for each child of the timer node, and all the DT handling code
> can stay in the parent driver.
Hmm. As I said, I'm completely fine with using a regmap for sharing registers
between subdrivers. However the clocksource can not be registered as an MFD
cell, because it's needed very early.
I can imagine a solution alternative to my original one, where the MFD cells
would be registered from the clocksource driver. This would mean that
platforms that don't need (and can't use) the PWM clocksource would have to
enable the driver anyway.
Another thing is that I don't see a need to create one cell per PWM channel.
The PWM core is designed in a way that supports multiple channels per PWM
controller and so is the generic PWM DT specifier (<&controller channel period
flags>), so I'd rather see a single cell for all PWM channels.
So, to summarize this alternative concept:
- two drivers:
1) clocksource driver - registering clocksource and PWM MFD cell
2) PWM driver - handling the PWM MFD cell
- both drivers would share registers using a regmap with custom lock/unlock
callbacks (using spin_lock_irqsave/spin_unlock_irqrestore, because the
clocksource needs to access PWM registers in IRQ context)
- the clocksource/master driver would have a samsung_time_init function which
would set up the driver early and initialize the clocksource
- a platform driver would be registered by the clocksource/master driver
which would register the PWM MFD cell in its probe
- MFD cell platform data would contain struct regmap * and variant data
(parsed from DT or received from platform code - as in my original version)
This should indeed work, assuming that I find a solution to make
clocksource_of_init not initialize the PWM clocksource (from PWM DT node) on
platforms that can't use it.
Best regards,
--
Tomasz Figa
Samsung Poland R&D Center
SW Solution Development, Kernel and System Framework
next prev parent reply other threads:[~2013-04-11 16:44 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-04 16:36 [PATCH v4 00/14] ARM: samsung-time: Prepare for multiplatform support Tomasz Figa
2013-04-04 16:36 ` [PATCH v4 01/14] ARM: SAMSUNG: Move samsung-time to drivers/clocksource Tomasz Figa
2013-04-04 16:36 ` [PATCH v4 02/14] clocksource: samsung-time: Drop useless defines from public header Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 03/14] clocksource: samsung-time: Use local register definitions Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 04/14] mfd: Add Samsung PWM/timer master driver Tomasz Figa
2013-04-05 16:39 ` Samuel Ortiz
2013-04-05 16:53 ` Tomasz Figa
2013-04-05 17:05 ` Arnd Bergmann
2013-04-05 17:35 ` Tomasz Figa
2013-04-05 19:54 ` Arnd Bergmann
2013-04-05 22:24 ` Tomasz Figa
2013-04-08 16:53 ` Tomasz Figa
2013-04-10 22:35 ` Arnd Bergmann
2013-04-11 16:28 ` Mark Brown
2013-04-11 16:44 ` Tomasz Figa [this message]
2013-04-11 21:08 ` Arnd Bergmann
2013-04-04 16:37 ` [PATCH v4 05/14] ARM: SAMSUNG: Unify base address definitions of timer block Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 06/14] ARM: SAMSUNG: Add new PWM platform device Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 07/14] ARM: SAMSUNG: Set PWM platform data Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 08/14] clocksource: samsung-time: Use Samsung PWM/timer master driver Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 09/14] clocksource: samsung-time: Use variant data to get SoC-specific bits Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 10/14] clocksource: samsung-time: Use master driver to configure dividers Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 11/14] clocksource: samsung-time: Use clk_prepare_enable Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 12/14] clocksource: samsung-time: Use master driver to control PWM channels Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 13/14] clocksource: samsung-time: Move IRQ mask/ack handling to the driver Tomasz Figa
2013-04-04 16:37 ` [PATCH v4 14/14] ARM: SAMSUNG: Remove unused PWM timer IRQ chip code Tomasz Figa
2013-04-04 23:15 ` [PATCH v4 00/14] ARM: samsung-time: Prepare for multiplatform support Heiko Stübner
2013-04-05 10:33 ` Tomasz Figa
2013-04-05 22:57 ` Tomasz Figa
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=1718887.H9vPuvORKd@amdc1227 \
--to=t.figa@samsung.com \
--cc=arnd@arndb.de \
--cc=augulis.darius@gmail.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=buserror@gmail.com \
--cc=christer@weinigel.se \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=ghcstop@gmail.com \
--cc=heiko@sntech.de \
--cc=jacmet@sunsite.dk \
--cc=jekhor@gmail.com \
--cc=john.stultz@linaro.org \
--cc=kgene.kim@samsung.com \
--cc=kwangwoo.lee@gmail.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=linux@simtec.co.uk \
--cc=m.szyprowski@samsung.com \
--cc=mark.rutland@arm.com \
--cc=mcuelenaere@gmail.com \
--cc=robherring2@gmail.com \
--cc=sameo@linux.intel.com \
--cc=sylvester.nawrocki@gmail.com \
--cc=tglx@linutronix.de \
--cc=tomasz.figa@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;
as well as URLs for NNTP newsgroup(s).