devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@nvidia.com>
To: Grant Likely <grant.likely@secretlab.ca>,
	Colin Cross <ccross@android.com>,
	Erik Gilling <konkers@android.com>,
	Olof Johansson <olof@lixom.net>
Cc: Russell King <linux@arm.linux.org.uk>,
	Arnd Bergmann <arnd@arndb.de>,
	devicetree-discuss@lists.ozlabs.org,
	linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org,
	Stephen Warren <swarren@nvidia.com>,
	linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 00/12] arm/tegra: Initialize GPIO & pinmux from DT
Date: Fri, 12 Aug 2011 16:54:45 -0600	[thread overview]
Message-ID: <1313189697-21287-1-git-send-email-swarren@nvidia.com> (raw)

This patch modifies Tegra's device tree support to remove the dependency
on harmony_pinmux_init(), thus making it completely board-independent.

Some notes:

* This series is built on top of linux-next with a bunch of patches
  applied, in particular the removal of irq_to_gpio and custom gpio_to_irq
  that I'm in the process of sending to Russell. I haven't yet thought
  through how/where to merge this without causing all kinds of conflicts.

* I took care to preserve bisectability of Tegra DT support. However,
  linux-next doesn't yet have entirely useful Tegra DT support; some stuff
  from Grant's devicetree/next hasn't been pushed into linux-next yet. If
  we don't care about bisectability, I can remove a couple commits and
  possibly squash some others.

* The approach taken here is to have a custom semantic SoC-specific
  binding for each the gpio and pinmux drivers. Other alternatives
  suggested included:

  1) A generic "list of register writes" to be performed at boot. This has
     the advantage of reusability across different SoCs. However, this
     approach isn't semantic, and requires detailed knowledge of pinmux
     registers and potentially fiddly calculations when constructing the
     device tree.

  2) The ability to define disabled child nodes of the pinmux controller
     that are not processed by tegra_pinmux_probe_dt(). Other devices may
     refer to those using phandles, and later enable/disable them, thus
     representing dynamic pinmuxing in the device tree. I wasn't convinced
     whether we should represent dynamic pinmuxing using phandles.

  I discussed in more detail why I prefer the current proposal in various
  email threads.

* tegra_pinmux_probe_dt() enumerates all legal pingroup names, and searches
  for a pinmux controller subnode of that name, then processes each one
  that is found. An alternative that some may prefer would be to enumerate
  each child node of the pinmux controller, and have each node contain an
  explicit pingroup name property instead. Does anyone have any preference
  here? I suppose the latter option would obviate the need to add
  of_find_child_node_by_name().

Thanks for reading!

