From patchwork Sat Nov 24 04:29:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1002586 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=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="NZxAQAlq"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 4320lv4zSJz9s7W for ; Sat, 24 Nov 2018 15:37:47 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 62C92C2243B; Sat, 24 Nov 2018 04:32:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A3831C2248B; Sat, 24 Nov 2018 04:30:33 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 86473C2245F; Sat, 24 Nov 2018 04:30:11 +0000 (UTC) Received: from mail-vs1-f69.google.com (mail-vs1-f69.google.com [209.85.217.69]) by lists.denx.de (Postfix) with ESMTPS id 6CC7FC22475 for ; Sat, 24 Nov 2018 04:30:09 +0000 (UTC) Received: by mail-vs1-f69.google.com with SMTP id f203so5357730vsd.17 for ; Fri, 23 Nov 2018 20:30:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=7PMRlUGMtQCCY6lEIkeQD3inWzR8OaKk2T3fEh0Jd6U=; b=NZxAQAlqLg3gVVOXoqxwBELdZfp8D7+cuzPMvSrx0DbGhqnfmhyL44neUUnu5T+Ng2 L46FiJjKn/IbS6b/yOYGS2Slit8Wz3W1W+8+qaMqMJckVwVmLxgOu0JvsweNhfasa8E4 huURA2tAn5sGjsj1crYCelGyFZzNsfjm3j5Ug= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=7PMRlUGMtQCCY6lEIkeQD3inWzR8OaKk2T3fEh0Jd6U=; b=q4teRLlfc2J1kjlWVkVHj6TJ4yzG98bbl0bm/wEKs26HPyYfvqkYWmcdX9DgY453PN i765HKkfnINhckmkhipmYmY5Ur/ha6OanWghVzQf2U2u3Qf4CLIREbNeYNGX2wdw2ypt /vbq6oywgKaa1FqfC2O5ZKOsFMYjs1gmAEf61Ie7fQHymFyH9LT2xZDt0N1SmGq9lB1r iWIT5dahAwvFSJfRlOXRQsVE0OsE65l1NCaVUSZDtSXFF2PKFgxNJVXhs9yLSMem5c9e HFxhvd9XKlEGEE4Z5lBrCDPqTe2GxiHh7vPHDpKgwDFNx8z3rad/8J1OId/2ANXIbunz r/yw== X-Gm-Message-State: AGRZ1gI8gNZi7PlHyEPCp3TG6hHkzOFizKu+LmFJCYGGhbBp3KM/T0pJ Ek2LBLDii6GG5PDTWLySCQYd5TUH7ikBVKT6 X-Google-Smtp-Source: AJdET5fyBZDLhBxlus9D3IUI5vfHrqqCJgSXdEZRE8k/wvG/JU//K8uUG2rMJSRxxIj9ZtLRYv9LQatj6LaP4tAf X-Received: by 2002:a67:35ca:: with SMTP id x71mr13777194vsh.38.1543033808238; Fri, 23 Nov 2018 20:30:08 -0800 (PST) Date: Fri, 23 Nov 2018 21:29:28 -0700 In-Reply-To: <20181124042944.239106-1-sjg@chromium.org> Message-Id: <20181124042944.239106-6-sjg@chromium.org> Mime-Version: 1.0 References: <20181124042944.239106-1-sjg@chromium.org> X-Mailer: git-send-email 2.20.0.rc0.387.gc7a69e6b6c-goog From: Simon Glass To: U-Boot Mailing List Subject: [U-Boot] [PATCH 05/21] sandbox: sysreset: Update to support power-on reset X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" If U-Boot is started from SPL or TPL, then those earlier phases deal with the reset cause. On real hardware this cause may be lost once it is read. Emulate that behaviour in sandbox by reporting a warm reset when a previous phase has run since start-up. Signed-off-by: Simon Glass Signed-off-by: Simon Glass --- drivers/sysreset/sysreset_sandbox.c | 8 +++++++- test/dm/sysreset.c | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/sysreset/sysreset_sandbox.c b/drivers/sysreset/sysreset_sandbox.c index 7f6d4186e16..38e2a7e241d 100644 --- a/drivers/sysreset/sysreset_sandbox.c +++ b/drivers/sysreset/sysreset_sandbox.c @@ -84,7 +84,13 @@ int sandbox_sysreset_get_status(struct udevice *dev, char *buf, int size) int sandbox_sysreset_get_last(struct udevice *dev) { - return SYSRESET_COLD; + struct sandbox_state *state = state_get_current(); + + /* + * The first phase is a power reset, after that we assume we don't + * know. + */ + return state->jumped_fname ? SYSRESET_WARM : SYSRESET_POWER; } static struct sysreset_ops sandbox_sysreset_ops = { diff --git a/test/dm/sysreset.c b/test/dm/sysreset.c index e1b7bf5277d..5b2358ef674 100644 --- a/test/dm/sysreset.c +++ b/test/dm/sysreset.c @@ -102,10 +102,10 @@ static int dm_test_sysreset_get_last(struct unit_test_state *uts) /* Device 2 is the cold sysreset device */ ut_assertok(uclass_get_device(UCLASS_SYSRESET, 2, &dev)); - ut_asserteq(SYSRESET_COLD, sysreset_get_last(dev)); + ut_asserteq(SYSRESET_POWER, sysreset_get_last(dev)); /* This is device 0, the non-DT one */ - ut_asserteq(SYSRESET_COLD, sysreset_get_last_walk()); + ut_asserteq(SYSRESET_POWER, sysreset_get_last_walk()); return 0; }