devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Heiko Stübner" <heiko@sntech.de>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Stephen Warren <swarren@wwwdotorg.org>,
	Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	John Stultz <john.stultz@linaro.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Mike Turquette <mturquette@linaro.org>,
	Seungwon Jeon <tgih.jun@samsung.com>,
	Jaehoon Chung <jh80.chung@samsung.com>,
	Chris Ball <cjb@laptop.org>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	Grant Likely <grant.likely@linaro.org>,
	Rob Herring <rob.herring@calxeda.com>,
	"devicetree-discuss@lists.ozlabs.org"
	<devicetree-discuss@lists.ozlabs.org>,
	Russell King <linux@arm.linux.org.uk>,
	Arnd Bergmann <arnd@arndb.de>, Olof Johansson <olof@lixom.net>
Subject: Re: [PATCH 07/10] pinctrl: add pinctrl driver for Rockchip SoCs
Date: Tue, 4 Jun 2013 14:05:12 +0200	[thread overview]
Message-ID: <201306041405.13320.heiko@sntech.de> (raw)
In-Reply-To: <CACRpkdbBr7s1NoTQewVOotorHJHLL8Z6-_gAx5GC0x6uNUX0gw@mail.gmail.com>

Hi,

I'll just skip over the "right, will fix that" issues and just address the 
unclear ones.

Am Dienstag, 4. Juni 2013, 09:08:09 schrieb Linus Walleij:
> On Mon, Jun 3, 2013 at 12:59 AM, Heiko Stübner <heiko@sntech.de> wrote:
> > This driver adds support the Cortex-A9 based SoCs from Rockchip,
> > so at least the RK2928, RK3066 (a and b) and RK3188.
> > Earlier Rockchip SoCs seem to use similar mechanics for gpio
> > handling so should be supportable with relative small changes.
> > Pull handling on the rk3188 is currently a stub, due to it being
> > a bit different to the earlier SoCs.
> > 
> > Pinmuxing as well as gpio (and interrupt-) handling tested on
> > a rk3066a based machine.
> > 
> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> 
> Overall this is looking very good, mainly minor comments.

> > +Required properties for pin configuration node:
> > +  - rockchip,pins: 4 integers array, represents a group of pins mux and
> > config +    setting. The format is rockchip,pins = <PIN_BANK
> > PIN_BANK_NUM MUX CONFIG>. +    The MUX 0 means gpio and MUX 1 to 3 mean
> > the specific device function +
> > +Bits used for CONFIG:
> > +PULL_AUTO      (1 << 0): indicate this pin needs a pull setting for SoCs
> > +                         that determine the pull up or down themselfs
> 
> Hm, never saw that before...

Citing the original gpio driver:

	/*
	 * Values written to this register independently
	 * control Pullup/Pulldown or not for the
	 * corresponding data bit in GPIO.
	 * 0: pull up/down enable, PAD type will decide
	 * to be up or down, not related with this value
	 * 1: pull up/down disable
	 */

So if it's a pull up or down is decided based on the mux of the pin. Calling 
everything a "pull down" (or up) when it isn't seemed somehow wrong to me.

The rk3188 on the other hand supports both pull up and down separately.

Or should this be selected as PULL_UP | PULL_DOWN in the config?


> > +uart2: serial@20064000 {
> > +       compatible = "snps,dw-apb-uart";
> > +       reg = <0x20064000 0x400>;
> > +       interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
> 
> Using #defines, nice!

everything for bonus-points ;-)

And actually it's definitly easier on me as well, as I don't have to remember 
what each integer value means.

> +++ b/drivers/pinctrl/Kconfig
> @@ -158,6 +158,12 @@ config PINCTRL_DB8540
>         bool "DB8540 pin controller driver"
>         depends on PINCTRL_NOMADIK && ARCH_U8500
> 
> +config PINCTRL_ROCKCHIP
> +       bool
> +       select PINMUX
> +       select PINCONF
> +       select GENERIC_IRQ_CHIP
> 
> Why is this super-simple pin config thing not using
> GENERIC_PINCONF?
> 
> I *know* it is simpler to implement your own thing, but think of the
> poor maintainers that have to wade through 50 identical implementations.
> Do this, it pays off.

generic pinconf sounds interesting ... will give it a try.

The only problem is the pull stuff mentioned above that is either pull up or 
down without the driver having knowledge about it. And generic_pinconf only 
knows about them separately right now.


> BTW: it leads to wanting to use generic pinconf DT bindings as experienced
> by Laurent and others. We need to fix that too...
> 
> (...)
> 
> > +++ b/drivers/pinctrl/pinctrl-rockchip.c
> > +static void rockchip_pin_dbg_show(struct pinctrl_dev *pctldev,
> > +                                       struct seq_file *s, unsigned
> > offset) +{
> > +       seq_printf(s, "%s", dev_name(pctldev->dev));
> > +}
> 
> Nothing else you want to say about the pins here?
> (No big deal for sure, but....)

when using pinconfig_generic, its dump_pin function should be more talkative 
right?