Stephen Warren (12):
  dt: Add of_find_child_node_by_name()
  arm/tegra: Prep boards for gpio/pinmux conversion to pdevs
  arm/tegra: Avoid duplicate gpio/pinmux devices with dt
  arm/tegra: board-dt: Add AUXDATA for tegra-gpio and tegra-pinmux
  arm/dt: Tegra: Add nvidia,gpios property to GPIO controller
  arm/dt: Tegra: Add pinmux node
  gpio/tegra: Convert to a platform device
  gpio/tegra: Add device tree support
  arm/tegra: Convert pinmux driver to a platform device
  arm/tegra: Add device tree support to pinmux driver
  arm/tegra: board-dt: Remove dependency on non-dt pinmux functions
  arm/tegra: Remove temporary gpio/pinmux registration workaround

 arch/arm/boot/dts/tegra-harmony.dts          |  479 ++++++++++++++++++++++++++
 arch/arm/boot/dts/tegra-seaboard.dts         |  409 ++++++++++++++++++++++
 arch/arm/boot/dts/tegra20.dtsi               |    5 +
 arch/arm/mach-tegra/Makefile                 |    1 -
 arch/arm/mach-tegra/board-dt.c               |   12 +-
 arch/arm/mach-tegra/board-harmony-pinmux.c   |    8 +
 arch/arm/mach-tegra/board-paz00-pinmux.c     |    8 +
 arch/arm/mach-tegra/board-seaboard-pinmux.c  |    9 +-
 arch/arm/mach-tegra/board-trimslice-pinmux.c |    7 +
 arch/arm/mach-tegra/devices.c                |   10 +
 arch/arm/mach-tegra/devices.h                |    2 +
 arch/arm/mach-tegra/pinmux.c                 |  136 ++++++++
 drivers/gpio/gpio-tegra.c                    |   56 +++-
 drivers/of/base.c                            |   18 +
 include/linux/of.h                           |    2 +
 15 files changed, 1138 insertions(+), 24 deletions(-)

             reply	other threads:[~2011-08-12 22:54 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-12 22:54 Stephen Warren [this message]
     [not found] ` <1313189697-21287-1-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-12 22:54   ` [RFC PATCH 01/12] dt: Add of_find_child_node_by_name() Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 02/12] arm/tegra: Prep boards for gpio/pinmux conversion to pdevs Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 03/12] arm/tegra: Avoid duplicate gpio/pinmux devices with dt Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 04/12] arm/tegra: board-dt: Add AUXDATA for tegra-gpio and tegra-pinmux Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 05/12] arm/dt: Tegra: Add nvidia, gpios property to GPIO controller Stephen Warren
     [not found]     ` <1313189697-21287-6-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-14  7:01       ` [RFC PATCH 05/12] arm/dt: Tegra: Add nvidia,gpios " Olof Johansson
     [not found]         ` <CAOesGMj8firxDz-kqkh=jwsbC_QRW+YSFpf7dh3WaOhseCg91w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-15 16:15           ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 06/12] arm/dt: Tegra: Add pinmux node Stephen Warren
     [not found]     ` <1313189697-21287-7-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-14  7:24       ` Olof Johansson
     [not found]         ` <CAOesGMheuUfSe1uUA6LxZ71V0-DR3XX7bEJqhVxJ-ZqrWWa1bA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-15 16:41           ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 07/12] gpio/tegra: Convert to a platform device Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 08/12] gpio/tegra: Add device tree support Stephen Warren
     [not found]     ` <1313189697-21287-9-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-13  9:49       ` Belisko Marek
     [not found]         ` <CAAfyv34kOtwjerB0gMhEKNTwGd9w-LCE52MCUuvzTyYkXLY-dg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-08-15 15:47           ` Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 09/12] arm/tegra: Convert pinmux driver to a platform device Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 10/12] arm/tegra: Add device tree support to pinmux driver Stephen Warren
     [not found]     ` <1313189697-21287-11-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-13 10:43       ` Jamie Iles
2011-08-13 10:48         ` Jamie Iles
     [not found]           ` <20110813104850.GD2643-apL1N+EY0C9YtYNIL7UdTEEOCMrvLtNR@public.gmane.org>
2011-08-15 16:09             ` Stephen Warren
2011-08-15 20:07       ` Jamie Iles
2011-08-15 20:36         ` Jamie Iles
2011-08-15 20:44           ` Stephen Warren
     [not found]             ` <74CDBE0F657A3D45AFBB94109FB122FF04AEA25174-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2011-08-15 20:50               ` Jamie Iles
2011-08-12 22:54   ` [RFC PATCH 11/12] arm/tegra: board-dt: Remove dependency on non-dt pinmux functions Stephen Warren
2011-08-12 22:54   ` [RFC PATCH 12/12] arm/tegra: Remove temporary gpio/pinmux registration workaround Stephen Warren
     [not found]     ` <1313189697-21287-13-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-08-15 11:12       ` Sergei Shtylyov
     [not found]         ` <4E48FF29.1030208-hkdhdckH98+B+jHODAdFcQ@public.gmane.org>
2011-08-15 16:03           ` Stephen Warren
2011-08-13 13:08   ` [RFC PATCH 00/12] arm/tegra: Initialize GPIO & pinmux from DT Shawn Guo
     [not found]     ` <20110813130858.GC7244-+NayF8gZjK2ctlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2011-08-15 16:07       ` Stephen Warren

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=1313189697-21287-1-git-send-email-swarren@nvidia.com \
    --to=swarren@nvidia.com \
    --cc=arnd@arndb.de \
    --cc=ccross@android.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=konkers@android.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=olof@lixom.net \
    /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).