From patchwork Mon Feb 8 04:17:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1437449 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=CgcogeBc; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DYt8d1GX8z9sVJ for ; Mon, 8 Feb 2021 15:19:45 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id CF2098287C; Mon, 8 Feb 2021 05:18:48 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="CgcogeBc"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 12B4A8285D; Mon, 8 Feb 2021 05:18:26 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x132.google.com (mail-il1-x132.google.com [IPv6:2607:f8b0:4864:20::132]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 841A782843 for ; Mon, 8 Feb 2021 05:18:21 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x132.google.com with SMTP id y17so11504649ili.12 for ; Sun, 07 Feb 2021 20:18:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3hK0ahVwNZ2YieMuZqeyH3mwkSpXwm+0MYMRvmZECDY=; b=CgcogeBcl8ri2HS9a1x7lzFhdBiVI7MQVC6p7IQ90cCmpMogRzAO5TV6fAz174Cxqw SZrUEAI2F81qyt3FrDKYhg/HtUuvnu0MUjo0okYbMwIRDUNZa5XnTLC5ZyqOfyeljYum k9tcp+r0507F3mw4fOzCncn8Pc0VTG18sCm/g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3hK0ahVwNZ2YieMuZqeyH3mwkSpXwm+0MYMRvmZECDY=; b=jfGF87BSQgsuLoPoLET9xKDAlXPSBQ9GXCIbgMhy7JHO6cP8A0HRFOD++TBqykYpPW rESnkeyCEiT4O5xPVPZOXR/QqqPb9S5Pssz5nBXRfaFtp/zVRKJE+kQ79oJ0SW5hxLx6 C34NGrkiUEJimQ2mGPvG9yqvSAaOFl5Ql14XOTArVPdZZnnQIjD5hPi2RNmqe6sw5rQA 1mpMtXCG9ENkBa4286JEXD8HYWA/w/Rp2vdBhw5O2Dcj584Im/GHebFW8zSvMUJAkc6Q vpWhG+PNnlyVn+Wu1uvNDgdfRefvccisf1i62V/BymaRyWonw64R5D8ZFUoUP5ylKUGK ToQA== X-Gm-Message-State: AOAM533yfpwEdr3SdMcQ+B0hefWUzoVuL5S2fmNPZQNzboVuz2nzz1d6 ycsHDXk3/81dQ1F8EfhECe1VWgOKqRh4sHmD X-Google-Smtp-Source: ABdhPJwpWuC4S3ju6MTdL79tweG/QDVOxqljaW1/cL36JpZsmlBFaS9CjXrs1Rt3ZFT917WuM9164w== X-Received: by 2002:a05:6e02:f48:: with SMTP id y8mr14243001ilj.97.1612757900099; Sun, 07 Feb 2021 20:18:20 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id h10sm8214994ils.10.2021.02.07.20.18.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 Feb 2021 20:18:19 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Tom Rini , Heinrich Schuchardt , Marek Vasut , Walter Lozano , Bin Meng , Bernhard Messerklinger , Simon Glass , Pavel Herrmann Subject: [PATCH v3 07/42] dm: core: Set up driver model for OF_PLATDATA_INST Date: Sun, 7 Feb 2021 21:17:32 -0700 Message-Id: <20210207211727.v3.7.Ic946d3b5000df55eb956c4dccfb36140311161fc@changeid> X-Mailer: git-send-email 2.30.0.478.g8a0d178c01-goog In-Reply-To: <20210208041807.4079084-1-sjg@chromium.org> References: <20210208041807.4079084-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean With this we don't need to scan and bind drivers, not even the root device. We just need to locate the root device that was set up at build time, then set our root in global_data to point to it. Update the code to handle this case. Signed-off-by: Simon Glass --- (no changes since v1) drivers/core/root.c | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/drivers/core/root.c b/drivers/core/root.c index 8769289b26e..b06e508689a 100644 --- a/drivers/core/root.c +++ b/drivers/core/root.c @@ -128,6 +128,13 @@ void fix_devices(void) } } +static int dm_setup_inst(void) +{ + DM_ROOT_NON_CONST = DM_DEVICE_GET(root); + + return 0; +} + int dm_init(bool of_live) { int ret; @@ -152,14 +159,23 @@ int dm_init(bool of_live) fix_devices(); } - ret = device_bind_by_name(NULL, false, &root_info, &DM_ROOT_NON_CONST); - if (ret) - return ret; - if (CONFIG_IS_ENABLED(OF_CONTROL)) - dev_set_ofnode(DM_ROOT_NON_CONST, ofnode_root()); - ret = device_probe(DM_ROOT_NON_CONST); - if (ret) - return ret; + if (CONFIG_IS_ENABLED(OF_PLATDATA_INST)) { + ret = dm_setup_inst(); + if (ret) { + log_debug("dm_setup_inst() failed: %d\n", ret); + return ret; + } + } else { + ret = device_bind_by_name(NULL, false, &root_info, + &DM_ROOT_NON_CONST); + if (ret) + return ret; + if (CONFIG_IS_ENABLED(OF_CONTROL)) + dev_set_ofnode(DM_ROOT_NON_CONST, ofnode_root()); + ret = device_probe(DM_ROOT_NON_CONST); + if (ret) + return ret; + } return 0; } @@ -350,10 +366,12 @@ int dm_init_and_scan(bool pre_reloc_only) debug("dm_init() failed: %d\n", ret); return ret; } - ret = dm_scan(pre_reloc_only); - if (ret) { - log_debug("dm_scan() failed: %d\n", ret); - return ret; + if (!CONFIG_IS_ENABLED(OF_PLATDATA_INST)) { + ret = dm_scan(pre_reloc_only); + if (ret) { + log_debug("dm_scan() failed: %d\n", ret); + return ret; + } } return 0;