Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756720AbbDXOsP (ORCPT ); Fri, 24 Apr 2015 10:48:15 -0400 Received: from mail-wg0-f48.google.com ([74.125.82.48]:35505 "EHLO mail-wg0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756194AbbDXOsI (ORCPT ); Fri, 24 Apr 2015 10:48:08 -0400 From: Tomeu Vizoso To: linux-kernel@vger.kernel.org Cc: Thierry Reding , =?UTF-8?q?St=C3=A9phane=20Marchesin?= , Alexander Holler , Olof Johansson , Grant Likely , Rob Herring , devicetree@vger.kernel.org, Mark Rutland , Tomeu Vizoso Subject: [RFC 01/12] ARM: tegra: Register drivers before devices Date: Fri, 24 Apr 2015 16:47:17 +0200 Message-Id: <1429886848-5843-2-git-send-email-tomeu.vizoso@collabora.com> X-Mailer: git-send-email 2.3.6 In-Reply-To: <1429886848-5843-1-git-send-email-tomeu.vizoso@collabora.com> References: <1429886848-5843-1-git-send-email-tomeu.vizoso@collabora.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1985 Lines: 74 So devices can be probed on demand, we need to have the drivers already registered as we don't have enough information to register a driver on demand. --- arch/arm/mach-tegra/tegra.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c index 2378fa56..5fe5bd4 100644 --- a/arch/arm/mach-tegra/tegra.c +++ b/arch/arm/mach-tegra/tegra.c @@ -55,6 +55,8 @@ #include "reset.h" #include "sleep.h" +struct soc_device *soc_dev; + /* * Storage for debug-macro.S's state. * @@ -87,12 +89,10 @@ static void __init tegra_dt_init_irq(void) static void __init tegra_dt_init(void) { struct soc_device_attribute *soc_dev_attr; - struct soc_device *soc_dev; - struct device *parent = NULL; soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); if (!soc_dev_attr) - goto out; + return; soc_dev_attr->family = kasprintf(GFP_KERNEL, "Tegra"); soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%d", @@ -105,17 +105,7 @@ static void __init tegra_dt_init(void) kfree(soc_dev_attr->revision); kfree(soc_dev_attr->soc_id); kfree(soc_dev_attr); - goto out; } - - parent = soc_device_to_device(soc_dev); - - /* - * Finished with the static registrations now; fill in the missing - * devices - */ -out: - of_platform_populate(NULL, of_default_bus_match_table, NULL, parent); } static void __init paz00_init(void) @@ -133,8 +123,13 @@ static struct { static void __init tegra_dt_init_late(void) { + struct device *parent = NULL; int i; + parent = soc_device_to_device(soc_dev); + + of_platform_populate(NULL, of_default_bus_match_table, NULL, parent); + tegra_init_suspend(); tegra_cpuidle_init(); -- 2.3.6 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/