> > +
> > +               data = readl_relaxed(reg);
> > +               data >>= bit;
> > +               data &= 1;
> > +
> > +               return !data;
> 
> That's a bit hard to read, I'd just:
> 
> #include <linux/bitops.h>
> return !(readl_relaxed(reg) & BIT(bit));
> 
> And skip the "data" variable. The ! operator will
> clamp this to a bool (0/1).
> 
> But we all have our habits.

yeah, but sometimes it's also good to try to break them ... your solution is 
much nicer to read (and shorter).


> All I could think of right now...

Thanks for the review
Heiko

  reply	other threads:[~2013-06-04 12:05 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-02 22:55 arm: add basic support for Rockchip Cortex-A9 SoCs Heiko Stübner
     [not found] ` <201306030055.15413.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2013-06-02 22:56   ` [PATCH 01/10] clocksource: dw_apb_timer_of: use the clocksource as sched clock if necessary Heiko Stübner
2013-06-04  6:34     ` Linus Walleij
2013-06-04  8:29       ` Heiko Stübner
2013-06-04  9:43         ` Linus Walleij
2013-06-02 22:56   ` [PATCH 02/10] clocksource: dw_apb_timer_of: add clock-handling Heiko Stübner
2013-06-03  3:22     ` Baruch Siach
2013-06-03  7:51       ` Heiko Stübner
2013-06-02 22:57   ` [PATCH 03/10] clk: flag to use upper half of the register as change indicator Heiko Stübner
2013-06-02 22:57   ` [PATCH 04/10] clk: divider: add flag to limit possible dividers to even numbers Heiko Stübner
2013-06-02 22:58   ` [PATCH 05/10] mmc: dw_mmc-pltfm: remove static from dw_mci_pltfm_remove Heiko Stübner
2013-06-04  3:59     ` Jaehoon Chung
     [not found]     ` <201306030058.27184.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2013-06-05 14:00       ` Seungwon Jeon
2013-06-02 22:59   ` [PATCH 06/10] mmc: dw_mmc-pltfm: add Rockchip variant Heiko Stübner
2013-06-04  4:06     ` Jaehoon Chung
2013-06-04  8:43       ` Heiko Stübner
     [not found]     ` <201306030059.03783.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2013-06-05 14:00       ` Seungwon Jeon
2013-06-05 14:11         ` Heiko Stübner
2013-06-06 20:01     ` Andy Shevchenko
2013-06-02 22:59   ` [PATCH 07/10] pinctrl: add pinctrl driver for Rockchip SoCs Heiko Stübner
2013-06-04  7:08     ` Linus Walleij
2013-06-04 12:05       ` Heiko Stübner [this message]
2013-06-05  7:01         ` Linus Walleij
2013-06-05 17:18           ` Stephen Warren
     [not found]             ` <51AF72F9.3060307-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-06-05 18:50               ` Heiko Stübner
2013-06-02 23:00 ` [PATCH 08/10] clk: add basic Rockchip rk3066a clock support Heiko Stübner
2013-06-03  3:27   ` Olof Johansson
     [not found]     ` <20130603032711.GA3379-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org>
2013-06-03  7:52       ` Heiko Stübner
2013-06-02 23:01 ` [PATCH 09/10] arm: add debug uarts for rockchip rk29xx and rk3xxx series Heiko Stübner
2013-06-03  2:08   ` Arnd Bergmann
2013-06-03  7:54     ` Heiko Stübner
2013-06-02 23:02 ` [PATCH 10/10] arm: add basic support for Rockchip RK3066a boards Heiko Stübner
2013-06-03  2:15   ` Arnd Bergmann
2013-06-03  8:23     ` Heiko Stübner
     [not found]       ` <201306031023.49364.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2013-06-03  9:22         ` Arnd Bergmann
2013-06-03  9:46           ` Heiko Stübner
2013-06-03 10:26             ` Arnd Bergmann
2013-06-03 12:15               ` [RFC] dw_apb_timer_of: use clocksource_of_init Heiko Stübner
2013-06-03 12:27                 ` Rob Herring
2013-06-03 13:20                 ` Arnd Bergmann
2013-06-05  7:11   ` [PATCH 10/10] arm: add basic support for Rockchip RK3066a boards Thomas Petazzoni
2013-06-05 21:45     ` Maxime Ripard
2013-06-03  2:07 ` arm: add basic support for Rockchip Cortex-A9 SoCs Arnd Bergmann

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=201306041405.13320.heiko@sntech.de \
    --to=heiko@sntech.de \
    --cc=arnd@arndb.de \
    --cc=cjb@laptop.org \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@linaro.org \
    --cc=jh80.chung@samsung.com \
    --cc=john.stultz@linaro.org \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mturquette@linaro.org \
    --cc=olof@lixom.net \
    --cc=rob.herring@calxeda.com \
    --cc=swarren@wwwdotorg.org \
    --cc=tgih.jun@samsung.com \
    --cc=tglx@linutronix.de \
    /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).