LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: Bartosz Golaszewski <brgl@bgdev.pl>
Cc: Sekhar Nori <nsekhar@ti.com>, Kevin Hilman <khilman@kernel.org>,
	David Lechner <david@lechnology.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Rob Herring <robh+dt@kernel.org>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Rich Felker <dalias@libc.org>,
	Frank Rowand <frowand.list@gmail.com>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
	Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Arend van Spriel <aspriel@gmail.com>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Michal Suchanek <msuchanek@suse.de>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>
Subject: Re: [PATCH 00/11] platform: device tree support for early platform drivers
Date: Tue, 24 Apr 2018 18:55:45 +0100	[thread overview]
Message-ID: <20180424175544.uq7f5x63a5il36sh@lakrids.cambridge.arm.com> (raw)
In-Reply-To: <20180424173051.15099-1-brgl@bgdev.pl>

Hi bartosz,

On Tue, Apr 24, 2018 at 07:30:40PM +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> 
> Device tree based systems often use OF_DECLARE() macros for devices
> that need to be initialized early in the boot process such as clocks,
> timers etc. However platform devices are more desirable.
> 
> This series aims at introducing support for early platform drivers for
> OF-based systems.
> 
> The idea is to have a special compatible fallback string: "earlydev"
> that similarily to "syscon" would be added to device nodes that need
> early probing. We then need to call of_early_platform_populate() early
> in the boot process to actually probe the registered devices.
> 
> I am aware that this new compatible does not strictly correspond with
> the "hardware description only" rule of DT, but we already have many
> functionalities that break this rule: syscon, gpio hogs etc.

I don't think we need the "earlydev" string at all, and can still keep
the rest of this infrastrcuture if it is helpful.

So while I'm certainly oppposed to the "earlydev" string, I think that
the infrastrcuture could be useful.

> The first user of this new functionality will be the DaVinci platform
> for which we want to probe the pll, psc and timer drivers early in the
> boot sequence but keep them implemented as platform drivers.

Can we have early_paltform_driver() take a reference to the driver's
of_match_table, and put that in a special section?

Then instead of looking for "earlydev", we look for any compatible
string in that section. No magic string required in the DT, and we can
always mess around with probe ordering in future.

> In the future, if this series gets accepted, this could become and
> alternative to TIMER_OF_DECLARE, CLK_OF_DECLARE etc. and could lead
> to deprecating of those macros in favor of early platform drivers.

IIRC we typically want to probe clocks before clocksources. Does using
early platform drivers ensure the necessary ordering?

Thanks,
Mark.

> Bartosz Golaszewski (11):
>   platform: early: provide early_platform_add_device()
>   platform: provide early_platform_driver_register_probe_all()
>   platform: make support for early platform devices conditional
>   of: platform: use pdev as name for vars of type struct platform_device
>   platform: use a dedicated list_head for early devices
>   of: provide for_each_compatible_child_node()
>   dt-bindings: add bindings for early devices
>   of: platform: provide of_early_platform_populate()
>   platform: provide early_platform_driver()
>   of: platform: provide of_early_platform_probe()
>   misc: implement a dummy early platform driver
> 
>  Documentation/devicetree/bindings/early.txt |   7 +
>  arch/sh/Kconfig                             |   1 +
>  drivers/base/Kconfig                        |   4 +
>  drivers/base/platform.c                     |  26 ++--
>  drivers/misc/Kconfig                        |   8 ++
>  drivers/misc/Makefile                       |   1 +
>  drivers/misc/dummy-early.c                  |  40 ++++++
>  drivers/of/device.c                         |  14 +-
>  drivers/of/platform.c                       | 143 +++++++++++++++-----
>  include/linux/device.h                      |   4 +
>  include/linux/of.h                          |   3 +
>  include/linux/of_device.h                   |   5 +
>  include/linux/of_platform.h                 |  19 +++
>  include/linux/platform_device.h             |  52 +++++++
>  14 files changed, 279 insertions(+), 48 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/early.txt
>  create mode 100644 drivers/misc/dummy-early.c
> 
> -- 
> 2.17.0
> 

  parent reply	other threads:[~2018-04-24 17:55 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-24 17:30 Bartosz Golaszewski
2018-04-24 17:30 ` [PATCH 01/11] platform: early: provide early_platform_add_device() Bartosz Golaszewski
2018-04-24 17:30 ` [PATCH 02/11] platform: provide early_platform_driver_register_probe_all() Bartosz Golaszewski
2018-04-24 17:30 ` [PATCH 03/11] platform: make support for early platform devices conditional Bartosz Golaszewski
2018-04-24 19:31   ` Randy Dunlap
2018-04-25 14:02   ` Rich Felker
2018-04-24 17:30 ` [PATCH 04/11] of: platform: use pdev as name for vars of type struct platform_device Bartosz Golaszewski
2018-04-24 17:30 ` [PATCH 05/11] platform: use a dedicated list_head for early devices Bartosz Golaszewski
2018-04-26  4:27   ` kbuild test robot
2018-04-24 17:30 ` [PATCH 06/11] of: provide for_each_compatible_child_node() Bartosz Golaszewski
2018-04-24 17:30 ` [PATCH 07/11] dt-bindings: add bindings for early devices Bartosz Golaszewski
2018-04-24 17:30 ` [PATCH 08/11] of: platform: provide of_early_platform_populate() Bartosz Golaszewski
2018-04-24 17:30 ` [PATCH 09/11] platform: provide early_platform_driver() Bartosz Golaszewski
2018-04-24 17:30 ` [PATCH 10/11] of: platform: provide of_early_platform_probe() Bartosz Golaszewski
2018-04-26  3:46   ` kbuild test robot
2018-04-24 17:30 ` [PATCH 11/11] misc: implement a dummy early platform driver Bartosz Golaszewski
2018-04-24 17:55 ` Mark Rutland [this message]
2018-04-24 17:59   ` [PATCH 00/11] platform: device tree support for early platform drivers Rich Felker
2018-04-24 17:57 ` Rich Felker
2018-04-25  9:33   ` Bartosz Golaszewski
2018-04-24 18:19 ` Robin Murphy
2018-04-24 19:39 ` Rob Herring

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=20180424175544.uq7f5x63a5il36sh@lakrids.cambridge.arm.com \
    --to=mark.rutland@arm.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=arnd@arndb.de \
    --cc=aspriel@gmail.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=brgl@bgdev.pl \
    --cc=dalias@libc.org \
    --cc=david@lechnology.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=frowand.list@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jarkko.sakkinen@linux.intel.com \
    --cc=khilman@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=msuchanek@suse.de \
    --cc=mturquette@baylibre.com \
    --cc=nsekhar@ti.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=ysato@users.sourceforge.jp \
    --subject='Re: [PATCH 00/11] platform: device tree support for early platform drivers' \
    /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

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).