From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: mach header files
Date: Fri, 04 Apr 2014 15:24:06 +0200 [thread overview]
Message-ID: <4379667.784l7DtcMU@wuerfel> (raw)
In-Reply-To: <CACxGe6sV7WpQeiGxjnmaatnCCzRBqU=O6qyuQXJd+RYt4QUXgg@mail.gmail.com>
On Friday 04 April 2014 03:29:54 Grant Likely wrote:
> On Fri, Apr 4, 2014 at 1:19 AM, Phil Edworthy <phil.edworthy@renesas.com> wrote:
> > Resent, hopefully without the automatic corporate signature appended this time...
> >
> > I am porting the kernel to a new device, for which I've created a new
> > arch/arm/mach-... directory, and I also a clock driver that lives under
> > driver/clk. Everything is all working fine, though I am now cleaning up
> > the code and have a question about mach specific header files.
I'm glad you are asking while you are still in the process of cleaning
up your code, because you need to know the rules for new platforms.
Basically at this point we expect zero code in arch/arm/mach-* for a new
platform. You are absolutely required to have DT based probing and
multiplatform support, and the latter also means that there are no
mach/*.h header files that are visible to device drivers.
We still make the occasional exception for adding code in the mach-*
directory, but we are getting pretty close to the state where this
is not needed for new platforms, and all the existing uses are for
things that can eventually get cleaned up.
If you think you need an exception here, please explain what you
are doing, and we can see if there is a better way to do that already.
> > The clock driver is completely specific to this device, but needs to read
> > from a system register (just for external boot mode pins) to determine some
> > PLL settings. This register is in a block of system registers which are
> > also used by the mach code in arch/arm/mach-...
> >
> > Since the clock driver is specific to the mach, is there any point in
> > specifying the address of this reg in the corresponding dtsi? The format
> > and functionality described by this register would not be the same on any other device.
>
> Why would you not? The dts is a central place where the entire memory
> map layout of the device can be specified. If I were working on the
> board support, I would create a node for the register block and have
> the driver retrieve that node.
Right. More specifically, this case is often handled using the drivers/mfd/syscon.c
driver, which exports a "regmap" pointer that can be used by drivers to access
those registers. The driver will need to look up the regmap through a phandle
in DT, and it can either use a hardcoded offset into the regmap to get
to the specific register it needs, or it can look up the offset from DT
as well. Which of the two you pick depends on the particular needs of the
device.
> > If I don't specify the address of the register in the dtsi, I think it
> > would be best to have a common header file for all of the system registers.
> > I've seen some drivers, e.g. exynos-cpufreq.c, doing this by including files
> > from mach-exynos/include/mach. Is that the right way to do this?
You have managed to pick the perfect example: The exynos cpufreq driver is the
one that is currently blocking support for multiplatform exynos builds because
it uses header files from the platform code. Because of this, we are actually
planning to throw out that driver entirely in the next merge window.
In short, definitely the wrong way.
Arnd
next prev parent reply other threads:[~2014-04-04 13:24 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-04 8:19 mach header files Phil Edworthy
2014-04-04 10:29 ` Grant Likely
2014-04-04 12:16 ` Phil Edworthy
2014-04-04 12:22 ` Grant Likely
2014-04-04 13:14 ` Phil Edworthy
2014-04-04 13:20 ` Thomas Petazzoni
2014-04-08 14:00 ` Laurent Pinchart
2014-04-04 13:44 ` Grant Likely
2014-04-04 13:24 ` Arnd Bergmann [this message]
2014-04-04 13:32 ` Barry Song
2014-04-04 15:27 ` Arnd Bergmann
2014-04-04 13:52 ` Phil Edworthy
2014-04-04 15:30 ` Arnd Bergmann
2014-04-04 15:42 ` Phil Edworthy
2014-04-04 15:50 ` Arnd Bergmann
2014-04-04 16:02 ` Phil Edworthy
2014-04-04 16:22 ` Russell King - ARM Linux
2014-04-04 16:38 ` Phil Edworthy
2014-04-04 18:01 ` Kent Borg
2014-04-04 18:49 ` Arnd Bergmann
2014-04-04 19:01 ` Kent Borg
2014-04-04 19:19 ` Arnd Bergmann
-- strict thread matches above, loose matches on Subject: below --
2014-04-02 15:11 Phil Edworthy
2014-04-02 15:16 ` Arnd Bergmann
2014-04-03 7:48 ` Phil Edworthy
2014-04-02 15:20 ` Ben Dooks
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=4379667.784l7DtcMU@wuerfel \
--to=arnd@arndb.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox