From: Tomasz Figa <t.figa@samsung.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Grant Likely <grant.likely@secretlab.ca>,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org,
devicetree-discuss@lists.ozlabs.org, kgene.kim@samsung.com,
thomas.abraham@linaro.org, swarren@wwwdotorg.org,
kyungmin.park@samsung.com, m.szyprowski@samsung.com,
tomasz.figa@gmail.com
Subject: Re: [PATCH 01/16] ARM: dts: exynos4210: Replace legacy GPIO bank nodes with pinctrl bank nodes
Date: Wed, 10 Oct 2012 10:20:07 +0200 [thread overview]
Message-ID: <79419580.xJ5hFKormc@amdc1227> (raw)
In-Reply-To: <CACRpkdZgH9TSr2uWQW+-8-U7BxJCscQgStVOndGixGmRz74TWw@mail.gmail.com>
On Wednesday 10 of October 2012 09:26:51 Linus Walleij wrote:
> On Mon, Oct 8, 2012 at 10:39 AM, Tomasz Figa <t.figa@samsung.com> wrote:
> > Seuqential patches from this series introduce SoC-specific data parsing
> > from device tree.
> >
> > This patch removes legacy GPIO bank nodes from exynos4210.dtsi and
> > replaces them with nodes and properties required for these patches.
>
> So to be clear:
> > + pinctrl-bank-types {
> > + bank_off: bank-off {
> > + samsung,reg-names = "func", "dat", "pud",
> > + "drv", "conpdn",
> > "pudpdn"; + samsung,reg-params = <0x00 4>, <0x04
> > 1>, <0x08 2>, + <0x0C
> > 2>, <0x10 2>, <0x14 2>; + };
>
> This is starting to look like a firmware language, I have mixed
> feelings about this. Shall this be read:
>
> "Poke 4 into 0x00, poke 1 into 0x04, poke 2 into 0x08" etc?
I'm not sure if I understood you correctly, so let me explain how this
works.
Each specifier defines register offset inside bank registers and how many
bits are used for one pin in this register to specify configuration value.
E.g. func register is available at offset 0x00 and pin 0 occupies bits 0-3,
pin 1 bit 4-7, etc.
>
> We really need to discuss this, Grant has already NACK:ed
> such approaches once.
>
> If you're still going to do this, it is mandatory
> to NOT use magic hex numbers anymore, because Stephen has
> merged preprocessor support to the DTC compiler so you
> can use #defined macros.
>
> See commit:
> cd296721a9645f9f28800a072490fa15458d1fb7
That's definitely nice. I have seen the work going on this before, but
haven't followed it recently. Good to know that now it can be used.
> > + pinctrl@11400000 {
> > + gpa0: gpa0 {
> > + gpio-controller;
> > + samsung,pctl-offset = <0x000>;
> > + samsung,pin-count = <8>;
> > + samsung,bank-type = <&bank_off>;
> > + #gpio-cells = <2>;
>
> This part is OK.
>
> > +
> > + interrupt-controller;
> > + samsung,eint-offset = <0x00>;
>
> This property is *NOT* OK. IMHO the driver should know these
> offsets, not the device tree. The driver only needs the offset to
> the register range, what registers there are and their names
> should be #defined.
This is an offset inside of EINT register group. EINT registers are
organized in groups as following:
EINT_CON_0
EINT_CON_1
...
EINT_CON_N
...
EINT_MASK_0
EINT_MASK_1
...
EINT_MASK_N
...
EINT_PEND_0
EINT_PEND_1
...
EINT_PEND_N
With arbitrary order of particular groups, arbitrary space between groups
and arbitrary mapping of particular registers to pin banks, although the
mapping is the same for all groups of registers, that's why there is only
one eint-offset property. Also holes (reserved/unused registers) inside
groups might exist.
So if we want to access EINT_MASK register of bank A0 (of pinctrl 0), we
must construct the address as following:
eint_mask_a0 = pinctrl_0_base + pinctrl_0_geint_mask + bank_a0_eint_offset
Best regards,
--
Tomasz Figa
Samsung Poland R&D Center
next prev parent reply other threads:[~2012-10-10 8:20 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-08 8:39 [PATCH 00/16] pinctrl: samsung: Usability and extensibiltiy improvements Tomasz Figa
2012-10-08 8:39 ` [PATCH 01/16] ARM: dts: exynos4210: Replace legacy GPIO bank nodes with pinctrl bank nodes Tomasz Figa
2012-10-10 7:26 ` Linus Walleij
2012-10-10 8:20 ` Tomasz Figa [this message]
2012-10-10 16:27 ` Stephen Warren
2012-10-10 18:12 ` Tony Lindgren
2012-10-10 18:22 ` Tomasz Figa
2012-10-10 18:26 ` Tomasz Figa
2012-10-08 8:39 ` [PATCH 02/16] pinctrl: exynos: Parse wakeup-eint parameters from DT Tomasz Figa
2012-10-10 7:18 ` Linus Walleij
2012-10-10 8:23 ` Tomasz Figa
2012-10-08 8:39 ` [PATCH 03/16] pinctrl: samsung: Detect and handle unsupported configuration types Tomasz Figa
2012-10-10 7:37 ` Linus Walleij
2012-10-10 8:25 ` Tomasz Figa
2012-10-08 8:39 ` [PATCH 04/16] pinctrl: samsung: Parse pin banks from DT Tomasz Figa
2012-10-10 7:34 ` Linus Walleij
2012-10-10 8:39 ` Tomasz Figa
2012-10-11 13:52 ` Linus Walleij
2012-10-08 8:39 ` [PATCH 05/16] pinctrl: exynos: Remove static SoC-specific data Tomasz Figa
2012-10-08 8:39 ` [PATCH 06/16] pinctrl: samsung: Parse bank-specific eint offset from DT Tomasz Figa
2012-10-08 8:39 ` [PATCH 07/16] pinctrl: samsung: Hold OF node of pin bank in bank struct Tomasz Figa
2012-10-08 8:39 ` [PATCH 08/16] pinctrl: samsung: Hold pointer to driver data " Tomasz Figa
2012-10-08 8:39 ` [PATCH 09/16] pinctrl: exynos: Use one IRQ domain per pin bank Tomasz Figa
2012-10-10 7:40 ` Linus Walleij
2012-10-10 8:45 ` Tomasz Figa
2012-10-08 8:39 ` [PATCH 10/16] pinctrl: samsung: Do not pass gpio_chip to pin_to_reg_bank Tomasz Figa
2012-10-10 7:42 ` Linus Walleij
2012-10-10 8:51 ` Tomasz Figa
2012-10-08 8:39 ` [PATCH 11/16] pinctrl: samsung: Use one GPIO chip per pin bank Tomasz Figa
2012-10-10 7:43 ` Linus Walleij
2012-10-10 8:49 ` Tomasz Figa
2012-10-08 8:39 ` [PATCH 12/16] pinctrl: samsung: Use per-bank IRQ domain for wake-up interrupts Tomasz Figa
2012-10-08 8:39 ` [PATCH 13/16] pinctrl: exynos: Set pin function to EINT in irq_set_type of wake-up EINT Tomasz Figa
2012-10-08 8:39 ` [PATCH 14/16] pinctrl: samsung: Parse offsets of particular registers from DT Tomasz Figa
2012-10-08 8:39 ` [PATCH 15/16] pinctrl: samsung: Add GPIO to IRQ translation Tomasz Figa
2012-10-08 8:39 ` [PATCH 16/16] Documentation: Update samsung-pinctrl device tree bindings documentation Tomasz Figa
2012-10-10 7:46 ` [PATCH 00/16] pinctrl: samsung: Usability and extensibiltiy improvements Linus Walleij
[not found] ` <CACRpkdbUmM2=vhjhCq_qN2v=8RUDeWV4b8A8oXXPE4e8Z9C7zg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-10 9:04 ` Tomasz Figa
2012-10-10 15:22 ` Tomasz Figa
2012-10-11 13:48 ` Linus Walleij
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=79419580.xJ5hFKormc@amdc1227 \
--to=t.figa@samsung.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=grant.likely@secretlab.ca \
--cc=kgene.kim@samsung.com \
--cc=kyungmin.park@samsung.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=swarren@wwwdotorg.org \
--cc=thomas.abraham@linaro.org \
--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).